PROGRAMUL DE STUDIU TEHNOLOGIA INFORMAȚIEI [310607]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT IF
PROIECT DE DIPLOMĂ
COORDONATOR ȘTIINȚIFIC
Conf. Dr. Ing. GIANINA GABOR
ABSOLVENT: [anonimizat]
2017
FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI
DEPARTAMENTUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
TEMA _____
Lucrare de finalizare a studiilor a student: [anonimizat]: [anonimizat]
1). Tema lucrării de finalizare a studiilor:
APLICAȚIE WEB DE GESTIONARE A PROIECTELOR ÎN CADRUL COMPANIILOR
2). Termenul pentru predarea lucrării: 5 iulie 2017
3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor: [anonimizat], framework-[anonimizat], jQuery și MySQL.
4). Conținutul lucrării de finalizare a studiilor: Introducere; [anonimizat], PHP, HTML5, CSS3, JavaScript, jQuery, Ajax, Bootstrap, MySQL, [anonimizat]; [anonimizat], XAMPP, PhpMyAdmin, Git, Bitbucket, Photoshop; [anonimizat], [anonimizat], Implementarea aplicatiei; Concluzii; Bibliografie.
5). Material grafic:
6). Locul de documentare pentru elaborarea lucrării: Internet, [anonimizat]
7). Data emiterii temei 1 octombrie 2016
Coordonator științific
Conf. dr. ing. Gianina GABOR
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEI
PROGRAMUL DE STUDIU CALCULATOARE
FORMA DE ÎNVĂȚĂMÂNT IF
APLICAȚIE WEB DE GESTIONARE A PROIECTELOR ÎN CADRUL COMPANIILOR
COORDONATOR ȘTIINȚIFIC
Conf. Dr. Ing. GIANINA GABOR
ABSOLVENT: [anonimizat]
2017
[anonimizat]-[anonimizat].
Un mod contemporan de a [anonimizat], desigur, în ajutorul celor care se ocupă cu implementarea și mentenanța aplicațiilor pentru a [anonimizat]. Acest lucru se datorează avantajelor pe care acest mod de stocare și prelucrare a informației îl are.
[anonimizat]. Idea de a implementa o astfel de aplicație, a venit în urma diverselor proiecte la care am participat și datorită avantajelor pe care le implică utilizarea ei. Consider că se adresează unei nișe importante de oameni din domeniul IT și nu numai și că ar fi șanse mari să devină populară.
[anonimizat], care este capabilă să gestioneze sarcini/task-uri în cadrul unei echipe de dezvoltatori. [anonimizat], stă la baza deciziilor pe care le luăm în fiecare zi. O gestionare corectă a sarcinilor rezultă în urma luării deciziilor corecte și totodată în eficientizarea lucrului și în îndeplinirea sarcinilor care ne sunt alocate.
Aplicația se poate utiliza pentru managementul proiectelor în cadrul firmelor mici sau al echipelor. Liderul echipei creează un cont pentru echipă și își adaugă colegii, prin urmare acest utilizatorul care a creeat contul pentru echipă este implicit considerat administratorul echipei și poate începe să adauge proiecte. Inițiatorul proiectului, sau managerul va vrea îi fie aduse la cunoștință evoluția lucrărilor. El trebuie să împartă sarcinile între oameni competenți pentru a le duce la o bună îndeplinire, fiecare fiind responsabil de modul în care își organizează timpul și modul de lucrul, astfel încât totul să fie gata într-un timp relativ scurt.
Grupul țintă este reprezentat de orice echipă de oameni care poate să-și împartă munca în proiecte, iar proiectele în task-uri. Fără un sistem de centralizare ale acestora, gestionarea proiectelor, respectiv a taskurilor, poate duce la pierderea de timp prețios și eveuntuale neînțelegeri între cei care lucrează împreună la un singur proiect.
CAPITOLUL I. LIMBAJE ȘI TEHNOLOGII UTILIZATE
PHP
PHP (Hypertex Preprocessor) limbajul a fost dezvoltat in prima faza de inventatorul său, Rasmus Lerdorf. Datorita creșterii numărului de utilizatori, dezvoltarea a fost preluată de către o nouă entitate denumită: The PHP Group (grupul PHP).[1]
Este unul dintre cele mai importante limbaje de programare web și server-side, existând versiuni disponibile pentru majoritatea web serverelor. Este un limbaj de uz general, gratuit, utilizat pe scară largă și care este foarte bun pentru dezvoltarea aplicațiilor web și poate fi intregrat în HTML.
Conform statisticilor, acest limbaj este instalat pe 20 de milioane de site-uri web și peste 1 milion de servere web, fiind disponibil sub licența PHP.
PHP este integrat cu o serie de baze de date populare, inclusiv MySQL, Oracle, PostgreSQL, Informix, Sybase și Microsoft SQL Server.
Acest limbaj a fost inceput ca o extensie a limbajului Perl in 1994, aceasta fiind o prima versiune. La scurt timp apare versiunea 2, iar dupa un timp, versiunea 3.0 care a facut limbajul sa ia amploare in 1998. In 2004 apare PHP 5.0 cu Zend Engine II care face din PHP un limbaj orientat pe obiecte care suporta majoritatea caracteristicilor acestui tip de programare.
PHP îndeplinește funcții de sistem, si se poate crea, deschide, citi, scrie și închide fișiere, de asemenea poate manipula formulare, poate aduna informații din fișiere și le poate salva într-un alt fișier, se pot trimite informații prin e-mail sau informațiile pot fi returnate către utilizator.
Folosind limbajul PHP, putem cripta date sau sa restricționam accesul utilizatorilor doar la anumite pagini de pe site.
Momentan PHP este la vresiunea 7.0, versiune pe care am ales să o utilizez în dezvoltarea aplicației.
Am ales această ultimă versiune deoarece reprezintă o evoluție de la versiunile anterioare și este utilizată de majoritatea dezvoltatorilor de aplicații mari. Ce am urmărit de fapt cu această versiune de PHP a fost să nu întâmpin probleme de compatibilitate între versiuni sau module și pot afirmă că am și uitat de astfel de probleme cu versiunea 7.0.
La realizarea acestei lucrări de licentă am folosit limbajul PHP pentru procesarea formularelor, criptarea parolelor, trimiterea de email-uri și salvarea sau preluarea datelor din bază de date.
Elementele PHP utilizate în aplicație nu sunt regăsite în mod evident, ele fiind înglobate în funcționalitățile predefinite ale framework-ului Laravel. Din experiență am aflat că în contextul utilizării acestui framework, faptul că nu este necesară scrierea codului în PHP pur înseamnă o cunoaștere destul de bună a funcționalităților oferite de acesta.
Chiar dacă am utilizat Laravel, clasele și funcțiile se scriu la fel ca și în PHP pur.
Figura I.1 Exemplu utilizare PHP din aplicație
JAVA SCRIPT
JavaScript este un limbaj de progamare orientat pe obiect, bazat pe conceptul prototipurilor. Este folosit mai ales pentru introducerea funcționalităților în paginile web, codul JavaScript din aceste pagini este rulat de către browser.
JavaScript a fost dezvoltat inițial de către Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript și denumit în final JavaScript.
Acest limbaj este cel mai des utilizat deoarece 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.
Arborele de obiecte poartă numele de Document Object Model sau DOM. Există un standard W3C pentru DOM-ul pe care trebuie să îl pună la dispoziție un browser, ceea ce oferă premiza scrierii de script-uri portabile, care să funcționeze pe toate browserele.[2]
Un script scris în acest limbaj este un program inclus într-o pagină HTML. Textul scriptului nu este afișat pe ecran, el fiind rulat și interpretat de browser. Browser-ul știe că este vorba despre un program scris în Java Script atunci când întâlnește tag-ul și acționează în consecință rulând și interpretând codul respectiv.
A fost necesar să utilizez acest limbaj deoarece am dorit că aplicația să arate și să funcționeze cel puțin la fel cu cele concurente.
Utilizarea JavaScript în combinație cu HTML duce la crearea unor pagini web cu un grad ridicat de interactivitate.[3]
Am urmărit cu acest limbaj să aduc aplicației un aspect mai interactiv. În principal am folosit JavaScript pentru adaptarea și inițializarea modulelor de rapoarte și pentru actualizarea dinamică a datelor în cadrul rapoartelor.
Utilizând Javascript putem induce utilizatorului sentimentul că datele sunt manipulate și încărcate în timp real, deși durata încărcării și manipulării datelor este dată de viteză internetului și de viteză raspunslui dat de baza de date dacă este cazul.
La realizarea lucrării de licență am folosit JavaScript alături de librăria jQuery pentru afișarea dinamică de date și pentru initializarea modulelor de rapoarte.
HTML 5
HTML este un limbaj de marcare utilizat pentru crearea paginilor web ce pot fi afișate într-un browser. Scopul HTML este de a prezenta informații: paragrafe, fonturi, tabele ș.a.m.d. decât de a descrier semantica documentului. HTML este prescurtarea de la Hyper Text Mark-up Language și este codul care stă la baza paginilor web.
Specificațiile HTML sunt dictate de World Wide Web Consortium (W3C).
HTML este o formă de marcare orientată către prezentarea documentelor text pe o singură pagină, utilizând un software de redare specializat numit agent utilizator HTML, cel mai bun exemplu de astfel de software fiind browserul web. HTML furnizează mijloace prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadata și indicații de redare. Indicațiile de redare pot varia de la decorațiuni minore ale textului, cum ar fi specificarea faptului că un anumit cuvânt trebuie subliniat sau că o imagine trebuie introdusă, până la scripturi sofisticate, hărți de imagini și formulare. Metadatele pot include informații despre titlul și autorul documentului, informații structurale despre cum este împărțit documentul în diferite segmente, paragrafe, liste, titluri etc. și informații cruciale care permit ca documentul să poată fi legat de alte documente pentru a forma astfel hiperlink-uri.
HTML este un format text proiectat pentru a putea fi citit și editat de oameni utilizând un editor de text simplu. Totuși scrierea și modificarea paginilor în acest fel este consumatoare de timp și solicită cunoștițe avansate de HTML.
Paginile HTML sunt formate din etichete sau tag-uri și au extensia .html sau .htm. Majoritatea acestor etichete sunt pereche, una de deschidere <eticheta> și alta de închidere </eticheta>, mai există și cazuri în care nu se închid, atunci se folosește <eticheta />. Browserul interpretează aceste etichete afișând rezultatul pe ecran. HTML-ul nu este un limbaj case sensitiv (nu face deosebirea între litere mici și mari). Pagina principală a unui domeniu este fișierul index.html, respectiv index.htm. Această pagină este setată pentru a fi afișată automat la vizitarea unui domeniu.
HTML5 este un limbaj pentru structurarea și prezentarea conținutului pentru World Wide Web, o tehnologie nucleu pentru internet propusă inițial pentru software-ul Opera.
Este a cincea revizuire a standardului HTML (creat în 1990 și standardizat ca HTML4 din 1997) și, din octombrie 2011, este în curs de dezvoltare. Obiectivele sale principale au fost acelea de a îmbunătăți limbajul cu un suport pentru cele mai recente apariții multimedia, în același timp menținându-l ușor de citit de către oameni și bine înțeles decătre computere și device-uri (browsere web, parsere, etc.). HTML5 își propune să însumeze nu numai HTML4, dar și XHTML1 și DOM2HTML (îndeosebi JavaScript).
HTML5 include modele detaliate de prelucrare pentru a încuraja mai multe implementări interoperabile; extinde, îmbunătățește și raționalizează disponibilitățile pentru documentele web și introduce marcarea și aplicații API (application programming interfaces) pentru aplicații web complexe. Din aceste motive HTML5 este un posibil candidat pentru aplicațiile de platforme mobile. Multe caracteristici ale HTML5 au fost create din considerarea că va trebui să devină capabil să ruleze pe dispozitive cum ar fi smart-phone-urile sau tabletele.
În special, HTML5 aduce multe noi caracteristici sintactice. Acestea cuprind elemente ca <video>, <audio>, <header>și <canvas> elemente HTML, precum și integrarea conținutului SVG care înlocuiește utilizarea tag-ului generic <object>. Aceste noutăți sunt proiectate pentru a facilita includerea și manipularea în web a conținuturilor multimedia și grafice fară a fi nevoie să se recurgă la proprietățile de plugin și API.
Alte noi elemente ca <section>, <article>, <header>și <nav> sunt proiectate să îmbunătățească conținutul semantic al documentelor. Noi atribute au fost introduse cu același scop, în același timp unele elemente și atribute au fost îndepărtate. Unele elemente ca <a>,<cite> și<menu> au fost schimbate, redefinite și standardizate. API-urile și DOM-urile (Document Object Model) sunt certitudini și sunt părți fundamentale în specificațiile HTML5.
HTML5, de asemenea, definește în câteva detalii prelucrările necesare pentru documentele invalide, astfel încât sintaxa erorilor va fi tratată uniform de toate browserele cunoscute.
La realizarea lucrării de licență am folosit HTML5, fiind prezente noile elemente <section>, <nav>.
Am ales utilizarea tag-ului <nav> pentru meniul din header deoarece în documentația HTML5 scrie că este modul correct de a încadra link-urile principale de navigație în aplicație.
Tag-ul section l-am folosit pentru meniul din partea stângă deoarece este un bloc principal, prezent pe toate paginile aplicatiei.
CSS 3
Cascading Style Sheets, sau CSS pe scurt, este un standard simplu, ce oferă designerilor/programatorilor un mod eficient de a controla modul de prezentare a paginilor WEB. CSS este, în mod primar, un limbaj folosit exclusiv doar pentru "web design", însă nu putem exclude faptul că acest limbaj este folosit și în alte medii de programare.
În comparație cu anii 90, când controlul prezentării unei pagini se făcea prin tag-uri HTML, divizate între ele în mai multe fișiere, ce confereau o muncă enormă în cazul unei actualizări, CSS vine cu un nou standard, și anume ca printr-un singur fișier să fie controlat întreg aspectul proiectului WEB. [4]
Înaintea erei CSS, programatorii erau nevoiți să controleze aspectul proiectului lor WEB prin tag-uri de font, pentru a stabili culoarea, mărimea și familia de font-uri a diferitelor părți ale paginii web.
Cea mai recenta versiune de CSS este CSS 3. Aceasta versiune inglobeaza toate functionalitatile versiunilor anterioare si vine cu numeroase imbunatatiri. Unele imbunatatiri pe care le-am utilizat sub o forma sau alta sunt tranzitțile.
CSS 3 a fost impartit pe “module” fiind introduse vechile module din CSS și multe module noi. Câteva din modulele CSS 3 sunt [5]:
selectori
box Model
transformări 2D/3D
efecte pe text
animații
Acești noi selectori m-au ajutat la stilizarea meniului din partea stânga și anume la crearea unei tranziții atunci când se trece de pe o dimensiune de ecran pe alta.
Exemplu din aplicație:
.left-side {
position: absolute;
top: 0;
left: 0;
padding-top: 50px;
min-height: 100%;
width: 230px;
z-index: 810;
-webkit-transition: -webkit-transform 0.3s ease-in-out, width 0.3s ease-in- out;
-moz-transition: -moz-transform 0.3s ease-in-out, width 0.3s ease-in-out;
-o-transition: -o-transform 0.3s ease-in-out, width 0.3s ease-in-out;
transition: transform 0.3s ease-in-out, width 0.3s ease-in-out;
}
În aplicație am folosit css pentru stilizarea paginilor. Codul este scris în fișiere separate pe care le-am inclus în layout-ul HTML principal.
Figura I.2 Exemplu utilizare CSS din aplicație
JQUERY
jQuery este o platformă de dezvoltare JavaScript, concepută pentru a îmbunătăți și a ușura procese precum traversarea arboreului DOM (Document Object Model) în HTML, managementul inter-browser al evenimentelor, animații și cereri de tip AJAX. Biblioteca jQuery a fost lansată în anul 2006 de către John Resig.
jQuery se poate folosi pentru a rezolva următoarele probleme specifice programării web:
selecții de elmente în arboreal DOM folosind propriul motor de selecții.
parcurgerea și modificarea arborelui DOM incluzând suport pentru selectorii CSS simpli.
înregistrarea și modificarea evenimenteleor din browser.
manipularea elementelor CSS.
efecte și animații.
extensii (plugin-uri)
cereri de tip AJAX.
utilități – versiunea browser-ului, funcția each.[6]
La realizarea aplicației am folosit jQuery pentru animații de afișare ale elementelor, rearanjarea acestora pe dimensiuni de ecrane diferite initializare de module sau popularea elementelor din pagină cu conținut dinamic.
jQuery a fost de mare folos pentru construirea unui modal care este populat dinamic cu date în funcție de parametrii transmiși. Acestui modal i se pot schimbat atât stilurile cât și conținutul.
Figura I.3 Exemplu utilizare jQuery din aplicație
Bootstrap
Bootstrap este un framework dezvoltat la inceput de Twitter, care a ajuns acum la versiunea 3, si ajuta la realizarea de pagini web responsive, care se adaptează la orice rezoluție de dispozitiv: desktop, tablete și telefoane mobile.
Este în prezent cel mai utilizat framework pentru dezvoltarea interfețelor web si a devent foarte rapid standardul în dezvoltarea template-urilor pentru principalele sisteme CMS cum ar fi WordPress și Joomla.
Bootstrap contine un sistem de grid pe 12 coloane care ii ajuta foarte mult pe programatorii in dezvoltarea structurilor de pagini. Aceste 12 coloane ofera foarte multe variante de structurare a paginii ajutand foarte mult la tranzitiile dintre ecranele de diferite dimensiuni.
Figura I.4 Exemplu utilizare grid Bootstrap[7]
Utilizarea acestui framework mi-a permis realizarea de pagini responsive foarte rapid datorita sistemului de clase preimplementate care se adapteaza la orice dimensiune de ecran
Figura I.5 Exemplu utilizare Bootstrap din aplicație
Font Awesome
Font Awesome este o bibliotecă pentru fonturi bazata pe CSS și LESS. A fost realizata de către Dave Gandy pentrua fi utilzata cu Twitter Bootstrap, și mai târziu încorporat în BootztrapCDN. Font Awesome are o cotă de utilzare pe piață de 20% pe acele webiste-uri care incoporează Font Scripts pe platforma lor, situându-se pe al doilea loc ca utilizare, după Google Fonts.
Figura I.6 Cîteva din icon-urile oferite de Font Awesome[8]
Am ales să utilizez această librărie deoarece este foarte ușor de integrat într-o aplicație web și este într-o continuă dezvoltare. Frecvent se adaugă icon-uri noi, în funcție de trend.
La realizarea aplicației am folosit Font Awesome pentru icons deoarece am dorit o interfață a utilizatorului mult mai prietenoasă și a face cât mai evident tipul de date care trebuiesc introduse în inputuri.
Figura I.7 Exemplu utilizare Font Awesome din aplicație
Adăugarea unui icon se face prin adăugarea unei clase specifice, de exemplu, în aplicație pentru icon-ul de la input-ul de parolă a fost necesară adăugarea clasei „fă-lock”.
Figura I.8 Exemplu adaugare icon din aplicație
AdminLTE
AdminLte este una dintre cele mai populare interfețe de administrare pentru aplicații web. Pe lângă faptul că este foarte bine scrisă și se bazează pe Bootstrap, AdminLte este open source și gratuită.
Această interfață este construită pe module fiind foarte maleabilă ceea ce este foarte avantajos pentru personalizarea ei în funcție de designul dorit.
Pentru a funcționa corect AdminLTE necesită::
Bootstrap3
jQuery 1.11+
Structura de fișiere predefinită AdminLTE este simplă și ușor de urmărit.
Figura I.9 Structura de fișiere predefinită AdminLTE[9]
La instalare această interfață vine cu o serie de module care pot fi instalate și adaptate la necesitățile aplicației în care se folosesc.
În aplicația pe care am dezvoltat-o am folosit AdminLTE pentru interfață deoarece este gratuită, are un aspect foarte modern, este ușor de utilizat și am putut să o adaptez foarte rapid la designul meu. De asemenea AdminLTE vine cu un pachet de module care se pot adapta foarte ușor la designul dorit, de exemplu modulul Select 2 care permite selectarea mai multor elemente dintr-un select. Am folosit acest modul la asignarea unui proiect mai multor utilizatori în cadrul creării unui proiect.
Figura I.10 Exemplu utilizare modul Select2 din cadrul AdminLTE în aplicație
Laravel
Introducere
Laravel este un framework PHP gratuit, open-source, dezvoltat de Taylor Otwell în luna Iunie a anului 2011 cu scopul de a fi folosit în dezvoltarea de aplicații web care respectă arhitectura de tip model-view-controller (MVC). Din luna Martie a anului 2015, Laravel este considerat unul dintre cele mai populare framework-uri de PHP existente, împreună cu Symfony2, Nette, CodeIgniter și altele. [10] Codul sursă al Laravel este găzduit pe GitHub și este licențiat sub MIT (Massachusetts Institute of Technology). [10]
Laravel își propune să anuleze multe din problemele pe care developerii le intalnesc în procesul de dezvoltare prin ușurarea sarcinilor comune de care aceștia se lovesc în majoritatea proiectelor web. Printre aceste sarcini se numără: autentificarea, rutarea, sesiuni, queueing, caching. Acest lucru duce la rezolvarea unui aspect important în dezvoltarea de software, și anume livrarea rapida a unui produsului bine realizat.
Laravel este accesibil și foarte puternic fiind un instrument de care ai nevoie în dezoltarea aplicațiilor robuste. O inversiune a controlului container-ului, sistem de migrari expresiv, și suport pentru teste unitare integrate sunt doar câteva din uneltele de care este nevoie in procesul de construirea oricărei aplicații și pe care Laravel le ofera gratuit.
Laravel are o sintaxă expresivă și elegantă. Acesta își propune să facă procesul de dezvoltare a aplicațiilor, unul care să aducă plăcere și nu bătăi de cap, fără a sacrifica funcționalitatea aplicației. Astfel, scopul Laravel este de a-i face pe dezvoltatorii web care îl folosesc să fie „fericiți”, deoarece, spun ei „Develop-erii fericiți scriu cel mai bun cod”. [12]
Model – View – Controller
Model-view-controller (MVC) este un model arhitectural care se utilizează în ingineria software. Acest model arhitectural a dobândit success datorită izolării interfeței cu utilizatorul de logica de business. [2]
Figura I.11 Modelul MVC[12]
În figura de mai sus avem exemplificat modul în care acest model arhitectural funcționează:
View-ul trimite date la controller cu cerințele utilizatorului si este reprezentarea vizuală/grafică a informațiilor, interfața grafică care interacționează cu utilizatorul final
Controller-ul, după cum îi spune și numele, are rolul de a controla accesul și datele aplicației. Acestea pot să fie fișiere, script-uri sau programe, orice tip de informație pe care o permite interfața. Controller-ul acceptă informații pe care le convertește în comenzi pe care le trimite la model (pentru modificarea stării modelului) sau la view (pentru modificarea modului în care partea vizuală arată).
Model-ul face modificările și modifică partea vizuală, adică view-ul. Acesta stochează datele primite în funcție de comenzile de la controller
Modul de utilizare
Pentru utilizarea Laravel este nevoie de utilizarea unui software numit composer. Această unealtă este folosită pentru administrarea dependențelor în PHP. Dupa ce a fost instalat composer, cu o simpla comanda – composer create-project –prefer-dist laravel/laravel project [13] – se instaleaza un laravel „curat” pregatit pentru lucru.
Laravel dispune de o documentație bine structurata, ușor de parcurs și de înțeles. Toate funcționalitățile sale sunt gasite si documentate pe site-ul oficial al framework-ului, astfel că nu e nevoie să se apeleze la alte surse care pot să fie incorecte sau incoerente.
Fiecare pagină a site-ului va avea o rută căreia i se va atribui o funcție/metodă dintr-un controller. În funcția atribuită rutei se va adăuga toata logica pentru pagina respectiva care va indeplini functionalitatile dorite. Dupa acestea, se va apela un view care afișaza pagina propriu zisă, folosindu-se de datele pregatite si trimise din controller (dacă există).
Avantaje
Cateva avantaje ale framework-ului sunt:
reducerea timpul de dezvoltare a aplicației, datorită unor funcționalități predefinite
conectarea cu baza de date se face cu ușurință, iar setările necesare pot fi modificate foarte usor
se pot include multe alte librării
rezolvarea rapida a erorilor datorita faptului ca existenta o comunitate mare de programatori care folosesc acest framework si sunt dornici sa raspunda la intrebari
dispune de un motor șablon (din engleză, „template engine”) numit „blade” care ajută developerul la crearea paginilor si la reducerea duplicarii de cod
structura fișierelor este una logică și usor de inteles
este într-o continuă dezvoltare și aduce functionalitati noi si utile pentru developer
Dezavantaje
Câteva dintre dezavantajele utilizării acestui framework sunt:
structura de fișiere poate fi modificată ceea ce reprezintă un dezavantaj în contextul în care developerii vin de pe alte aplicații care folosesc structura predefinită;
satorită faptului că este în continuă dezvoltare, unele versiuni vin cu modificări în sintaxă, lucru care poate fi uneori dificil de adaptat:
ocupă mult spațiu pe disc.
CAPITOLUL II. TIPURI DE SOFTWARE UTILIZATE
II.1 NetBeans
NetBeans este tot un editor de text creat pentru dezvoltare de programe software. Acesta este gratuit și este utilizat de milioane de developer din intreaga lume. NetBeans este un IDE ușor de utilizat care vine în ajutorul developerului cu multe unelte si module. NetBeans a fost scris în Java și este destinat în mod special programatorilor Java. Pe parcursul dezvoltării acestuia, NetBeans a introdus și suport HTML, CSS, Javascript și altele.
Figura II.1 Exemplu utilizare NetBeans pentru aplicație
Ca și multe editoare, Netbeans împarte suprafața de lucru în două părți:
partea din stângă – în care apare structura proiectului
partea din dreapta – conține în partea de sus lista cu fișierele recent deschise și în restul ecranului este editorul propriu zis
Am ales NetBeans deoarece este un IDE gratuit și conține module de verificare a codului din punct de vedere al standardului PSR 2.
PSR 2 este un standard PHP și se referă la modul de așezare al codului, de exemplu sintaxa corectă pentru un if – else în PSR 2 este:
if[spatiu](conditie)[spatiu]{
}[spatiu]else[spatiu]{
}
Asfel de aranjări ale codului PHP pot fi ușor omise, dar NetBeans vine în ajutor cu un modul care poate fi rulat pe fiecare fișier și returnează erori la liniile care au greșeli.
II.2. XAMPP
XAMPP este un pachet de programe free software, open source și cross-platform web server, care constă în Apache HTTP Server, MySQL database și interpretoare pentru scripturile scrise în limbajele de programare PHP și Perl. [14]
Numele de XAMP este un acronim pentru:
X = vine de la „cross” (din engleză) și înseamnă „cross-platform”
A = Apache HTTP Server
M = MySQL
P = PHP
P = Perl
Figura II..2 Interfata XAMPP cu serverul Apache si baza de date pornite
II.3. PhpMyAdmin
PhpMyAdmin este o unealtă gratuită, scrisă în PHP, creată pentru administrarea bazelor de date MySQL sau MariaDB cu ajutorul browser-ului. Este cea mai populara unealta pentru administrarea bazelor de date MySql utilizata de milioane de developer din intreaga lume si a castigat numeroase premii.
Cu ajutorul phpMyAdmin, utilizatorul poate realiza diverse task-uri precum crearea, modificarea sau ștergerea bazelor de date, tabelelor, înregistrărilor sau rândurilor, executarea de interogări SQL sau administrarea utilizatorilor și permisiunilor acestora. phpMyAdmin oferă utilizatorului ajutor și grăbește procesul de lucru datorită facilităților sale. O caracteristică importantă a acestuia este posibilitatea de a importa sau exporta baze de date, tabele sau interogări.
Figura II.3 Exemplu utilizare PhpMyAdmin pentru baza de date a aplicației
II.4 GIT
Git este un sistem de revision control care rulează pe majoritatea platformelor, inclusiv Linux, POSIX, Windows. Git este un sistem distribuit și nu întreține o bază de date comună. Este folosit în echipe de dezvoltare, în care membrii echipei acționează oarecum independent și sunt răspândiți pe o arie geografică mare.
Git este dezvoltat de Junio Hamano, fiind publicat sub licență GPL și este considerat software liber. Cateva proiecte majore care folosesc Git: Linux, Android, Debian, DragonFly BSD, Eclipse, Fedora, GIMP, Linux Kernel, Linux Mint, openSUSE, Perl, phpBB, Qt, Ruby on Rails, Samba.
Dezvoltarea Git a început după ce mai mulți developeri ai nucleului Linux au renunțat la sistemul de revision control proprietar BitKeeper. Posibilitatea de a utiliza BitKeeper gratuit a fost retrasă după ce titularul drepturilor de autor a afirmat că Andrew Tridgell a încălcat licența BitKeeper prin acțiunile sale de inginerie inversă. La conferința Linux.Conf.Au 2005, Tridgell a demonstrat în timpul discursului său că procesul de inginerie inversă pe care l-a folosit a fost pur și simplu o sesiune telnet pe portul corespunzător al serverului BitKeeper și rularea comenzii help pe server.
Controversa a dus la o renunțare rapidă la sistemul BitKeeper care a fost înlocuit cu un nou sistem intitulat Git construit special pentru scopul de revision control în cadrul proiectului Linux kernel. Dezvoltarea noului sistem a fost începută de Linus Torvalds în 3 aprilie 2005 pentru a fi anunțat câteva zile mai târziu (aprilie 6) pe lista de email a proiectului Linux kernel. O zi mai târziu, noul sistem a început să fie folosit pentru dezvoltarea actuală de cod pentru proiectul Git.
Primele operații merge au avut loc pe data de 18 aprilie. În data de 16 iunie, versiunea 2.6.12 Linux kernel a fost pusă în Git care continuă și în ziua de azi să fie sistemul revision control folosit de proiectul Linux kernel.
Figura II.4 Exemplu utilizare Git în aplicație
La realizarea proiectului de licență am ales sa folosesc Git pentru siguranța de a nu pierde proiectul și pentru a avea acces la versiunile anterioare de dezvoltare a aplicației.
Pentru a putea utiliza GIT a fost necesară descărcarea și instalarea programului. După instalare a apărut opțiunea de GIT Bash atunci când se face click-dreapta într-un folder.
Comenzile de GIT utilizate cel mai frecvent pe parcursul dezvoltării acestei aplicații au fost: Git status, Git add . , Git commit –m “mesaj de commit”, Git pull origin development, Git push origin development, Git checkout master, Git merge development.
II.5. Bitbucket
Bitbucket reprezintă un host web pentru proiectele care utilizează Mercurial sau Git. Bitbucket oferă posibilitatea de a înregistra conturi plătite sau gratuite. Oferă conturi gratuite cu un numar nelimitat de depozitări private (care pot avea un numar maxim de 5 utilizatori).
Bitbucket este scris în limbajul Python utilizând Django web framework. Este similar cu GitHub.
La realizarea proiectului de licență am creat un cont pe site-ul BitBucket unde am primit un spațiu de depozitare a proiectului putând reveni oricând la una dintre versiunile anterioare în cazul unei erori și posibilitatea de accesare de pe alte calculatoare la proiectului.
Figura II.5 Exemplu de utilizare BitBucket pentru aplicație
II.6 Photoshop
Adobe Photoshop este un program destinat exclusiv editării foto și graficii web. A apărut în anul 1988 și de atunci până în prezent a cunoscut o evoluție excepțională la nivel mondial.
La ora actuală zeci de mii de oameni utilizează zilnic Photoshop la locul de muncă. A devenit un verb, a photoshopa.
Acest program are o extensie proprie .PSD care înseamnă “Photoshop Document”. Când se salvează un document în format PSD se salvează și majoritatea opțiunilor disponibile în Photoshop, cum ar fi layere, transparente s.a. . Înălțimea și lățimea maximă a unui document în format PSD este de 30 000 de pixeli.
De asemenea mai există și extensia .PSB care înseamnă “Photoshop Big” și este utilizată atunci când se depășesc limitele impuse de .PSD.
Am ales să utilizez acest program pentru crearea designu-lui deoarece este un program care l-am folosit mult în trecut și sunt familiar cu mediul oferit de acesta. Mi se pare necesar să creezi inițial design-ul aplicației într-un astfel de program datorită faptului că poți aplică niște concepte de design și ai posibilitatea să schimbi sau să revii la versiuni anterioare foarte ușor.
Figura II.6 Exemplu creare design pentru aplicatie
În imaginea de mai sus este deschis design-ul paginii de login. Se pot observă liniile de gidaj folosite pentru împărțirea spațiului de lucru și pentru aranjarea elementelor. Consider că a fost un avantaj mult mai mare ca inițial să am un design și doar pe urmă să încep implementarea acestuia.
CAPITOLUL III. PROIECTAREA SI IMPLEMENTAREA APLICAȚIEI
III.1 Proiectarea aplicației
Ideea acestui proiect mi-a venit într-o perioada în care căutăm o aplicație pentru a-mi putea organiza cât mai efficient proiectele. Am reușit să găsesc numeroase aplicații dar nici una care să corespundă tuturor cerințelor mele.
Am decis să dezvolt propria aplicație și consider că este de mare ajutor persoanelor care își împart muncă în proiecte și task-uri.
Când am început proiectarea aplicației cunoșteam deja majoritatea aplicațiilor similare, știam care sunt avantajele și dezavantajele acestora. Am început să schițez pe hârtie și să mă gândesc la modalități de lucru care ar fi cât mai simple și evidente pentru un administrator de proiecte. Am încercat să-mi imaginez cât mai multe cazuri încercând să găsesc avantaje și dezavantaje pentru fiecare. După ce am găsit varianta optimă, am făcut diferite scheme pe harite care să reprezinte modul de așezare al informațiilor în pagină web (de la autentificare până la proiecte finale)
Figura III.1 Exemplu schiță de pagina
În urmă realizării numeroaselor scheme pe hârtie am început să le selectez pe cele mai bune și să le transform în design de pagini, de această dată utilizând programul Adobe Photoshop. De asemenea în timpul dezvoltării schematice al aplicației, în paralel, am creat(schematic) și o structura pentru baza de date.
III.2. Structura aplicației
Structura de baza este cea predefinită de framework-ul Laravel. Este vorba de o structura arborescentă în care fiecare director și fișier au nume suggestive. Pe această structura am continuat să adaug alte fisierse sau directoare după necessitate.
Figura III.2 Structura de fișiere a proiectului
În figura de mai sus se observă structura proiectului, toate fișierele și directoarele fiind regăsite într-un director rădăcina. Principalele directoare din această figura sunt:
Directorul app – aici se găsesc fișiere de baza din cadrul aplicației:
Modele
Controllere
Directorul config înglobează fișierele de configurare::
App.php – aici se fac setările necesare în fiecare stadiul al proiectului (development/production), se setează url-ul principal, s.a.
Auth.php – aici se fac setări referitoare la autentificare
Database.php – aici se fac setările necesare lucrului cu baza de date
Mail.php – aici se fac setările legate de email-uri
Directorul database – conține fișierele necesare pentru crearea și popularea dinamică a bazei de date
Directorul public – este fișierul rădăcina care conține atât index-ul aplicației cât și librăriile folosite și fișierele css, js și imaginile utilizate în aplicație.
Directorul resources – înglobează toate view-urile aplicației în fișiere denumite sugestiv.
Configurările generale ale aplicației se fac în fișierul .env. Începând cu versiunea a 5-a de Laravel fișierul .env a fost introdus în directorul rădăcina și înglobează configurările pincipale ale aplicației.
Figura III.3 Fișierul .env
În figura III.3 avem o captura a fișierului .env unde se poate observă setările făcute pentru conectarea la baza de date, setările pentru mail sau alte setări generale.
III.3. Structura Bazei de Date
Baza de date folosită în această aplicație este de tip MySQL și este împărțită în tabele. Fiecare tabel are o cheie primară, iar unele tabele conțin și una sau mai multe chei secundare. În baza de date sunt stocate toate datele utilizate în aplicație, ele fiind afișate prin interogări ale acesteia.
Figura III.4 Structura bazei de date
Baza de date conține următoarele tabele:
Users – în această tabela sunt stocate informațiile legate de utilizator. Ea contine urmatoarele campuri:
Id – int
Name – varchar(200)
Email – varchar(200)
Parole – varchar(200)
Role – varchar(200)
Company_id – int
Birthdate – date
Image – varchar(200)
Is_admin – int
Companies – în această tabela sun stocate informațiile referitoare la companii:
Id – int
Name – varchar(200)
Logo – varchar(200)
Address – varchar(200)
Projects – în această tabela sunt salvate informațiile necesare pentru un proiect:
Id – int
Name – varchar(200)
Description – text
Client – varchar(200)
Status – int
Estimated_hours – int
Worked_hours – int
Buget – int
Deadline – date
Users_projects – această tabela este utilizată pentru rezolvarea problemei de many to many între useri și proiecte. Ea conține urmatoarele campuri:
Id – int
Project_id – int
User_id – int
Tasks – conține informațiile necesare pentru un task. Un task aparține neapărat unui proiect. Aceasta tabela contine urmatoarele campuri:
Id – int
Name – varchar(200)
Description – text
Project_id – int
User_id – int
Status – int
Estimated_hours – int
Worked_hours – int
Deadline – date
Migrations – această tabela este predefinită de Laravel și este folosită pentru stocarea migrărilor care au fost rulate
Passwords_resets – această tabela este predefinită de Laravel și este folosită pentru resetarea parolelor utilizatorilor
III.4. Implementarea aplicației
Prima dată când intră în aplicație utilizatorul este redirectat către pagină de login unde poate să-și introducă email-ul și parolă și să între în aplicație sau dacă nu are cont, poate să meargă pe pagină de înregistrare.
Redirectarea pentru utilizatorul neautentificat se face foarte simplu cu ajutorul framework-ului Laravel, tot ce trebuie facut este ca toate rutele care nu ar trebui accesate decat de utilizatori autentificati sa fie puse intr-un grup cu middleware-ul “auth”. Acest middleware este preimplementat in Laravel.
Exemplu de cod:
Route::group(['middleware' => 'auth'], function () {
//restul rutelor din aplicatie
});
Figura III.5 Pagina de login
Pagină de login (figura III.5) are un design simplu cu o imagine de fundal și o mică fereastră cu informații. Aici utilizatorul este întâmpinat de logo-ul aplicației și i se cere să introducă email-ul și parolă pentru a continuă.
Dacă utilizatorul nu are cont și dorește să își facă el are posibilitatea să meargă pe pagină de înregistrare.
Figura III.6 Pagina de înregistrare
Pe pagină de înregistrare (figura III.6) utilizatorul poate crea un cont pentru companie. După ce introduce corect toate informațiile care se cer și apasă butonul “Register”, utilizatorul obține un cont că și administrator la compania proaspăt creată.
Codul pentru funcția de înregistrare:
protected function create(array $data)
{
$company = new Company();
$company->name = $data['company_name'];
$company->address = $data['company_address'];
$company->save();
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'birth_date' => $data['birth_date'],
'role' => $data['role'],
'company_id' => $company->id,
'is_admin' => 1,
'password' => bcrypt($data['password']),
]); }
În funcția prezentată anterior putem observa că la un apel al acesteia, prima dată se crează un obiect de tip companie și se salveaza în baza de date, iar după aceea se crează un obiect de tip user care foloseste id-ul companiei create și îl salveaza în campul “company_id”. În acest mod am lăsat posibilitatea ca o companiei să aibă mai mulți utilizatori. După finalizarea cu succes a acestui apel, utilizatorul este autentificat în aplicație.
Dacă intră în aplicație cu un cont de tip administrator de companie, acesta o să fie întâmpinat de pagini diferite decât utilizatorul care nu administrează compania. El are pe pagina principală informații generale legate de proiecte și de sarcinile îndeplinite de fiecare membru al companiei. Tot în acest pas, după ce utilizatorul a intrat în aplicație poate să vadă structura generală a ei cu o bară de meniu pentru administrarea contului personal în partea de sus, o bară de meniu în partea stânga, pentru administrarea companiei și a proiectelor și restul paginii fiind dedicate pentru conținut.
Figura III.7 Bara de meniu pentru utilizatorul logat
Figura III.8 Meniul din partea stangă
În figura III.8 avem meniul din partea stânga a aplicației, el fiind present pe toate paginile dacă utilizatorul este autentificat. Acest meniu poate să difere în funcție de tipul utilizatorului, dacă acesta este administrator de companie, el are în plus încă un element “Dashboard” care reprezintă legătură cu pagină principala. Mai jos, în meniu, avem elementele comune utilizatorilor și anume”Projects” și “Reports”.
Projects – este o lista care conține un submeniu din care utilizatorul poate merge rapid la adăugare de proiect, vizualizarea tuturor proiectelor sau vizualizarea proiectelor active. Fiecare proiect nefinalizat, pe care utilizatorul este asignat, reprezintă un element din submeniu. Cu cât utilizatorul este asignat pe mai multe proiecte active cu atât lista din submeniu va fi mai mare, deci idealul este că utlizatorul să nu aibă foarte multe proiecte active în același timp
Reports – este o legatură spre pagina de rapoarte
Pentru afișarea informatiilor în meniul din partea stângă, diferența între utilizatori se face exact în momentul afișării. Acolo se face o verificare:
@if (Auth::user()->is_admin == 1)
<li class="header">COMPANY NAVIGATION</li>
<li class="color">
<a href="{{action('HomeController@index')}}">
<i class="fa fa-dashboard"></i>
<span>Dashboard</span>
</a>
</li>
@endif
Câmpul “is_admin” al unui user este 1 în cazul în care este administrator și 0 în caz contrar.
Figura III.9 Panoul de administrare al companiei
Figura III.9 este o captură a paginii de administrare a companiei, aici administratorul poate să vadă din primul moment în care intra în aplicație:
numărul de proiecte active
numărul de task-uri în curs de desfășurare
numărul de ore estimate pentru finalizarea proiectelor
o estimare a veniturilor
o tabelă cu toți membrii companiei și informații despre volumul de lucru al acestora.
Tot din această pagină administratorul poate adaugă noi membrii în companie dacă apasă butonul de “Add User”.
Dacă administratorul dorește să mai adauge un membru în companie acesta trebuie să completeze un formular cu:
Nume
Data nașterii
Rol
Dacă informațiile de mai sus au fost completate se creează un cont, iar pe emailul introdus se trimite un mail cu informațiile de autentificare pentru noul utilizator, email și parolă (generată aleator).
Exemplu cod pentru creare utilizator la companie si trimitere de email:
public function store(Request $request)
{
$password = self::generatePasword(6);
if (Auth::user()->is_admin == 1) {
$user = new User($request->all());
$user->company_id = Auth::user()->company_id;
$user->password = bcrypt($password);
$user->is_admin = 0;
$user->save();
Mail::to($user)->send(new NewUser($user, $password));
}
return redirect()->action('HomeController@index');
}
Modulul de proiecte conține metode de creare, editare, vizualizare și ștergere.
Figura III.10 Formular de adăugare proiect
Pentru adăugarea unui nou proiect trebuie completat un formular cu următoarele informații:
Nume
Descriere
Dată livrare proiect
Client
Număr de ore estimate
Buget
Utilizatorul sau utilizatorii care o să primească task-uri pe acest proiect
Figura III.11 Pagina unde sunt afișate toate proiectele
În figura III.11 este capturată pagină care oferă membrilor unei companii o imagine de ansamblu asupra proiectelor din cadrul acesteia. Aici sunt afișate, sub formă de tabel, toate proiectele companiei, fiecare proiect având legătură cu pagină de afișare individuală a acestuia. Tot în acest tabel se pot observă statusurile proiectelor și se oferă și posibilitatea de editare sau ștergere.
În această pagină se face legătură și cu formularul de adăugare a unui nou proiect. După ce a fost creat un proiect, administratorul trebuie să adauge și să asigneze task-uri în cadrul proiectului respectiv. Pentru adăugarea unui task se completează un formular asemănător cu cel de creare al proiectului, doar că task-ul se poate asigna unu singur membru din cadrul proiectului.
Figura III.12 Pagina unui proiect
În figura de mai sus (III.12) avem o captura de pe pagină de afișare a proiectului. Această conține, în partea de sus, numele proiectului și butoane pentru editare, ștergere și adăugare de task. În partea central a paginii avem o zona în care sunt afișate task-urile proiectului sau informațiile generale ale acestuia, în funcție de tab-ul pe care îl selectăm. Inițial este selectat tab-ul care afișază task-urile.
În funcție de status, fiecare task are o anumită culoare și anume:
Alb – dacă task-ul nu este început
Galben – dacă acesta este în desfășurare
Verde – dacă este finalizat
Roșu – dacă a apărut o problemă și nu se poate continua
Pe laga status-uri, un task are și numărul de ore lucrate la care utilizatorul care este responsabil poate să mai adauge ore, responsabil, în funcție de cât a lucrat. De asemenea task-urile mai pot fi editate sau șterse.
La metodele de ștergere au fost adăugate măsuri de siguranță că utilizatorul să nu șteargă din gresala un proiect, un task sau un alt utilizator. Când se apasă pe butonul de ștergere apare o fereastră de tip pop-up care îi cere utilizatorului să confirme acțiunea de ștergere.
Figura III.13 Pagina unui proiect
Figura III.13 este o captură a ferestrei de tip pop-up care apare când un administrator încearcă să șteargă un utilizator și pentru a finalize ștergerea este nevoie de o acțiune suplimentară, dându-i timp să reacționeze în cazul în care a ajuns neintenționat în acel punct.
Acest pop-up este pregătit să suporte design și informații diferite, acestea fiind controlate printr-un script care preia informațiile de la butonul care îl declansaza. Pentru acest pop-up de ștergere butonul care îl declansaza conține informațiile din codul de mai jos:
@if (Auth::user()->is_admin == 1
<a href="javascript:void()"
data-href="{{action('ProjectController@destroy', $project->id)}}"
class="btn btn-xs btn-danger fa fa-trash"
data-message="Are you sure you want to delete this project?"
data-toggle="modal"
data-btn-class="btn-danger"
data-btn-text="Delete"
data-title="Confirm Delete"
data-target="#modal"
></a>
@endif
Această fereastră a fost concepută pentru a putea fi utilizată și în alte scopuri, iar pentru asta toate informațiile din ea pot fi schimbate în butonul care o declanșază.
CONCLUZII
Timpul este un element important în orice domeniu, el fiind esențial și în domeniul web așa că la ora actuală sunt prezente pe piață tot felul de aplicații sau produse software pentru managementul proiectelor, al timpului, pentru gestionarea sarcinilor dezvoltatorilor fiecare având propriile avantaje și dezavantaje.
La realizarea acestei aplicații am încercat să implementez cele mai importante și necesare aspecte ce țin de gestionarea task-urilor într-o echipă de dezvoltatori de produse software. Utilizarea aplicației duce la o eficiență sporită în utilizarea timpului, iar aceasta se va materializa printr-o creștere a productivității oamenilor
Printre avantajele pe care le oferă prezenta lucrare se numără reducerea timpului de management al echipei, reducerea timpului de management al proiectelor, faptul că aplicația poate fi accesată de oriunde de pe orice dispozitiv, managementul ușor al proiectelor datorită simplității design-ului aplicației.
Această aplicație nu este decât un prim pas pentru dezvoltarea pe viitor a unor funcționalități mult mai complexe. Modul în care s-a lucrat la această aplicație permite dezvoltarea de noi funcționalități, proiectul și baza de date având o structura bine organizată.
O posibilă dezvoltare a aplicației este adăugarea unui nou modul de mulți-company care ar da posibilitatea utilizatorilor să lucreze sau să dețină mai multe companii. Deși este un modul mai amplu consider că ar fi necesar deoarece mi se pare util și nu am găsit, încă, o aplicație care să îl conțină.
În concluzie, administratorii de proiecte și liderii echipelor o să găsească această aplicație foarte utilă din primul moment în care o vor utiliza. Prin utilizarea ei o să descopere un mod eficient de administrare al echipei, atât din punct de vedere al proiectelor cât și din punct de vedere al membrilor echipei.
Scopul final al aplicației este de a reduce timpul de administrare al proiectelor și consider că acesta este îndeplinit cu succes.
BILBIOGRAFIE
[1] http://php.net/manual/ro/history.php.php – accesat la data 2017/06/24
[2] https://digipedia.ro/despre-limbajul-javascript – data ultimei accesări 2017/06/28
[3] http://www.scritub.com/stiinta/informatica/html/Realizarea-paginilor-interacti13382.php – accesat la data 2017/06/28
[4] https://ro.wikibooks.org/wiki/Cascading_Style_Sheets_(CSS) – accesat la data 2017/06/25
[5] https://www.w3schools.com/css/css3_intro.asp – accesat la data 2017/06/29
[6] https://ro.wikipedia.org/wiki/JQuery – accesat la data 2017/06/29
[7] https://d13dcw7qo4xgly.cloudfront.net/wp-content/uploads/2015/07/Bootstrap-grid.png – accesat la data 2017/06/27
[8] http://fontawesome.io/cheatsheet/ – accesat la data 2017/06/27
[9] https://adminlte.io/themes/AdminLTE/documentation/index.html – accesat la data 2017/06/27
[10] https://en.wikipedia.org/wiki/Laravel – accesat la data 2017/06/27
[11] https://laravel.com/docs/4.2/introduction – accesat la data 2017/06/29
[12] https://i-msdn.sec.s-msft.com/dynimg/IC690874.png – accesat la data 2017/06/23
[13] https://laravel.com/docs/5.4/installation – accesat la data 2017/06/28
[14] https://ro.wikipedia.org/wiki/XAMPP – accesat la data 2017/06/23
DECLARAȚIE DE AUTENTICITATE A
LUCRĂRII DE FINALIZARE A STUDIILOR
Titlul lucrării: Aplicație web de gestionare a proiectelor în cadrul companiilor
Autorul lucrării: Cornea Florin – Marius
Lucrarea de finalizare a studiilor este elaborată în vederea susținerii examenului de finalizare a studiilor organizat de către Facultatea de Inginerie Electrică și Tehnologia Informației din cadrul Universității din Oradea, sesiunea iulie a anului universitar 2016-2017.
Prin prezenta, subsemnata Cornea Florin – Marius, CNP: 1940416051154, declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără nici un ajutor neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate de alți autori.
Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau alte surse folosite fără respectarea legii române și a convențiilor internaționale privind drepturile de autor.
Oradea,
5.07.2017
Semnătura
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: PROGRAMUL DE STUDIU TEHNOLOGIA INFORMAȚIEI [310607] (ID: 310607)
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.
