Elaborarea Portalului Informational Pentru Cnaa Utilizand Tehnologiile Drupal
TEZA DE LICENȚĂ
Elaborarea portalului informațional pentru CNAA utilizând tehnologiile Drupal
CUPRINS
SARCINA
ADNOTARE
LISTA ABREVIERILOR
INTRODUCERE
ANALIZA TEHNOLOGIILOR MODERNE DE CREARE A SITE-URILOR
Procesul de creare a site-ului
Analiza portalului informațional CNAA existent
Sistem de administrare a conținutului modern
Sistemul de administrare a conținutului Joomla
Sistemul de administrare a conținutului WordPress
Sistemul de administrare a conținutului Drupal
Analiza sistemelor de administrare a conținutului Drupal, Joomla și WordPress
Analiza OpenFramework
Concluzii la capitolul 1.
PROIECTAREA ȘI CREAREA PORTALULUI CNAA
Structura portalului CNAA
Funcțiile portalului CNAA
Limbaje de programare, tehnologii și baza de date utilizată
Descrierea softului
Concluzii la capitolul 2.
EXPLOATAREA PORTALULUI INFORMAȚIONAL
Ghidul utilizatorului
Ghidul programatorului
Concluzii la capitolul 3.
CONCLUZII GENERALE ȘI RECOMANDĂRI
BIBLIOGRAFIE
ANEXE
Aprob
Șef Catedră ….
NFP, grad șt., titlu șt.
_________________________
”___” ________________ 20…
S A R C I N A
pentru teza de licență a studentului grupei ..
NFP
Tema: „…”
aprobată prin ordinul nr____ din ”___” _____________ 20…
Conținutul notei explicative 1. Analiza tehnologiilor pentru crearea site-urilor; 2. Elaborarea, realizarea portalului CNAA utilizând tehnologiile Drupal.
Lista materialului grafic 1. Clasificarea tehnologiilor moderne pentru crearea ste-urilor; 2. Structura nouă a portalului CNAA; 3. Modulele utilizate pentru crearea portalului CNAA; 4. Comparație între sistemele moderne de elaborarea a site-urilor.
Data înmânării sarcinii: ”___” _____________ 20…
Executant
Oleinicov Grigore
Studentul grupei IA-33
Conducătorul tezei
NFP, grad șt., titlu șt., funcția
ADNOTARE
Oleinicov Grigore, „Elaborarea portalului informațional pentru CNAA utilizând tehnologiile Drupal”, teză de licență în informatică, Chișinău, 2014, introducere, 3 capitole, concluzii generale și recomandări, bibliografia din 30 de titluri, 8 anexe, ?? pagini
Cuvinte cheie: CMS, portal, portal informațional, CNAA, php, module, joomla, wordpress.
Domeniul de studiu: programarea web.
Scopul lucrării: Elaborarea portalului informațional CNAA pentru utilizarea colaboratorilor și afișarea a mai multor informații.
Obiectivele lucrării
Elaborarea interfeței generale de management a conținutului pentru structura propusă.
Elaborarea unui portal multilingv.
Noutatea și originalitatea științifică
Cu ajutorul modulului views am elaborat afișarea paginilor într-un mod diferit.
Am utilizat modulul GoogleMap pentru afișarea mapei.
Semnificația teoretică
CMS-ul Drupal s-a arătat o platformă convenabilă pentru acest portal informațional, datorită acestei platforme a fost elaborată o afișare anumită pentru structura voluminoasă și alte funcții ce nu au fost în versiunea anterioară.
Valoarea aplicativă a tezei ??
Implementarea rezultatelor științifice ??????
AHHOTAЦИЯ
Oлeйникoв Гpигopий, „Pазpабoтка инфopмациoннoгo пopтала для CNAA c иcпoльзoваниeм тexнoлoгии Drupal, "Диccepтация в oблаcти кoмпьютepныx наyк, Кишинeв, 2014, ввeдeния, 3 главы, вывoдoв и peкoмeндаций, библиoгpафии 30 наимeнoваний, 8 пpилoжeний, ? cтpаницы
Ключeвыe cлoва: CMS, cайт, инфopмациoннoый пopтал, CNAA, php, module, joomla, wordpress.
Oблаcть иccлeдoваний: вeб-пpoгpаммиpoваниe.
Цeль pабoты: Pазpабoтка инфopмациoннoгo пopтала CNAA для иcпoльзoвания пepcoнала и oтoбpажать бoльшe инфopмации.
Задачи
Pазpабoтать oбщий интepфeйc кoнтeнта yпpавлeния для пpeдлагаeмoй cтpyктypы.
Pазpабoтать мнoгoязычный пopтал.
Hoвизна и наyчная opигинальнocть pабoты:
C пoмoшью мoдyля views pазpабoтали дpyгoe oтoбpажeниe для cтpаниц
Иcпoльзoвали мoдyль GoogleMap для пoказа xаpты.
Teopeтичecкая значимocть
Drupal CMS пoказал yдoбнyю платфopмy для инфopмациoннoгo пopтала, пoтoмy чтo была pазpабoтана oтoбpажeния oбъeмный cтpyктype и дpyгиe cвoйcтва, кoтopыe нe были в пpeдыдyщeй вepcии cайта.
Пpактичecкая цeннocть pабoты
Bнeдpeниe наyчныx peзyльтатoв
ABSTRACT
Oleinicov Grigore, „Develop information portal for CNAA using Drupal technology, "Thesis in Computer Science, Chisinau, 2014, introduction, 3 chapters, conclusions and recommendations, bibliography of 30 titles, 8 annexes, ? pages
Keywords: CMS, portal, information portal, CNAA, php, module, joomla, wordpress.
Study domain: web programming.
Work purpose: Develop CNAA information portal for staff use and display more information.
Objectives
Develop general content management interface for the proposed structure.
Develop a multilingual portal
Scientifical originality and novelty
By way of views module have developed a different show for page
Used GoogleMap module for display map.
Theoretical significance
Drupal CMS showed a convenient platform for the portal information, because this platform has been developed to display some bulky structure and other features that were not in the previous version.
Valoarea aplicativă a tezei ??
Implementarea rezultatelor științifice ??????
LISTA ABREVIERILOR
HTTP – Hyper Transfer Protocol
CMS – Content management system
CMF – Content management framework
API – Application programming interface
CNAA- Consiliul Național pentru Acreditare și Atestare
CMA – Concert Multithreaded Architecture
PDF – Portable document format
PSD – Photoshop document
PHP – Hypertext preprocessor
FTP – File transfer protocol
HTML – HyperText Markup Language
CSS – Cascading Style Sheets
SEO – Search engine optimization
SaaS – Software as a service
OWASP – Open Web application security project
URL – Uniform resource locator
ACL – Access control list
CLI – Command line interface
SQL – Structured query language
WYSIWYG – What you se is what you get
XML – extensible markup language
INTRODUCERE
Actualitatea temei:
Toate portalurile constituie împreună World Wide Web, în cazul în care comunicarea (Web) combină segmente de informare ale comunității mondiale într-un tot coerent – o bază de date și de comunicare pe o scară planetară. Pentru acces direct la site-ul clientului la server a fost conceput special HTTP protocol. A crea un site – nu este un proces ușor. Desigur, site de vizită on-line poate fi construit într- o jumătate de oră, dar atunci când vine vorba de probleme mai serioase de resurse mai multe este cu mult mai complicat. Site-ul Modern – acest lucru nu este doar un set de materiale informative într-o interfață statică, și un sistem software complet care oferă site-ului un management al conținutului, menținerea unei baze de date de utilizatori, funcții de căutare, upload de imagini etc.
Toate aceste probleme sunt rezolvate cu ajutorul unor sisteme software de clasă "sistem de management de conținut» (Content Management System, CMS). Ca o regulă, CMS oferă o gamă de soluții de-a gata pentru probleme comune: fluxuri de știri, oaspeții site-ului, forumuri, sondaje, galerii foto, etc. Există destul de multe CMS-uri atât comercial cât și gratuit, cum ar fi Drupal, care este discutat în această teză.
Drupal este un sistem de management al conținutului, o bază foarte solidă pentru construirea aplicațiilor web și platforme bazate pe tendințele actuale. Drupal CMF este mai mult decât software, este o platformă flexibilă, cu funcții bogate pentru crearea comunității de realitate foarte mare de dezvoltatori, designeri, experți tehnici și profesioniști în domeniul de interacțiune cu utilizatorii, suporterii de accesibilitate, utilizare și a standardele este conceput de a înțelege și de a utiliza acest soft ușor !
Strict vorbind, Drupal, uneori, e clasificat nu ca un CMS, dar ca CMF (cadru Content Management, "FrameWork" sau "scheletul" pentru site). În Drupal se combină demnitatea CMS (un număr mare de module care extind funcționalitatea sistemului) și CMF puternic, documentare mai detaliată a interfeței, API, care permite de a scrie cu ușurință noi sau de a modifica un modul existent pentru acest sistem). Ca rezultat, dezvoltatorii pot crea pe un singur sistemel bazate pe web, care sunt adaptate pentru a rezolva o varietate de aplicații. Important este că, subsistemul temelor Drupal nu forțează dezvoltatorul de a folosi un singur tip de șablon. Drupal vă permite să utilizați diferite "motoare" de modele, care sunt construite pe baza de teme. Principalul lucru este că Drupal vă permite să creați site-uri Web dinamice cu ușurință și flexibilitate, puteți configura sistemul pentru descrierea a cuvintelor cheie, meta pentru fiecare post, precum și asemenea, pentru orice pagină și indiferent de adâncimea paginei care este pe site.
Scopul și obiectivele tezei:
Elaborarea și proiectarea portalului CNAA cu ajutorul managementul al conținutului Drupal care v-a permite s-ă fie bine structurat, dezvoltat într-un mod modern.
Obiectivele tezei sunt:
Analiza a mai multor CMS-uri destinate pentru creare site-urilor, depistarea dezavantajelor acestora care vor fi luate în considerație la elaborarea versiunii noi a portalului CNAA
Implementarea structurii cu volum foarte mare în versiunea nouă a portalului ca scop să nu apară dificultăți din cauza unui conținut voluminos.
Elaborarea interfeței generale de management a conținutului pentru structura propusă
Implementarea modulelor necesare pentru ca portalul sa fie rulat eficient.
Elaborarea unui portal multilingv
Noutatea științifică a rezultatelor:
Cu ajutorul modulului node am realizat listarea, sortare prin, și gestionarea a tot conținutului de pe portal și am configurat tipurile de conținut pe portal.
Modulele de translarea a conținutul portalului a servit la o economisire de timp și mai puțină intervenție de programare.
Când facem legătura a mai multor tipuri de conținut sau pagini ele automat se plasează în baza de date în tabelul creat automat.
Structura lucrării:
Teza este structurată în trei capitole, conținând introduceri, concluzii și anexe.
Primul capitol – „Analiza tehnologiilor moderne de creare a site-urilor” prezintă fundamentele teoretice ale sistemelor moderne, fiind analizate și scoase toata avantajele și dezavantaje în parte.
Capitolul nr.2- „Elaborarea și proiectarea portalului” prezintă descrierea detaliată a elaborării portalului după structură și proiectarea acestuia cu limbaje de programare și module.
Capitolul nr.3- „Ghidul utilizatorului și programatorului” instrucțiunile de utilizare a portalului pentru programatori și simple utilizatori.
ANALIZA SISTEMELOR MODERNE DE ADMINISTRARE A CONȚINUTULUI
Procesul de creare a site-ului
Cum ar fi dezvoltarea software-ului tradițional, procesul de dezvoltare site-ul web poate fi, de asemenea, împărțit în diferite etape ale ciclului de viață. Acest lucru poate ajuta pentru a formata echipa mod eficient, precum și standardele și procedurile pot fi adoptate pentru a obține maximum de calitate.
Pentru că site-ul va fi o parte a unui sistem , este nevoie de o analiză completă ca , modul în care site-ul web sau aplicație bazată pe web este de gând să ajute sistemul actual și modul în care site-ul va ajuta afacerea . În plus, analiza ar trebui să acopere toate aspectele în special de modul în care site-ul este de gând să se alăture sistemului existent . Primul lucru important este de a găsi publicul țintă . Apoi , tot de față hardware-ului , software-ului, oamenii și datele ar trebui să fie luate în considerare în timpul analizei . De exempluCapitolul nr.3- „Ghidul utilizatorului și programatorului” instrucțiunile de utilizare a portalului pentru programatori și simple utilizatori.
ANALIZA SISTEMELOR MODERNE DE ADMINISTRARE A CONȚINUTULUI
Procesul de creare a site-ului
Cum ar fi dezvoltarea software-ului tradițional, procesul de dezvoltare site-ul web poate fi, de asemenea, împărțit în diferite etape ale ciclului de viață. Acest lucru poate ajuta pentru a formata echipa mod eficient, precum și standardele și procedurile pot fi adoptate pentru a obține maximum de calitate.
Pentru că site-ul va fi o parte a unui sistem , este nevoie de o analiză completă ca , modul în care site-ul web sau aplicație bazată pe web este de gând să ajute sistemul actual și modul în care site-ul va ajuta afacerea . În plus, analiza ar trebui să acopere toate aspectele în special de modul în care site-ul este de gând să se alăture sistemului existent . Primul lucru important este de a găsi publicul țintă . Apoi , tot de față hardware-ului , software-ului, oamenii și datele ar trebui să fie luate în considerare în timpul analizei . De exemplu , dacă o companie XYZ corp are nevoie de un site web pentru a avea detaliile sale de resurse umane on-line , echipa de analiză ar putea încerca să utilizeze datele existente cu privire la angajații din prezent baza de date . Analiza ar trebui să se facă în modul , că aceasta poate fi prea consumatoare de timp sau cu foarte puțin informativ . Echipa ar trebui să fie capabilă de a veni cu analiza completă costuri-beneficii și ca planul de proiect sa fie o ieșire de analiză . Pentru a realiza acest lucru analistul ar trebui să consulte designeri , dezvoltatori și testeri de a veni cu un plan realist.
Specificații preliminare sunt elaborate pentru ca să acopere până fiecare element al cerinței. De exemplu, dacă produsul este un site web, atunci modulele site-ului, inclusiv aspectul general, navigarea pe site și părțile dinamice ale amplasamentului trebuie incluse în proiect. Proiecte mai mari vor necesita niveluri suplimentare de consultare pentru a evalua cerințele tehnice suplimentare de afaceri. După revizuirea și aprobarea documentului preliminar, o propunere scrisă este pregătită, subliniind sfera de aplicare a proiectului, inclusiv responsabilitățile, termenele și costurile.
După construirea caietului de sarcini , de lucru pe site-ul de crarea este programat de la primirea propunerii semnate , un depozit , și orice material de conținut scrise și grafice pe care dorim să le includem. Aici , în mod normal aspectele și navigarea va fi conceput ca un prototip.Unii clienți ar putea fi interesat doar de un prototip complet funcțional. În acest caz, am putea avea nevoie să le arătăm interactivitatea a cererii sau a site-ului . Dar, în cele mai multe cazuri clientul ar putea fi interesat în vizualizarea două sau trei exemple de design, cu toate imaginile și navigație. Nu poate fi o mulțime de sugestii și modificările din partea clientului , iar toate modificările ar trebui să fie înghețate înainte de a trece în faza următoare . Revizuirile ar putea fi reafișate prin intermediul web pentru client de a vizualiza. După cum este necesar , un comentariu , feedback-ul și aprobările pot fi comunicate de e-mail , fax și telefon. De-a lungul fazei de proiectare echipei ar trebui să elaboreze planuri și proceduri de asigurare a calității de testare .În paralel, echipa de bază de date va trebui să înțeleagă cerințele și de a dezvolta baza de date cu toate structurile de date.
Programatorii se întoarce pentru a adăuga codul său, fără a perturba proiectare. Spre deosebire de designul tradițional dezvoltatorul trebuie să cunoască interfața și codul nu ar trebui să deranjeze aspectul site-ului sau aplicarea. Deci, dezvoltatorul ar trebui să înțeleagă proiectarea și navigare. În cazul în care site-ul este dinamic, atunci codul ar trebui să utilizeze șablonul. Dezvoltatorul ar putea avea nevoie pentru a interacționa cu proiectantul, în scopul de a înțelege proiectare. Proiectantul ar putea avea nevoie pentru a dezvolta o serie de butoane grafice atunci când vreodată dezvoltatorul are nevoie. Echipa de codificare ar trebui să genereze planuri de testare necesare, precum și documentația tehnică. De exemplu, utilizatorii pot folosi Java JavaDoc pentru a dezvolta documentele lor pentru a înțelege fluxul lor de cod.
Spre deosebire de software, aplicațiile bazate pe web au nevoie de teste intensive, că aplicațiile vor funcționa întotdeauna ca un sistem multi-utilizator cu limitări de lățime de bandă. Unele dintre testele pe care ar trebui să fie făcute sunt, testarea de integrare, testarea de stres, de testare scalabilă, testarea rezoluției și teste de compatibilitate cu browsere. Atât de testarea automată și testare manuală ar trebui să se facă fără a eșua. De exemplu, este nevoie de a testa grafice de încărcare rapidă și pentru a calcula timpul de încărcare, deoarece acestea sunt foarte importante pentru orice site web. Există anumite instrumente de testare, precum și unele instrumente de testare online, care pot ajuta testerii pentru a testa aplicațiile lor. Faza de testare se aplică numai pentru site-uri web. Promovarea are nevoie de pregătire de meta tag-uri, analiza constant și transmiterea URL-urilor pentru motoarele de căutare și directoare.
Analiza portalului informațional CNAA existent
Versiunea anterioară a portalului CNAA a fost elaborată fără aplicarea a multor funcționalități cum are Drupal. Portalul a fost creat de persoane care nu au făcut o interfață grea, ceea ce dă o navigare dificilă a utilizatorilor pe portal. Cel mai incomod compartiment pentru navigare a fost cel cu lista de teze.
În versiunea nouă realizată cu ajutorul Drupal a fost realizată o interfață mai simplă și mai ușoară pentru navigația utilizatorilor, fiecare compartiment este bine pus in design-ul postalului astfel navigarea în fiecare compartiment este mai simplă pentru orișicare utilizator.
Încă o problemă în versiunea anterioară a portalului CNAA a fost ceea cum arată prima pagină, este greu de observat noutățile noi, evenimentele etc. Această problema a fost rezolvată cu ajutorul FrameWork-ului utilizat datorită regiunilor comode.
Toate compartimente a portalului anterior sunt împrăștiate în diferite regiuni ale portalului ceea ce face incomod căutare a informației necesare. În versiunea nouă a postalului am realizat 2 meniuri cu categorii care apar în alte sub-meniuri, aceasta este un plus pentru utilizatorii care își caută informația necesară. După realizarea portalului au fost adăugate block-uri pe pagina principală care ajută utilizatorii portalului să afle cele mai noi noutăți și evenimente ale CNAA.
Sistemul de administrare a conținutului modern
Un sistem de management al conținutului „CMS” este un program de calculator ce permite publicarea, editarea și modificarea de conținut, precum și de întreținere de la o interfață centrală. Astfel de sisteme de management de conținut oferă proceduri pentru a gestiona fluxul de lucru într-un mediu de colaborare. Aceste proceduri pot fi trepte manuale sau o cascadă automată. CMS-urile au fost disponibile încă de la sfârșitul anilor 1990[1].
CMS sunt adesea folosite pentru a rula site-uri web care conțin bloguri, știri, și cumpărături. Multe site-uri corporative și de marketing folosesc CMS-uri moderne. Scopul CMS-ului este de a reduce sau elimina intervenția programatorilor la editarea și administrarea siturilor lor, dar poate sprijini pentru anumite elemente sau pagini întregi. CMS-ul facilitează organizarea, controlul și publicarea de documente sau alt tip de conținut, cum ar fi imagini și resurse multimedia. Un CMS facilitează adesea crearea in comun de documente. Un "CMS web" este un CMS cu facilități adiționale pentru ușurarea publicării de conținut pe diversele situri.
Funcția și utilizarea sistemelor de management de conținut este de a stoca și organiza fișiere, și să ofere acces controlat versiunilor la datelor lor. Unele sisteme simple au funcția de a prezenta o mână de caracteristici, în timp ce alte versiuni, în special sisteme enterprise, oferă funcții mai complexe și mai puternice. Cele mai multe CMS-uri includ publicarea web-based, management format, de control revizie (de control al versiunii), indexare, căutare și recuperare. CMS-ul incrementează numărul de versiuni, atunci când noi actualizări sunt adăugate la un fișier deja existent.
Un CMS poate servi ca un depozit central care conține documente, filme, fotografii, numere de telefon, date științifice. CMS-ul poate fi utilizat pentru stocarea, controlul, revizuirea, documentare și publicare.
Distincție între conceptele de bază ale utilizatorului și conținutului, sistemul de management al conținutului (CMS) are două elemente:
Aplicația de management al conținutului (CMA) este interfața front-end a utilizatorului care permite altui utilizator, chiar și cu experiență limitată, pentru a adăuga, modifica și elimina conținutul de pe un site Web, fără intervenția unui Webmaster.
Cerere de livrare de conținut compilează informații și actualizează site-ul Web.
Sistem de administrare a conținutului Joomla
Joomla este un program gratuit și o platformă open-source de management al conținutului (CMF) pentru publicarea de conținut web. Acesta este construit pe o aplicație web de model-view-controller, care poate fi utilizată independent de CMS.
Un șablon Joomla este o extensie Joomla cu multiple coloane, care este responsabil pentru aspectul, designul și structura unui site web Joomla alimentat. În timp ce CMF-ul administrează conținutul, un șablon gestionează aspectul elementelor de conținut și design de ansamblu a unui site web Joomla condus. Conținutul și proiectare a unui șablon Joomla este separat și poatet fi editat, modificat și șters separat.
Extensiile Joomla ajuta de a extinde capacitatea site-urilor Joomla. Există cinci tipuri de extensii pentru Joomla. Fiecare dintre aceste extensii ocupă o funcție specificată[2].
Există două părți-cheie la un site Joomla, unul controlează cum va arata site-ul, iar celălalt informațiile pe care le vezi, conținutul. Cum un site web v-a arata este controlat de ceva numit HTML, aceasta este limbaj pe care browser-ul dumneavoastră "citește" – de la acest lucru, browser-ul știe ce culoare are nevoie pentru a face textul, în cazul în care pentru a pune o anumită imagine, cât de departe un lucru ar trebui să fie de la un alt și o întreagă serie de alte lucruri.
Partea de conținut al site-ului (textul) este livrat "dinamic" dintr-o bază de date, care este separată de partea HTML a site-ului. Baza de date stochează doar text simplu, neformatat, dar permite paginii web pentru conectarea la ea, așa ca atunci când ne uităm la o pagină de site-ul Joomla într-un browser, cei doi sunt aduse împreună și afișat în format HTML care controlează modul în care totul apare și baza de date care ne oferă conținutul. Când faceți clic pe un link către o pagină nouă, HTML rămâne în mare parte aceeași, dar browser-ul solicită conținut nou din baza de date, în funcție de care se leagă.[8]
Componente: Cele mai mari și mai complexe extensii, ele pot fi privite ca mini-aplicații. Majoritatea componentelor au două părți: o parte site-ul și o parte administrator. De fiecare dată când o pagină Joomla are sarcini, o componentă este chemat pentru a face corpul principal a paginei. Componentele sunt cea mai mare parte a unei pagini, deoarece o componentă este condusă de către un element de meniu și fiecare element de meniu se execută de o componentă.
Plugin-uri: Acestea sunt extensii mai avansate și sunt în esență. În executarea de orice parte a Joomla, un modul sau o componentă, un eveniment poate fi declanșat. Atunci când un eveniment este declanșat, plugin-urile, care sunt înregistrate cu aplicația are scopul să se ocupe de acest eveniment și să-l execute.
Module: Paginile flexibile în Joomla necesită o extensie de modul, care este apoi legat de componentele Joomla pentru a afișa conținutul nou sau imagini noi. Modulele Joomla arată ca blocuri cum ar fi modulul "search". Cu toate acestea, ele nu au nevoie de html pentru Joomla.
Limbi: Extensii foarte simple, care pot fi folosite fie ca o parte de bază sau ca o extensie. Limba și informațiile font pot fi de asemenea, utilizate pentru PDF sau PSD la conversii Joomla.
Unele dina caracteristicile de bază a sistemului de administrare a conținutului Jooml sunt:
Module de securitate pentru utilizatori de multi-nivel și autentificare administratorului
Apar în mod regulat actualizări. Există un "bug tracker" public (sistem de urmărire a bug). Există, de asemenea Trackers de migrarea de la versiuni mai vechi Joomla, dorințele tracker-ului este de a extinde funcționalitatea și așa mai departe, unde utilizatorii pot lăsa comentarii Joomla despre CMS de lucru, care pot studia ulterior dezvoltatorii săi, dacă este necesar, este inclus în următoarea actualizarea rezolvării Joomla și rezolvarea anumitor probleme. [18]
Pentru fiecare pagină dinamică este permisă crearea, descrierea și adăugarea cuvintelor cheie pentru a îmbunătăți motorul de căutare
Începutul și sfârșitul publicării a oricărui material poate fi programat conform calendarului;
Sistem de administrare a conținutului WordPress
WordPress este un instrument gratuit și open source de blogging și un sistem de management al conținutului (CMS) bazat pe PHP si MySQL, care ruleaza pe un serviciu de gazduire web. Caracteristicile includ o arhitectură de plug-inuri și un sistem de șablonizare. WordPress este cel mai popular sistem de blogging în utilizarea pe Web, la mai mult de 60 de milioane de site-uri web.[15]
Flexibilitatea se extinde de asemenea, pentru a posta blog-uri pe WordPress. Putem specifica o dată viitoare a postarării, clasifica mesajele administratorului și afișarea fișierilor mass-media care se potrivesc și pot fi încorporate, cum ar fi imagini, clipuri video și audio. Un sistem de comentariu moderat este susținut și comentariile pot fi sindicalizate separat. O funcție puternică Links Manager permite utilizatorilor să gestioneze blogroll (liste de link-uri) și semne de carte. Suport Permalink prevede accesul la înregistrări individuale a blog-ului și ajută motorul de căutare să indexeze eficient un site web pe WordPress. Blog-uri multiple pot partaja o singură instalare de WordPress, care este menținută de către un super-administrator[3].
Utilizatorii WordPress pot instala și comuta între șabloane. Șablonul permite utilizatorilor pentru a schimba aspectul și funcționalitatea unui site web WordPress sau de instalare, fără a modifica conținutul informațiilor sau structura site-ului. Șabloanele pot fi instalate cu ajutorul WordPress "Aspect" instrument de administrare sau fișierele a șablonului pot fi încărcat prin FTP. PHP, HTML si CSS codurile găsite în șabloane pot fi adăugate sau editate pentru furnizarea de caracteristici avansate.[19] Utilizatorii WordPress pot, de asemenea, crea și dezvolta propriile profile personalizate dacă au cunoștințele și abilitățile de a face acest lucru.
O caracteristică foarte populară de WordPress este arhitectura sa de plugin-uri care permite utilizatorilor și dezvoltatorilor să extindă abilitățile sale de dincolo de instalare de bază. WordPress are o bază de date de peste 30.000 de plugin-uri, fiecare dintre care oferă funcții personalizate și caracteristici care permite utilizatorilor pentru a adapta site-urile lor la nevoile lor specifice. Aceste particularizări variază de la SEO trimise la portalul clientului utilizate pentru a afișa informații private pentru utilizatorii autentificați, pentru afișarea de conținut , cum ar fi adăugarea de widget-uri și bare de navigare.
WordPress are, de asemenea gestionarea integrată a link-ului, un motor prietenos, structură permanentă curată de căutare, capacitatea de a atribui mai multe categorii imbricate de articole și suport pentru etichetarea de posturi și articole. Filtrele automate sunt de asemenea incluse, oferind formatarea standardizate și stil de text în articole WordPress sprijină, de asemenea standardele Trackback și Pingback pentru afișarea link-urilor către alte site-uri care sunt legate de un post sau articol.
Caracteristicile de blogging din WordPress vă permite de a actualiza site-ul frecvent, să primească și să răspundă la comentariile de la cititorii și pentru a permite altora să se aboneze la conținutul site-ului folosind RSS.
WordPress de astăzi este într-adevăr un CMS, ceea ce înseamnă că poate fi folosit pentru a site-uri, bogate în mass-media.
Sistemul de administrare a conținutului Drupal
Drupal este o platforma open-source gratuită, de dezvoltare web a conținutului on-line și de comunitățile de utilizatori. Puterea Drupal constă că este una dintre cele mai aglomerate site-uri de pe web, și poate fi adaptată la aproape orice design vizual.[5]
Drupal este o platforma open-source gratuită, de dezvoltare web a conținutului on-line și de comunitățile de utilizatori. Puterea Drupal constă că este una dintre cele mai aglomerate site-uri de pe web, și poate fi adaptată la aproape orice design vizual.[10]
Drupal este un sistem de administrare a conținutului și a cadrului de dezvoltare de aplicații web folosite și de încredere de mii de indivizi, afaceri, non-profit, educație, guvern, și alte organizații din întreaga lume, pentru a crea site-uri personale și corporative, site-uri de comerț electronic, site-uri de social networking, intranet , software-ul ca serviciu (SaaS), produse și mult mai mult.
Drupal nu este un CMS, strict vorbind, ci o platformă în care diferite module pot fi conectate și combinate pentru a oferi un CMS personalizat pentru nevoile dumneavoastră. Exista module pentru multe scopuri, de exemplu stocare diferitor tipuri de conținut, preluarea de conținut pe baza unor criterii, și pentru afișarea conținutului în moduri diferite și multe altele.
Drupal a fost creat în urmă cu peste zece ani și lansat ca software open-source sub GNU Public License. Asta înseamnă că este complet gratuit pentru a descărca, folosi, si modifica. Nu există nici o achiziție de licență, sau taxe de întreținere.
Drupal nu este o aplicație desktop. Acesta este de obicei rulată pe un sistem bazat pe Linux, folosind limbajul de scripting PHP și baze de date MySQL, toate din care sunt, de asemenea, proiecte open-source. În scopuri de dezvoltare și evoluție, Drupal este adesea rulat pe Windows standard, Macintosh, și calculatoare personale bazate pe Linux, de obicei, folosind un mediu adaptat server local all-in-one, cum ar fi MAMP sau XAMPP
Drupal este ușor să conecteze site-ul dvs. la alte site-uri și servicii de pe web, folosind agregare, feed-uri, precum și capabilități de conectare a motorului de căutare. Integrarea de social networking este de asemenea recunoscută pe scară largă pentru a vă ajuta să aveți un public mai larg. Drupal oferă, de asemenea, pentru site-ul dvs. moduri ușoare pentru a interacționa cu fișiere media externe și serviciile de fișiere.
Instalare implicit Drupal este o platformă web cu bază de date susținută cu instrumente de întreținere de fișiere și un nivel ridicat de securitate. Mulți dezvoltatori profita de arhitectura extensibila Drupal pentru a merge dincolo de "nucleul" pachetului. Drupal este folosit de mii de site-uri web de profil înalt și este supus securității riguroase de testare, atât de către comunitatea Drupal ci și de experți în securitate din întreaga lume. Codul de bază Drupal a fost dovedit pentru a preveni vulnerabilitățile de securitate comune, cum ar fi cele definite de Proiectul de Securitate Open Web Application (OWASP). Drupal rulează milioane de site-uri web, inclusiv multe dintre cele mai mari din lume. Este deosebit de puternică în rândul guvernelor majore și a întreprinderilor-lider în industrie, dar este destul de ușor pentru a fi platforma de alegere pentru persoane fizice și companii mici.
Avantajele
Include o mulțime de funcționalități:
Drupal include mulțime de funcționalități, cum ar fi: management avansat a meniului, sondaje de management, instrumente de modificare grafică, de gestionare a utilizatorilor și mult mai mult. Aceste funcții permit de a crea site-uri simple sau avansate, bloguri, forumuri de discuții, pagini de rețele sociale, etc.
Varietate de tipuri de conținut:
Drupal este renumit pentru a permite crearea și gestionarea mai multor tipuri de conținut, cum ar fi: video, sondaje, managementul de utilizator, text, blog-uri, podcast-uri, statistici, și altele.
Gestionarea utilizatorilor:
Un administrator poate crea noi conturi de utilizator și de a stabili drepturile de permisiuni. Utilizatorii pot fi împărțiți în grupuri și le pot fi date sarcini. Ele pot fi administrate pentru permisiuni de a gestiona unele părți ale site-ului dumneavoastră.
Managementul de grafică:
Script-ul include capabilități de elemente de design și de editare. Template-uri disponibile și teme pentru a face un start bun. Predefinite configurații funcții pagina face ușor de a crea atât un simplu precum și configurații de pagină mai complicate.
Managementul conținutului a paginii:
Drupal vă permite clasificarea conținutului prin intermediul adreselor URL. Această structură face pentru o gestionare ușoară, de căutare și reutilizarea conținutului.
Module:
Drupal-ul are multe mii de module disponibile pe site. Din moment ce Drupal este un Open Source, putem folosi la fel de bine ca și crea propriile module.
Dezavantaje
Instalarea și modificarea:
Soft-ul nu este foarte ușor de utilizat și necesită cunoștințe avansate pentru a instala și de a modifica. Quick.Cms, WordPress și chiar Joomla sunt simplu de utilizat, deși ei nu oferă funcționalități la fel de bogate ca Drupal.
Eficiență
Atunci când se analizează scalabilitatea și eficiența, Drupal este cu mult în urma altor soft-uri, cum ar fi Quick.Cms sau WordPress. Daca site-ul este foarte mare, soft-ul va genera o sarcină mare pentru server. Aceasta este cauzata de gama mare de posibilități oferite de Drupal. Există totuși module care se încarcă în cache-ul serverului, ceea ce scade încărcarea serverului.
Analiza CMS-ului Drupal față de Joomla și WordPress
WordPress, Joomla și Drupal sunt cele trei sisteme de management al conținutului (CMS) cele mai populare on-line. Toate cele trei sunt open source și sunt construite pe PHP + MySQL. Toate trei diferă semnificativ în termeni de caracteristici, capacitatea, flexibilitatea și ușurința de utilizare
Analiza Joomla:
Joomla este de multe ori în comparație cu Drupal. Joomla este adesea descris ca fiind mai ușor de utilizat inițial, dar Drupal pare a fi mai adaptabil în cazul în care un utilizator este capabil să se ocupe de problemele tehnice. Una dintre caracteristicile cheie Joomla este interfața grafică, care are mai puțin de o curbă de învățare decât sistemul de meniuri Drupal.
Joomla este un software gratuit de management al conținutului ramificat din Mambo. Aceasta este una dintre cele mai populare soluții de CMS din lume și se mândrește cu peste 30 de milioane de descărcări până în prezent.
Avantajele Joomla:
– Joomla nu este WordPress, dar este încă relativ ușor de utilizat. Interfața administratorului este, flexibilă si puternică, deși există încă o curbă de învățare ușoară.
– Cum ar fi WordPress, Joomla are de asemenea o comunitate puternică de dezvoltatori. Biblioteca de plugin-uri (numite "extensii" în Joomla) este mare, cu o tona de libertatea de a folosi plugin-uri gratuite.
– Extensiile Joomla sunt împărțite în cinci categorii – componente, plugin-uri, template-uri, module și limbi. Fiecare dintre aceste diferă în funcție, putere și capacitate. Componente, de exemplu, lucrează ca "mini-aplicații", care pot schimba instalarea. Modulele pe de altă parte, adăuga capacități minore, cum ar fi conținut dinamic, fluxuri RSS, și funcția de căutare a unei pagini web.
– Spre deosebire de WordPress și Drupal, Joomla a fost inițial conceput ca o întreprindere de clasă. Acest lucru face mult mai capabil de manipulare la un volum mare de articole de WordPress.
Dezavantaje Joomla:
– Nu poți sari direct într-o instalare Joomla și de a începe lucrul cu mesaje noi, dacă nu sunteți familiarizați cu software-ul. Curba de învățare nu este abruptă, dar poate fi suficient pentru a intimida utilizatorii ocazionali.
– Efectuarea de WordPress SEO prietenos este la fel de ușor ca instalarea unui plug-in gratuit. Cu Joomla, veți avea nevoie de o tona de lucru pentru a ajunge la același nivel de prietenie pentru motorul de căutare.
– ACL (Access Control List) se referă la o listă de permisiuni care pot fi acordate utilizatorilor specifice pentru anumite pagini. ACL este o componentă vitală a oricărei soluții CMS. Joomla a început sprijinirea ACL numai după versiunea 1.6. Suport ACL este încă limitată în versiunea 2.5.1 ceea ce face improprii pentru clienți.
Atunci când se compară două CMS-uri: Joomla și Drupal, în primul rând, se acordă o atenție la prezența de documentare a limbilor. Drupal nu are atât de multe documentări multi-linguale ca Joomla, în ciuda sprijinul activ al comunității vorbitoare de limbă rusă și altele pentru transfer. Prin urmare, atunci când se utilizează cunoștințe de limba engleză Drupal este un mare plus la orice modificare de soluție standard.
Analiza WordPress:
New York Times, CNN, Forbes și Reuters – lista clientilor WordPress.com citește ca publicarea dream-team. Mai mult de 68 de milioane de site-uri web folosesc WordPress, ceea ce face software-ul de blogging cel mqi preferat din lume.
Avantajele WordPress:
-Multiple Autori: WordPress a fost construit de la început pentru a se potrivi mai mulți autori o caracteristică esențială pentru orice publicație serioasă.
-Librărie imensă de Plugin-uri: WordPress "este dezvoltat a comunitatea de dezvoltatori open-source, care a dezvoltat sute de mii de plugin-uri pentru ea. Există câteva lucruri pe WordPress care nu se poate face cu biblioteca sa extinsă de plugin-uri.
-Interfața utilizatorului în WordPress este ușor de utilizat și foarte intuitiv, chiar și pentru bloggeri pentru prima dată. Este de ajuns de a instala un șablon grauit și plugin-ri necesare pentru a porni blogging-ul. Există plungin și pentru SEO cum ar fi „All in One SEO” care automat face lucrul său pentru utilizator.
-Personalizare ușoara: Sistemul WordPress a temelor este proiectat pentru o personalizare ușoară. Este nevoie de puțină cunoștință HTML și CSS pentru a crea un șablon pentru placul oricărui utilizator.[7]
– Flexibilitate WordPress-ului ajută pentru pot fi făcute aproape orice web-site dorit – de a conduce un magazin de e-commerce, a găzdui un site video, un portofoliu sau de a lucru cu un blog personal datorită plugin-urilor și temelor personalizate.
Dezavantajele:
-Securitate WordPress ca categoria software-ul de conducere, cu milioane de instalații, WordPress este adesea ținta de hackeri. Software-ul în sine nu este foarte sigur, și va trebui să instalați plugin-uri pentru a spori securitatea WordPress-lui.
-Incompatibilitatea cu Plugin-uri vechi: Dezvolatorii WordPress lansează in mod constant noi actualizări pentru a rezolva vulnerabilitățile de securitate și probleme de patch-uri. Aceste actualizări sunt adesea incompatibile cu plugin-uri mai vechi. Dacă site-ul se bazează pe plugin-uri mai vechi, site-ul v-a trebui să dețină actualizări, ceea ce face site-ul cu atât mai sensibile la atacuri hack.
-Opțiuni limitate de design: Chiar daca WordPress este infinit personalizabil, cele mai multe instalații WordPress arata în continuare ca instalațiile WordPress. Deși recente actualizări și îmbunătățiri în plugin-uri / teme au rectificat această problemă oarecum, WordPress este încă îngreunată de opțiuni de opțiuni limitate în design.
-Capabilități limitate a managementul de conținut: WordPress a fost inițial conceput ca o platformă de blogging. Acest lucru a afectat capacitatea sa de a gestiona cantități mari de conținut. Dacă aveți de gând să publicați sute de posturi pe blog pe săptămână, din cauza aceasta WordPress poate frâna și pot apărea erori pentru astfel de volum de conținut mare.
Analiza Drupal:
Drupal este cel mai vechi din sistemele de CMS din această listă, a fost primul lansat la începutul anului 2001. Drupal ca WordPress și Joomla este de asemenea open-source si bazat pe PHP, MySQL. Drupal este extrem de puternic și dezvoltator, care a făcut o alegere populara pentru caracteristica lui, site-urile web create în Drupal este mai bogat în date, cum ar fi Whitehouse.gov și Data.gov.uk.
Avantajele Drupal:
-Drupal este extrem de flexibil, cu Drupal putem crea un blog simplu, cu o prima pagină statică, un backend puternic, care poate suporta sute de mii de pagini și milioane de utilizatori in fiecare luna. Software-ul este puternic și flexibil – de mirare de ce este un favorit în rândul dezvoltatorilor.[13]
-Instalarea de bază Drupal este destul de simplă și poate fi executată automat printr-un singur click. Dezvoltatorii sunt încurajați să-și creeze propriile soluții.
-Capabilitățile puternice în SEO: Drupal a fost proiectat de la început pentru a fi motorul de căutare favorabil.[11]
-CMS-ul Drupal cu versiunea de control puternică ACL și cu multe capabilități face Drupal-ul de a executa cu ușurință de sute de mii de pagini de conținut.
-Drupal este stabil chiar și atunci când deservește sute de mii de utilizatori simultan
Dezavantajele Drupal:
– Trecerea de la WordPress sau Joomla la Drupal se pot simți ca și cum ai trece de la mașina ta într-o cabina de pilotaj Boeing 747 – totul este complicat! Pentru elaborarea unui site dificil în Drupal trebuie să aveți capacități puternice de codificare și plăcerea dea citi tone de lucrări tehnice, veți găsi Drupal extrem de dificil de utilizat pentru utilizarea regulată.
-Lipsa de Teme: După instalarea Drupal-ului site-ul arată ca un deșert după o seceta. Lipsa de teme nu face lucrurile mai bine. Pentru elaborarea unui site mai frumos în design și puternic în funcții trebuie un designer sau un programator bun pentru ca site-ul să nu arate ca un simplu blog.[17]
Analiza OpenFramework
OpenFramework este o temă de bază Drupal 7, construit cu Bootstrap care oferă un mod simplu dar puternic pentru a crea aspecte complexe, flexibile și adaptabile pentru fiecare dispozitiv electronic cum ar fi smartphone-urile și tabletele. OpenFramework vă oferă o modalitate ușoară de a personaliza aspectul de site-ul dvs. cu câteva clicuri simple. OpenFramework este tema de bază pentru centrul de dezvoltare Drupal la Universitatea Stanford. OpenFramework, Framework Stanford, și diverse subteme sunt menținute la nivel central de către Stanford Web Services.[20]
Adaptabil
OpenFramework prevede un set de regiuni adaptabile pe care le puteți folosi pentru a crea o varietate de aspecte complexe. Regiunile ale OpenFramework-ului sunt receptive pentru a folosi o combinație a mai multor modele de aspect multi-dispozitiv.
Ușor de utilizat
Prim adăugarea blocurilor în regiunile OpenFramework adaptive este realiză o structură bună a site-ului. În curs de dezvoltare deschis-cadru, pentru constructori site-ului și editori de conținut usurinta de utilizare-a fost prioritatea noastră, și care se reflectă în alegerile pe care le-am făcut în funcții și codul temei.
Bazat pe Bootstrap
OpenFramework se bazează pe stilurile Bootstrap și comportamente care să răspundă de oferirea unei teme de bază mai fundamentale, care este construit cu Drupal în nucleu.
Concluzie la Capitolul 1.
Joomla este o opțiune bună pentru site-uri, portaluri, e-Commerce dar nu putem ajunge cu aceste platforme la un web-site avansat . Pentru ceva mai puternic pentru utilizare de întreprindere, se ia în considerare Drupal. Pentru crearea unui blog personal sau de grup, și nu este nevoie să se integreze cu restul site-ului putem alege platforma WordPress, în alte cazuri, este mai bine Drupal.
WordPress este ușor de utilizat, intuitiv, și foarte flexibil. Putem spune că e mai mult de un motor de blogging-ul, e un adevărat CMS. Dar pentru a fi funcționabil ca un CMS obișnuit se face multe adăugări de plugin-uri. Pentru un site care este flexibil și scalabil, o funcționalitate mai bună decât un blog simplu, Drupal este cel mai bun variant.
Principalul lucru este că Drupal vă permite să creați site-uri Web dinamice cu ușurință și flexibilitate , puteți configura sistemul pentru descrierea și cuvintele cheie meta pentru fiecare post , precum și , de asemenea, pentru orice pagină și indiferent de adâncimea la care pagina este pe site. Drupal este cel mai bun sistem de promovare SEO , fără nici un cost financiar , există , de asemenea, o mulțime de module si template-uri care vă permit să extindă funcționalitatea la orice proiect web și desigur, adapta orice site web pentru dispozitive mobile . Drupal este un sistem avansat de CMS, oferind o mulțime de funcții, care în alte scripturi necesită instalarea de multe plugin-uri.
Joomla – nu este un sistem bine adaptat pentru motoarele de căutare, cum ar fi Drupal.
WordPress este lider în domeniul de a crea bloguri, dar dacă este nevoie de mai mult decât un site blog cu funcționalitate mai mare, este recomandat să folosiți platforma Drupal.
Spre deosebire de alte funcționalități CMS-ul a site-ului bazat pe Drupal nu este limitat în particular, putem crea proiecte web de orice complexitate, de la rețelele corporative interne și se termină cu e-commerce.
Drupal este un instrument sigur, extensibil și puternic pentru site-uri de construcții, mai mult decât CMS: este mediul de dezvoltare de aplicațiilor web. Cu fiecare versiune nouă se îmbunătățește API (Application Programming Interface).
Versiunea veche a portalului CNAA este deja învechită , vorbim despre CMS-ul și chiar de baza de date care este făcută într-o versiune veche de „Microsoft Access” cu care lucra acest portal dar și design-ul portalului nu este unul bun pentru a reprezenta un consiliu public. Utilizând Drupal dar și noile tehnologii cum ar fi OpenFrameWork am reușit să facem alt aspect vizual dar și este mai avansat in privința eficienții tehnice acestui a portalului.
ELABORAREA ȘI PROIECTAREA PORTALULUI INFORMAȚIONAL
Structura portalului CNAA
Din discuțiile avute cu reprezentații CNAA au fost stabilite următoarele compartimente ale portalului, care au un volum foarte mare ceea ce cauzează o mulțime de legături între compartimente și elaborarea unui design vizual pentru unele din aceste compartimente.
– Despre CNAA
– Mesajul președintelui
– Scurt istoric
– Atribuții și obiective
– Organigrama
– Conducerea
– Organul suprem
– Comisiile
– Aparatul administrativ
– Localizarea CNAA
– Sistemul național de atestare
– Informații generale
– Misiunea
– Obiective
– Grade
– Titluri
– Echivalări
– Traseul examinării dosarelor
– Politici și acte normative
– Politici și strategii
– Concepții
– Acte normative aprobate de:
–- Parlament
–-Guvern
–- CNAA
–- Alte autorități
– Alte documente relevante
– Scopul informațional al atestării
– Susțineri curente:
–- Teze de doctor
–- Teze de doctor habilitat
–- Arhiva
–Dosare în examinare:
–-Grade
–-Titluri
–-Echivalări
–-Formări ale Comisiilor
– Registrul revistelor științifice
– Rapoarte de activitate
– Registrul persoanelor atestate:
–-La grade științifice dr, drhab
–-titluri științifice cu,pu,cc,pc
–-la echivalare
–Registru Tezelor susținute
–Rețeaua de atestare
–Seminare științifice
–-Regulamentul seminarelor de profil
–-Registrul seminarelor de profil
–-Ședințe curente
–-Arhivă
–Consilii științifice specializate
–-Regulamentul CȘS
–-Registrul CȘS curente
–-Ședințe
–-Transmiteri online
–-Arhivă
–Comisii de experți
–-Regulamentul Comisiei de experți
–-Registrul comisiilor de experți
–-Comisii ad-hoc
–-Ședințe
–-Arhivă
–Comisia de Atestare
–-Atribuțiile Comisiei de atestare
–-Componența
–-Ședințe
–-Hotărâri
–-Transmiteri on-line
–-Arhivă
-Sistemul național de acreditare
–Informații generale
–Misiunea
–Obiective
–Principii
–Rapoarte analitice
–Politici și acte normative
–Politici și strategii
–Acte Normative
–-Parlament
–-Guvern
–-CNAA
–-Alte autorități publice
–-Alte documente documente
–Sistemul național de cercetare
–AȘM
–-Membri instituționali
–-Membri de profil
–-Membri afiliați
–Institute de cercetare și dezvoltare
–Instituții de învățământ superior
–Alte organizații
–Acreditare și evaluare în lume
–UE
–CSI
–Alte țări
–Politici
–Instituții publici de evaluare
–Rapoarte
–Instituția de expertiză
–Registrul comisiilor specializate de evaluare
–Comisii specializate în evaluare în activități curente
–Baza de date a experților
–-Naționali
–-Internaționali
–Comisia de acreditare
–Atribuții
–Componența nominală
–Ședințe
–-Agenda
–-Hotărâri
–-Arhivă
–Suportul informațional
–Regulamente
–Instrucțiuni
–Ghiduri
–Manifestări științifice
–Registrul revistelor științifice
–Alte documente relevante
–Organizații acreditare
–Raport de autoevaluare
–Aviz al comisiei specializate de evaluare
–Aprecieri ale performanței
–Fișa sintetică
–Planul de acțiuni
–Sumar privind organizația acreditară
–Organizații în proces de acreditare
–Organizații autoevaluate
–-Rapoarte de autoevaluare
–Organizații evaluate
–-Rapoarte de autoevaluare
–-Avize ale comisiilor specializate de evaluare
–Sumare privind organizații acreditate
–Registrul profilurilor de cercetare comfirmate
-Sistemul Studii doctorale
–Informații generale doctorat
–Misiunea CNAA
–Doctoratul în RM
–Doctoratul în lume
–Rapoarte analitice
–Politici și acte normative
–Politici și acte normative naționale
–Politici și acte normative internaționale
–Planul de admitere în doctorat
–Instituții organizatoare de doctorat
–Personalul științific
–Conducători de doctorat
–Doctoranzi
–Postdoctoranzi
–Persoane care elaborează teze de sine stătător
–Programe de doctorat
–Programele examenelor de doctorat
–Școli doctorale
–în RM
–în lume
–Doctoranzi/Postdoctoranzi
–Doctoranzi
–-Doctoranzi la zi
–-Doctoranzi cu frecvența redusă
–-Doctoranzi de la buget
–-Doctoranzi cu taxă
–Postdoctoranzi
–-Postdoctoranzi de la buget
–-Postdoctoranzi cu taxă
–Absolvenți fără grad
–-de doctor
–-de doctor habilitat
–Persoane care elaborează teze de sine stătător
–-de doctor
–-de doctor habilitat
–Registrul personalului științific
–Doctori habilitați
–Doctori
–Profesori universitari
–Profesori cercetători
–Conferențiari universitari
–Conferențiari cercetători
–Conducători de doctorat
–Regulamentul privind abilitatea cu drept de conducător
–Registrul CD
–Registrul persoanelor străine care participă la pregătirea cadrelor științifice în RM
–Registrul temelor de doctorat în elaborare
–de doctor
–de doctor habilitat
–Consiliul doctoranzilor
–Componența
–Regulamentul
–Activități
–Galerie foto
–Burse doctorale
–Informații pentru doctoranzi
-Sistemul de cercetare și învățământ superior
–Academia de Științe a Moldovei
–Instituții de cercetare și dezvoltare
–Instituții de învățământ superior
–Alte organizații
–Noutăți în științe
–Cercetare și PC-7
–Noutăți în educație
–Educația și procesul de la Bologna
-Acte normative
–Acreditare
–Atestare
–Doctorat
-Transparența decizională
–Agenda ședințelor
–Programul activităților CNAA
–Acte normative în examinare
–Transmisiuni on-line
–Înregistrări video
-Etica și conduita cercetătorului
–Acte privind bună conduită
–Comisia de etică
–Fraude deontologice
-Colaborări
–Naționale
–Academia de Științe a Moldovei
–Ministerul Educației a RM
–Agenția de stat pentru Proprietatea Intelectuală a RM
– Alte ministere și autorități publice
–Alte asociații și societăți
–Internaționale
–Noutăți
–Integrarea Europeană
–Concursuri de proiecte și granturi
–Acorduri bilaterale
–Politici europene în cercetare și educație
–Asigurarea calității
-Manifestări științifice
–Registrul manifestărilor științifice naționale
–Manifestări științifice naționale
–Manifestări științifice internaționale
–Conferințe ale doctoranzilor
-Informare și consultare publică
–Dosare în examinare
–Agenda susținerilor publice
–Instituții în proces de acreditare
–Instrucțiuni și dispoziții
–Înmânarea actelor de calificare
–Propuneri
-Servicii de presă
–Comunicate
–Publicații
–Felicitări
–Aniversări
–Galerie foto
-Transmisiuni on-line
-Propuneri
-Date de contact
-Contor
-Motor de căutare
-Contor site
-Harta site-ului
-Linkuri utile
În versiunea anterioară unele compartimente nu au fost adăugate din cauza de lipsă a surselor și nu erau active până acum. Cele mai dinamice compartimente ale portalului este „Biblioteca on-line”. Din cauza a multor postări în aceste compartimente, acestea pagini uneori pot să se încarce încet sau afișeze cu informația într-un timp mai îndelungat.Fiecare compartiment are și sub compartiment care au o legătură cu compartimentele principale, cu ajutorul modulului „TB Mega Menu”.
Celelalte compartimente, putem spune că sunt statice, în ele se fac rare modificări și sunt afișate ca o postare simplă făcută de un moderator a portalului.
Funcțiile portalului CNAA
Principalele funcții portalului sunt:
Căutare și navigare
Această funcționalitate reprezintă premisa pentru multe dintre succes portaluri web publice, ceea ce înseamnă că un portal de succes ar trebui să sprijine utilizatorii săi într-o vânătoare economic pentru conținutul. De a permite utilizatorului să meargă și să caute date care nu au fost anterior cunoscute a fi relevante pentru rolul utilizatorului care pot fi accesate prin intermediul portalului. În versiunea nouă navigarea pe portal este cu mult mai comodă datorită design-ului simplu și un meniu adaptiv cu multe nivele de sub-meniuri. Permite căutarea tezelor în baza de date după diferite criterii(căutarea după anul, luna și data susținută a tezei, căutarea după alfabet, căutarea după specialitate și căutarea după cele mai populare teze susținute).
Personalizarea
Personalizare este o funcție importantă de a furniza date care se aplică pentru utilizatorii portalului fiecare utilizator primește doar cunoștință de faptul că este special adaptat la dorințele lui Alocarea ar trebui să se bazeze în primul rând pe roluri de utilizator în plus, că preferințele utilizatorului.
Afișarea noutăților, evenimentelor, conferințelor, tezelor etc.
Un portal este bine căutat și este bine găsit pe motoarele de căutare în funcție de activitatea portalului, dacă portalul publică noutăți, avizuri, posturi noi. Afișarea noutăților este mai simplificată cu ajutorul nodurilor legate între compartimente, pentru afișare a unei publicații noi este de ajuns să apăsați butonul „Adaugă Conținut” și alegerea conținutului dorit. Fiecare tip de conținut conține o afișare de câmpuri care vor fi adăugate în dependență de conținut.
Arhivă foto și video
Portalul CNAA a fost lipsit de fișiere foto și video. În versiunea nouă a portalului aceste compartimente sunt adăugate care sunt adaptive pentru orice dispozitiv și pot fi filtrate după anul, luna și ziua în care au fost adăugate fișierele video și foto. Un video poate fi plasat și de pe rețeaua youtube printr-un link adăugat în câmpul video.
Introducerea, editarea și vizualizarea conținutului
Drupal permite o introducere, o editare și vizualizarea informației prin metode mai simple cum ar fi clasificarea cu taxonomie, de a crea liste personalizate, conținut asociat cu alte tipuri de conținut dar și de a crea valori implicite inteligente pentru creatorii de conținut.
Utilizatorii portalului
Drupal cu opțiuni deosebite de control asupra utilizatorilor portalului CNAA. Utilizatorului îi pot fi definite unul sau mai multe roluri și fiecare rol poate fi setat cu permisiunea care permit utilizatorilor să vizualizeze și să creeze ceea cei permite administratorul portalului.
Motor de căutare
Portalul are o căutare simplă și avansată a conținutului, prin căutarea avansată putem alege compartimentul anumit și căutarea v-a căuta anume în acel loc. În căutarea avansată putem căuta după anumite cuvinte cheie și fraze.
Limbi
Portalul informațional CNAA poate fi afișat în 3 limbi diferite: Engleză , Română și Rusă prin apăsarea unui buton.
Limbaje de programare și baza de date utilizată
PHP este un limbaj de programare. Numele PHP provine din limba engleză și este un acronim recursiv : Php: Hypertext Preprocessor. Folosit inițial pentru a produce pagini web dinamice, este folosit pe scară largă în dezvoltarea paginilor și aplicațiilor web.[4] Se folosește în principal înglobat în codul HTML, dar începând de la versiunea 4.3.0 se poate folosi și în mod „linie de comandă” (CLI), permițând crearea de aplicații independente. Este unul din cele mai importante limbaje de programare web open-source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și pentru toate sistemele de operare. Conform statisticilor este instalat pe 20 de milioane de situri web și pe 1 milion de servere web. Este disponibil sub Licența PHP ṣi Free Software Foundation îl consideră a fi un software liber.
Codul PHP se executa de obicei în spațiul de adrese de un server de web cu un interpret PHP încorporat ca un modul. Serverul trimite apoi de ieșire PHP pentru a clientului său. PHP a evoluat, de asemenea, să includă o capacitate de interfață de linie de comandă și poate fi folosit în aplicații grafice de sine stătătoare.
PHP are sute de funcții oferite de funcționalitatea de limbă de bază și mai multe mii disponibile prin diferite extensii; aceste funcții sunt bine documentate în documentația on-line PHP. Cu toate acestea, biblioteca are o mare varietate de numire a convențiilor și inconsecvențe asociate.
MySQL este o alegere populara de baze de date pentru utilizarea în aplicațiile web, și este o componentă centrală de utilizare pe scară largă a software-lui.
Oficialul MySQL Workbench este un mediu integrat gratuit dezvoltat de MySQL, care permite utilizatorilor să administreze grafic baza de date MySQL si a structurilor de baze de date de design vizual. MySQL Workbench înlocuiește pachetul anterior de software, MySQL GUI Tools. MySQL Workbench permite utilizatorilor să gestioneze baze de date de proiectare si modelare, dezvoltare SQL (care înlocuiește MySQL Query Browser) și administrarea bazelor de date (care înlocuiește MySQL Administrator)[6].
PHP este un limbaj care ușor interacționează cu MySQL, care poate comunica cu diverse tehnologii și transfera date între ele. MySQL este una dintre acele limbi care PHP are o intersecțiune foarte bunp, și comunitatea open source este adăugarea în mod constant o structură mai expansiv și util pentru limbaj. Am folosit PHP pentru a deschide conexiunile, legăturile strânse, selectăm datele din baza de date, analiza, și mult mai mult.[16]
Microsoft WebMatrix este o aplicație gratuită de dezvoltare web-cloud conectat pentru Windows. WebMatrix permite dezvoltatorilor să construiască site-uri web folosind template-uri predefinite sau aplicații open-source populare, cu suport complet pentru ASP.NET, PHP, Node.js și HTML. Microsoft a dezvoltat WebMatrix în scopul de a oferi dezvoltatorilor web codare, personalizare, și capabilități de publicare toate într-un singur loc.
Funcțiile Microsoft WebMatrix:
Crearea simplificată, de publicare, de sincronizare și de site-uri cloud.
Integrare cu sisteme de control, inclusiv Git și Team Foundation Server.
Finalizarea codului sursă și evidențierea pentru HTML 5, CSS3, JavaScript.
Editarea de limbaje care fac parte de server ASP.NET, PHP și Node.js.
Suport pentru jQuery, jQuery Mobile,LESS și Sass.
Simulatoare mobile.
Managerul bazelor de date MySQL, MS SQL Server, SQL CE.
Instrumente de implementare pentru fișiere și baze de date.
Implementare pe hosting, servere dedicate sau Windows Azure.
Transfer de fișiere folosind FTP și Web Deploy.
SEO de performanță.
Editare de la distanță și offline.
Descărcarea site-urilor de la distanță pe calculator pentru editare locală.
Microsoft WebMatrix ne aduce o simplificare de a importa site-ul întreg cu toate fișierele și baza de date pe serverul care are funcția de Web Deploy, Web Deploy simplifică implementarea de aplicații web si site-uri Web la serverele IIS. Administratorii pot utiliza Web Deploy pentru a sincroniza servere IIS sau a migra la versiuni mai noi de IIS. Web Deploy este un instrument care permite de asemenea administratorii și utilizatorii de a utiliza IIS Manager pentru a implementa aplicații ASP.NET și PHP pe un server IIS. Web Deploy vă permite să împachetați conținutul aplicației web, configurare, baze de date, precum și orice alte obiecte, cum ar fi registru, ansambluri GAC, etc. care pot fi folosite pentru depozitare sau redistribuire. Dacă pachetul trebuie să fie redistribuit la un mediu diferit, valorile de configurare din cadrul pachetului poate fi parametrizat în timpul desfășurării fără a necesita modificări ale pachetelor înșiși. Odată create, aceste pachete pot fi implementate folosind Web Deploy în linia de comandă sau IIS manager, fără a necesita privilegii administrative.
Web Deploy permite să sincronizăm în mod eficient site-uri, aplicații sau serverele din IIS prin detectarea a diferențelor între sursa și conținutul de destinație și transferarea doar acelor modificări care au nevoie de sincronizare. Instrumentul simplifică procesul de sincronizare prin determinarea în mod automat de configurare, conținutului și ca certificatele să fie sincronizate pentru un anumit site. În plus față de comportamentul implicit, avem în continuare opțiunea de a specifica artefacte suplimentare pentru sincronizare, inclusiv baze de date, obiecte COM, ansambluri GAC și setările de registry.
Descrierea softului
Sistemului de administrare a conținutului Drupal cu care a fost creat portalul are următoare structură:
Depozit de date în care este stocat tot ce este afișat pe portal.
Blocuri și meniu care determină structura paginii afișate și blocul este un modul pentru a afișa o informație anumită, pe lângă asta putem crea blocuri pentru a afișa ceea ce dorim.
Șablonul de pagină care este un xhtml + css cu inserții de cod PHP. În plus, fiecare model include un set de funcții care sunt disponibile pentru editare. Aceasta oferă o mare flexibilitate pentru blocuri de module generate.
Module care în principiu este ocupată de toată suprafața portalului și este elementul principal din sistemul Drupla.
Modulele utilizate pentru crearea protalului informațional CNAA.
-Block: Controlează blocurile vizuale cu care pagina este construită.[14]
-Color: Modulul de culoare permite utilizatorilor de a configurarea site-ul și de a schimba rapid și ușor schema de culori de teme care au fost construite pentru a fi compatibile cu ea.
-Comment: Permite utilizatorilor să comenteze și să discute conținutul publicat.
-Contact: Permite vizitatorilor site-ului să trimită mesaje, email-uri în adresa administratorului site-ului.
-Content Translation: Traduce conținutul site-ului în diferite limbi. Lucrul cu modulul Locale (care gestionează limbile activate și oferă servicii de traduceri pentru interfața site-ului), modulul Content Translation este cheia pentru crearea și menținerea conținutul site-ului tradus.
-Contextual links: Vă permite să adăugați propriile link-uri la scăderea contextual în jos ,widget-uri de blocuri și noduri.
-Dashboard: Utilizatorii pot adăuga widget-uri la paginile lor și să le aranjeze prin utilizarea unui drag-and-drop. Administratorii pot crea widget-uri prin utilizarea de blocuri și noduri definite în cadrul sistemului.
-Database logging: monitorizează sistemul dvs., capturarea de evenimente de sistem într-un jurnal să fie revizuite de către o persoană autorizată la un moment ulterior. Acest lucru este util pentru administratorii site-ului care doresc o privire de ansamblu asupra activităților de pe site-ul lor.
-Field: permite adăugarea câmpurilor de date personalizate pentru a fi atașat la entitățile Drupal (noduri de conținut, utilizatorii, vocabulare din taxonomie, etc) și are grijă de depozitare, încărcare, editare, și redare a datelor.
-Field SQL Storage: oferă gestionare a datelor pentru modulul field. Acest modul folosește API-ul de câmp pentru a genera tabelele de date dinamice pentru entități și câmpuri. În timp ce acest lucru este un modul de bază necesar, acesta poate fi înlocuit cu alte module care implementează API-ul în câmpul de stocare.
-File: Modulul de fișiere vă permite să încărcați și atașa fișiere de conținut și de a gestiona aceste încărcări dacă aveți permisiunile corespunzătoare. Acest modul este responsabil de validarea conținutului a fișierului și gestionarea fișierelor încărcate. Acesta prevede, de asemenea, opțiuni pentru afișarea conținutului fișierului.
-Filter: Pagina de lista de module poate deveni destul de mare atunci când se ocupă cu un site destul de mare. Acest modul are scopul de a realiza capacitatea și de a găsi rapid modulul pe care căutam, fără a fi nevoie să se bazeze pe caracteristica de căutare browsere care de mai multe ori decât nu vă arată numele modulului în "cerut de" sau "depinde de" secțiuni de diversele module sau chiar o altă locație de pe pagină, cum ar fi un element de meniu.
-Image: Acest modul permite utilizatorilor cu permisiuni adecvate pentru a încărca imagini în Drupal. Miniaturi și dimensiunile suplimentare sunt create automat. Imaginile pot fi postate individual la prima pagină, inclus în pagina principală sau grupate în galerii.
-List: Lista definește diverse domenii de activitate pentru stocarea a unei liste de articole, pentru a fi utilizate împreună cu modulul de câmp. De obicei, aceste elemente sunt introduse printr-o listă de selectare, casete de selectare sau butoane radio. Acest modul este un element intern al API-ului.
-Locale: Putem configura un site web Drupal de a utiliza o altă limbă decât engleză și permite configurarea unui site pentru a utiliza mai multe limbi.
-Menu: Meniurile sunt o colecție de link-uri (elemente de meniu), folosite pentru a naviga un site web. Modulul Menu oferă o interfață pentru a controla și personaliza sistemul puternic de meniu care vine cu Drupal.
-Node: Gestionează crearea, editarea, ștergerea, setările, și afișarea conținutul principal a site-ului. Elemente de conținut gestionate de modulul Node sunt de obicei afișate ca pagini de pe site și să includă un titlu, unele meta-date (autor, timp de creare, tipul de conținut, etc), și câmpurile opționale ce conțin text sau alte date.
-Number: Modulul oferă o metodă pentru a configura formate de număr (implicite a site-ului și definite de utilizator), cu puncte zecimale configurabile și mii de sepărătoare.[9]
-Option: Este un modul ce oferă un mecanism mai bun pentru a specifica și selecta lista, caseta, și opțiunile de buton radio.
-Overlay: Afișează interfața de administrare Drupal într-o suprapunere.
-Path: Modulul de cale vă permite să creați URL-uri personalizate pentru căile de Drupal.
-RDF: este un standard W3C pentru modelare și schimbul de cunoștințe distribuite bazat pe o presupunere open-world descentralizate. Orice cunoștințe despre orice poate fi descompusă în camere triple (3-tuple), constând din subiect, predicat, și obiect; în esență, RDF este cel mai mic numitor comun pentru schimbul de date între sisteme.
-Search: Acest modul modifică caseta de căutare implicit în mai multe moduri. Dacă avem nevoie de opțiuni disponibile ca în căutare avansată, dar direct în caseta de căutare, acest modul este creat pentru aceasta.
-Shortcut: Modulul oferă o bară de instrumente în partea de sus a paginii la care puteți adăuga link-uri. Această bară de instrumente este site larg, astfel încât orice link-uri adăugate vor fi vizibile pentru toți utilizatorii care au permisiunea de a vedea bara de instrumente de comenzi rapide. Acest lucru este util pentru crearea de link-uri către pagini frecvent utilizate în cadrul site-ului. Putem organiza aceste link-uri în mai multe seturi de comenzi rapide.
-System: Se ocupă de configurarea generală a site-ului pentru administrator.
-Taxonomy: Oferă site-ului utilizarea a cuvintelor cheie de organizare cunoscute în alte sisteme de ca categorii, tag-uri, sau metadate. Acesta ne permite să ne conectam și clasifica conținutul site-ului. În Drupal, acești termeni sunt adunate în "vocabulare." Modulul Taxonomie ne permite să creem, să gestionăm și să aplicăm aceste vocabulare.
-Text: Definește tipuri de câmp simple în formă de text.
-Tracker: Afișează conținutul cel mai recent adăugat sau actualizat pe site. Modulul Tracker oferă, de asemenea, urmărirea la nivel de utilizator, care ne permite să urmărim contribuțiile autorilor specifice.
-Update manager: Managerul de actualizare verifica periodic pentru noi versiuni ale modulelor și platformeri (inclusiv și teme), și vă avertizează la actualizările disponibile.
-Acquia agent: Îmbunătățește experiența de Drupal prin furnizarea de servicii de sprijin și de rețea pentru a opera un site web fără probleme. Abonați la rețeaua Acquia are acces la serviciile de rețea de la distanță, de documentare și forumurile rețelei Acquia de abonat. Abonamente premium oferă un management de web-based, precum și de e-mail și telefon de sprijin.Aceste module vă permit să conectați orice 6.x Drupal de site-ul Drupal 7.x la rețeaua Acquia. Acquia are, de asemenea, o distribuție de Drupal numit Acquia Drupal, care este compusă doar din open source GPL licențiate și componente.
-Acquia site profile information: Trimite informații detaliate despre site-ul Drupal (status, info, depanare, etc .), la rețeaua Acquia.
-Administration Development Tools: Este un modul addon pentru modulul de Admin, care oferă o navigare cu bara laterală pentru rolurile selectate. Modulul adaugă funcționalitate și acces rapid pentru compensare cache-ului, care rulează cu cron și face actualizări, cum ar fi Admin Menu. În plus, administratorii pot adăuga propriile lor link-uri personalizate prin hook_admin_tools_links.
-Administration meniu: Oferă un meniu de drop-down pentru cele mai multe sarcini administrative și alte destinații comune
-Chaos Tools: Această suită este în primul rând un set de API-uri și instrumente pentru a îmbunătăți experiența de dezvoltator. Acesta conține, de asemenea, un modul numit Page Manager a cărui sarcină este de a gestiona paginile. În special, gestionează paginile de panou, dar pe măsură ce crește, va fi capabil de a gestiona mult mai mult decât doar panouri.
-SQL Server: Driver pentru SQL Server și SQL Azure
-Date: Acest pachet conține atât o dată / timpul ale domen-iului flexibil, Data a tipului de câmp și o dată de API pe care alte module o pot folosi.
-Date all day: Adaugă funcționalitate "All Day" la câmpuri dată, inclusiv o temă "All Day" și casetele "All Day", pentru a selecta Data din widget-uri pop-up.
-Date pop-up: Permite jQuery de a afișa calendare pop-up și widget-uri de intrare de timp pentru selectarea de date și ore.
-Display Suite: Permite să preluăm controlul deplin asupra modului în care este afișat conținutul, folosind o interfata drag-and-drop. Aranjarea nodurilor, opiniilor, comentariilor, datelor de utilizator, așa cum dorim, fără a fi nevoie să lucrăm pe un drum de zeci de fișiere.
-Display Suite UI: Interfață cu utilizatorul pentru gestionarea câmpurilor, vizualizarea de moduri și claselor.
-Content Glider: Nod de afișare în modulul Views Slideshow
-Entity reference: Este utilizată pentru a corela entități (noduri, termeni, utilizatori, etc .) la unul pe altul. Este un modul foarte util, care este ușor de instalat și de utilizat, cu doar câțiva pași.
-Entity UI: Acest modul se extinde în scopul de a oferi un mod unificat de a face entități și proprietățile lor. În plus, acesta oferă un controler, care ajută la simplificarea de crearea a noilor tipuri de entități.
-Entity token: Oferă înlocuiri simbolice pentru toate proprietățile care nu au token-uri și sunt cunoscute pentru API entity.
-GMap: Modulul Gmap oferă o interfață pentru Google Maps API în Drupal. Se integrează cu modulul de amplasare pentru a furniza utilizatorilor o hartă clicabilă pentru introducerea a latitudinei și longitudinei, precum și pentru a afișa hărți de noduri cu Drupal și utilizatori. Gmap poate fi folosit pentru a crea hărți interactive cu diverse markeri de hartă și de conținut în hartă bubbles, profitând de alte caracteristici de management de conținut a Drupal-ului. Modulul oferă, de asemenea, un plugin de afișare Views care permite utilizatorilor să afișeze rezultatele de o vedere pe harta Google.
-GeoField: Oferă un tip de câmp pentru stocarea datelor geografice. Aceste date pot fi atașate la orice entitate, de exemplu, noduri, utilizatori și termeni de taxonomie. Geofield oferă diferite widget-uri pentru introducere de date și formatare de date de ieșire.
-Video Embed Field: Creează un tip de câmp simplu numit Embed video care vă permite să încorporați clipuri video de pe YouTube și Vimeo sau afișa pre vizualizări în miniatură lor, pur și simplu prin introducerea URL-ului videoclipului.
-Language switcher dropdown : Oferă un drop-down pentru a selecta și pentru a comuta între limbile disponibile.
-Localization update: Descărca în mod automat și actualizează traducerile preluate de la localize.drupal.org sau orice alt server de localizare. Acest modul se bazează pe concepte foarte similare la modul de actualizare Drupal de bază.
-Internalization: Aceasta este o colecție de module pentru a extinde Drupalul de bază cu capacități multilingve și să fie capabil de a construi site-ul în mai multe limbi.
-Block languages : Permite selectorul de limbi pentru blocuri și traducere bloc-ului opțional.
-String translation: Oferă sprijin pentru traducerea de șiruri de caractere definite de utilizator.
-geoPHP : Operațiuni de geometrie avansate în PHP
-ColorBox: Integrare excelentă cu stiluri cu câmpul de imagine.
-Pathauto: Modulul generează automat nume de linkuri de URL / calea pentru diferite tipuri de conținut (noduri, termeni taxonomie, utilizatori), fără a cere utilizatorului să specifice manual cale linkului
-Token: Token-uri sunt mici bucati de text care pot fi plasate în documente mai mari, prin substituenți simpli, cum ar fi% site-ul de nume sau utilizator. Modulul Token oferă un API central pentru module de a utiliza aceste token , și expune propriile valori.
-TB Mega Menu: Ne permite să cream un mega meniu cu o interfață de utilizator inovatoare back-end și sincronizate cu meniul de bază Drupal.
-CKeditor: Acest modul ne permite pentru a înlocui câmpurile de textare cu CKEditor – un editor HTML vizual, de obicei numit un editor WYSIWYG. Acest editor de text HTML aduce multe dintre funcțiile puternice de editare WYSIWYG cunoscute ca editori desktop, cum ar fi Word de pe web. Este foarte rapid și nu are nevoie de nici un fel de instalare de pe computerul client.
-Variable: Modulul oferă un registru de metadate despre variabilele Drupal și unele API-uri și administrarea a variabililor cu interfață extinsă.
-Views: Folosind acest modul, ne putem aduce conținutul din baza de date și să-l prezintăm utilizatorului ca liste, posturi, galerii, tabele, hărți, grafice, elementele de meniu, blocuri, rapoarte, mesaje, etc Acesta oferă o interfață grafică pentru o SQL Query Builder, care poate accesa practic orice informație din baza de date și să o afișeze în orice format. Putem folosi, de asemenea, pentru a prezenta vizualizări legate de conținut. De exemplu, putem afișa o listă de utilizatori, împreună cu link-uri către conținutul pe care l-am creat.
-ViewsSlideshow: poate fi folosit pentru a crea un slideshow de orice conținut (nu doar imagini), care pot apărea într-o vizualizare. Este creat de Jquery, este puternic personalizabil: putem alege setările de prezentare pentru fiecare View creat.
-XML Sitemap: Modulul de sitemap XML creează un sitemap care este conform cu caietul de sarcini sitemaps.org. Acest lucru ajută motoarele de căutare să acceseze cu rapiditate și mai inteligent un site web și să păstreze rezultatele lor până la o anumită dată. Sitemap-ul creat de către modulul poate fi prezentat în mod automat în Google, Bing și motoarele de căutare Yahoo!. Modulul de asemenea, vine cu mai multe submodule, care pot adăuga linkuri sitemap pentru conținutul, element de meniu, termeni de taxonomie, și profiluri de utilizator.
-Webform: este modul de a face anchete în Drupal. După o depunere, utilizatorilor pot fi trimise un e-mail de primire, precum și trimiterea unei notificări la administratori. Rezultatele pot fi exportate în Excel sau alte aplicații de calcul tabelar. Webform oferă, de asemenea, unele funcții de revizuire și statistice de bază și are și API extins pentru extinderea caracteristicile sale.
-Panels: Permite administratorului de site pentru a crea machete personalizate pentru utilizări multiple. În centrul său este un drag and drop manager de conținut care vă permite elaborarea unui design vizual, un conținut cu aspect și locul în care aspectul se va afla. Integrarea cu alte sisteme permite crearea nodurilor care folosesc aceste pagini de destinație, și chiar trece peste paginile de sistem, cum ar fi taxonomie și pagina de nod, astfel încât să putem personaliza aspectul site-ului cu permisiuni de granulație foarte fina.
-Feature: permite captarea și managementul de caracteristici în Drupal. O caracteristică este o colecție de entități Drupal care sunt luate împreună pentru a satisface un anumit caz de utilizare. Caracteristicile oferă un UI și API pentru a lua diferite elemente de construcție a portalului de la module cu funcția de export și grupare într-un singur modul de caracteristică.
Concluzie Capitolul 2.
Portalul informațional elaborat are o structură complicată dar din altă parte și bine înțeleasă, proiectarea structurii a portalului a fost afișată pe portal în 2 meniu-uri, unul în partea de sus și unul în partea din stângă a portalului. Fiecărui compartiment a fost adăugat un tip de conținut care a simplificat adăugarea conținutului în fiecare categorie.
După elaborarea structurii am folosit noduri pentru a lega fiecare compartiment, ceea ce a folosit un avantaj pentru afișarea paginilor. Limbajul PHP a fost de folos pentru modificarea și elaborarea modulelor pentru CMS-ul drupal. Microsoft Web Matrix a fost de folos pentru importarea bazei de date și fișierelor portalului cu ajutorul Web Deploy.
Portalul informațional CNAA a fost elaborat utilizând micro baze de date de care se folosesc listele tezelor, conducătorilor etc. Drupal automat adaugă în baza de date informația nouă introdusă în aceste compartimente, de asemenea și legăturile sunt conduse tot după aceste funcții
EXPLOATAREA PORTALULUI INFORMAȚIONAL
Ghidul utilizatorului
În partea de sus a portalului CNAA sunt plasate 3 butoane pentru schimbarea interfeței în 3 limbi diferite și motorul de căutare.
Motorul de căutare este unul simplu, e de ajuns să scrii cuvântul necesar și motorul îl v-a găsi, dar este și o căutare avansată a materialului.
Meniul de sus a portalului reprezintă rubricile șu sub-rubricile principale ale CNAA.
Meniul din partea stângă a portalului are o listă care dispune de alte informații ale CNAA
Prima pagină conține o listă de noutăți noi adăugate pe portal
Accesând orice compartiment ales, trecem la altă pagină
Ghidul Programatorului
Butoanele pentru schimbarea limbii au fost create cu ajutorul modul-ului deja existent în nucleul la Drupal 7 ca și motorul de căutare.
Framework-ul ales are deja unile funcții ale lui și stiluri, de aici și meniul de sus are efectul de drop-down.
Meniul din partea stângă a fost elaborat cu ajutorul modulului TBMegaMenu.
Portalul CNAA este compus din pagini statice și dinamice. La unele pagini dinamice a fost selectat un anumit stil de afișare pentru o navigație mai ușoară cu ajutorul modul-ului Views, 80% din paginile de pe portal sunt legate cu ajutorul modul-ului node.
Slider-ul a fost creat de modulul Content Glider.
Toate tipurile de conținut sunt legate cu ajutorul taxonomiei
Unele pagini cum sunt tezele, doctoranzi etc. sunt modificate pentru o afișare mai detaliată și într-un mod diferit cu ajutorul views
În tipurile de conținut sunt adăugate câmpuri pentru introducerea a informațiilor cum ar surse video, fotografii, fișiere etc.
Mapa pentru localizarea CNAA a fost făcută cu ajutorul modulului Google Map.
În modulul views am introdus tipurile de conținut noi, pentru afișarea slider-ului și pagina principală cu noutăți.
În panoul de administrare, rubrica „Administrator” putem schimba mărimea fotografiei, mărimea fișierelor încărcate pe portal, denumirea portalului, sloganul, și porni funcția de „CRON” pentru primi notificări de actualizări noi pe care Drupal le are.
Concluzii la capitolul 3.
După elaborarea portalului CNAA am folosit un set de module care a ajutat la dezvoltarea portalului într-un mod mai ușuratic și cu un timp mai micșorat. Fiecare compartimente au fost proiectate în așa fel ca să fie afișate într-un mod separat față de altele. În panoul de administrare a fost adăugat funcția de pop-down ceea ce face o navigație în el mai ușoară față de versiunea simplă. Navigația pe portal este una nu prea complicat pentru administrator cât si pentru un simplu utilizator.
CONCLUZII GENERALE ȘI RECOMANDĂRI
Sistemul de administrare de conținut Drupal este un CMS popular și bine documentat . Drupal are o structura a site-ului eficient, bazat pe public – un mix de putere și de utilizatorii non-tehnici . Pentru o funcționalitate tehnică mai ușoară , cum ar fi adăugarea unui nou post pe site-ul ,Drupal este relativ simplu de configurat pentru a utiliza , cu toate acestea , lipsa de opțiuni configurabile limitează și poate fi uneori frustrant pentru mai mulți utilizatori tehnice. Drupal, pe de altă parte, este o a doua generație. Aceasta înseamnă că o mulțime de funcționalități noi sau personalizate pot fi create în interfața cu utilizatorul, fără programare. Făcând acest lucru, se ia mai puțin timp și se poate face de către un utilizator simplu care nu are multe capacități în programare. Acest lucru diminuează dependența pe furnizorii de servicii și oferă libertatea de a face ajustări și dezvoltarea simplă de singur stătător.
Drupal are multe instrumente pentru organiza, structura, găsi și re-utiliza conținutul, clasifica cu taxonomie, a crea în mod automat URL-uri, de a crea liste personalizate, conținut asociat cu alte tipuri de conținut de pe site., și de a crea implicite inteligente pentru creatorii de conținut.
Rezultatele principale ale lucrării sunt următoarele:
A fost realizate mai multe noduri între conținuturi cum ar fi: listarea, sortare prin, și de a gestiona tot conținutul de pe site, setări implicite pentru modul în care sunt afișate toate mesajele, listarea și configurarea tipului de conținut.
A fost elaborate mai multe pagini care sunt afișate într-un mod diferit decât altele cum ar fi: afișarea pe pagină a unui bloc cu 5 posturi a ședințelor recente, de a afișa filtrarea conținutului după o anumită dată, afișarea conținutului într-o formă de tabel sau listă.
Au fost realizate mai multe vocabulare pentru a uni tipurile de conținut cum ar fi: afișarea lista tezelor concomitent cu conducătorii a tezei.
A fost realizat un modul pentru schimbarea limbii de pe site: rusă, română,engleză
Design-ul elaborat este elaborat într-un fel mai simplificat pentru o căutare rapidă a informației necesare, și în cauză de necesitate se poate folosi și motorul de căutare de pe site care are o filtrare avansată.
Portalul informațional elaborat după modelul propus este recomandat pentru Consiliul Național pentru Acreditare și Atestare. Simplificarea de adăugare a conținutului permite plasarea informației pe site cu un singur click pe „Adaugă Conținut” de către persoana care v-a administra site-ul. În acest portal informațional poate fi introdusă și o altă asociație care are legătură cu CNAA.
Bibliografie
Andreas Mauthe, Peter Thomas Professional content management system England, 2004.
http://books.google.md/books?id=Oqd5i0rv8PIC&printsec=frontcover&hl=ru&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false (vizitat 27.02.2014)
Angie Radtke Joomla Templates Indiana, 2012 http://it-ebooks.info/read/1042/ (vizitat 03.03.2014)
Aaron Brazell WordPress Bible Indiana, 2010 http://it-ebooks.info/read/1887/ (vizitat 20.03.2014)
About php.
http://www.homeandlearn.co.uk/php/php1p1.html (vizitat 06.04.2014)
Access control in Drupal
http://www.siteground.com/tutorials/drupal/drupal_access_control.htm (vizitat 11.04.2014)
Connecting MySQL DataBase to WebMatrix
http://www.microsoft.com/web/post/connecting-to-a-sql-server-or-mysql-database-in-webmatrix (vizitat 07.04.2014)
Custom page with css and javascript
http://wearepropeople.com/blog/7-ways-to-add-custom-js-and-css-to-a-page-in-drupal (vizita 18.04.2014).
Dan Rahmel Advanced Joomla New York, 2013 http://it-ebooks.info/read/2395/ (vizitat 10.03.2014)
Drupal modules
http://www.siteground.com/tutorials/drupal/drupal_modules.htm (vizitat 09.04.2014)
Drupal Themes
http://www.siteground.com/tutorials/drupal/drupal_themes.htm (vizitat 10.04.2014)
Drupal Engine Optimization
http://www.siteground.com/tutorials/drupal/drupal_sef.htm (vizitat 10.04.2014)
Dynamic css files
http://www.lullabot.com/blog/article/dynamic-css-files-drupal (vizitat 20.04.2014)
Dani Nordin Design and Prototyping for Drupal Sebastopol, 2011 http://it-ebooks.info/read/354/ (vizitat 29.04.2014)
Earl Miles, Lynette Miles Drupal’s Building Blocks Indiana, 2010 http://it-ebooks.info/read/1501/ (vizitat pe 29.04.2014)
Flexibility WordPress http://coderoom.wordpress.com/2010/04/16/code-for-flexibility-a-manifesto/ (vizitat 10.05.2014)
Import MySQL database
http://support.minitab.com/en-us/minitab/17/topic-library/minitab-environment/input-output/import-data-from-a-database-with-odbc/import-data-from-mysql-server/ (vizitat 07.04.2014)
Jeff Sheltren, Narayan Newton, Nathaniel Catchpole High Performance Drupal England, 2013. http://it-ebooks.info/read/3090/ (vizitat 02.03.2014)
Jennifer Marriott, Elin Waring The Official Joomla book Indiana 2010 http://it-ebooks.info/read/2615/ (vizitat 08.03.2014)
Mick Olinik, Raena Jackson Armitage The WordPress Anthology Austalia, 2011 http://it-ebooks.info/read/1180/ (vizitat 26.03.2014)
Open Framework.https://openframework.stanford.edu/ (vizitat 2.04.2014)
Overview of Drupal taxonomy
http://friendlymachine.net/posts/overview-drupal-taxonomy (vizitat 09.04.2014)
PHP is user for.
http://php.about.com/od/phpbasics/qt/what_is_php_used_for.htm (vizitat 06.04.2014)
PHP filter in drupal
http://www.valuebound.com/blog/enabling-php-filter-drupal-7-core-what-can-go-wrong (vizitat 22.04.2014)
Responsive theming in Drupal
http://www.creativebloq.com/web-design/create-responsive-drupal-theme-9134569 (vizitat 18.04.2014)
Sammy Spets Programming Drupal 7 Entities Mumbai, 2013, http://it-ebooks.info/read/2955/ (vizitat 06.03.2014)
Stephanie Leary Beggining WordPress United States of America, 2010 http://www.it-ebooks.info/read/463/ (vizitat 12.03.2014)
Stephanie Leary Beginnig WordPress 3 United States of America, 2010 http://www.it-ebooks.info/read/463/ (vizitat 02.05.2014)
Todd Tomlinson Beginnig Drupal 7 Colorado, 2013 http://it-ebooks.info/read/468/ (vizitat 02.03.2014
Tagging the content in drupal
http://www.drupalace.com/EDAM/taxonomy-tagging-your-content (vizitat 16.04.2014)
The periodic table of drupal modules
http://www.amazeelabs.com/en/blog/periodic-table-drupal-modules-infographic (vizitat 16.04.2014)
ANEXA 1.
<?php
function open_framework_preprocess_html(&$vars) {
// theme option variables
$vars['content_order_classes'] = theme_get_setting('content_order_classes');
$vars['front_heading_classes'] = theme_get_setting('front_heading_classes');
$vars['breadcrumb_classes'] = theme_get_setting('breadcrumb_classes');
$vars['border_classes'] = theme_get_setting('border_classes');
$vars['corner_classes'] = theme_get_setting('corner_classes');
$vars['body_bg_type'] = theme_get_setting('body_bg_type');
$vars['body_bg_classes'] = theme_get_setting('body_bg_classes');
$vars['body_bg_path'] = theme_get_setting('body_bg_path');
}
function open_framework_js_alter(&$javascript) {
// Update jquery version for non-administration pages
if (arg(0) != 'admin' && arg(0) != 'panels' && arg(0) != 'ctools' && !(module_exists('jquery_update'))) {
$jquery_file = drupal_get_path('theme', 'open_framework') . '/js/jquery-1.9.1.min.js';
$jquery_version = '1.9.1';
$migrate_file = drupal_get_path('theme', 'open_framework') . '/js/jquery-migrate-1.2.1.min.js';
$migrate_version = '1.2.1';
$form_file = drupal_get_path('theme', 'open_framework') . '/js/jquery-form-3.31.0.min.js';
$form_version = '3.31.0';
$javascript['misc/jquery.js']['data'] = $jquery_file;
$javascript['misc/jquery.js']['version'] = $jquery_version;
$javascript['misc/jquery.js']['weight'] = 0;
$javascript['misc/jquery.js']['group'] = -101;
drupal_add_js($migrate_file);
if (isset($javascript["$migrate_file"])) {
$javascript["$migrate_file"]['version'] = $migrate_version;
$javascript["$migrate_file"]['weight'] = 1;
$javascript["$migrate_file"]['group'] = -101;
}
if (isset($javascript['misc/jquery.form.js'])) {
$javascript['misc/jquery.form.js']['data'] = $form_file;
$javascript['misc/jquery.form.js']['version'] = $form_version;
$javascript['misc/jquery.form.js']['weight'] = 2;
$javascript['misc/jquery.form.js']['group'] = -101;
}
}
}
function open_framework_preprocess_page(&$vars) {
// Add page template suggestions based on the aliased path. For instance, if the current page has an alias of about/history/early, we'll have templates of:
// page-about-history-early.tpl.php, page-about-history.tpl.php, page-about.tpl.php
// Whichever is found first is the one that will be used.
if (module_exists('path')) {
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
if ($alias != $_GET['q']) {
$template_filename = 'page';
foreach (explode('/', $alias) as $path_part) {
$template_filename = $template_filename . '-' . $path_part;
$vars['template_files'][] = $template_filename;
}
}
}
// Get the entire main menu tree
$main_menu_tree = menu_tree_all_data('main-menu');
// Add the rendered output to the $main_menu_expanded variables
$vars['main_menu_expanded'] = menu_tree_output($main_menu_tree);
// Primary nav
$vars['primary_nav'] = FALSE;
if ($vars['main_menu']) {
// Build links
$vars['primary_nav'] = menu_tree(variable_get('menu_main_links_source', 'main-menu'));
// Provide default theme wrapper function
$vars['primary_nav']['#theme_wrappers'] = array('menu_tree__primary');
}
// Secondary nav
$vars['secondary_nav'] = FALSE;
if ($vars['secondary_menu']) {
// Build links
$vars['secondary_nav'] = menu_tree(variable_get('menu_secondary_links_source', 'user-menu'));
// Provide default theme wrapper function
$vars['secondary_nav']['#theme_wrappers'] = array('menu_tree__secondary');
}
// Checks if tabs are set
if (!isset($vars['tabs']['#primary'])) $vars['tabs']['#primary'] = FALSE;
// Replace tabs with drop down version
$vars['tabs']['#primary'] = _bootstrap_local_tasks($vars['tabs']['#primary']);
// Add variable for site title
$vars['my_site_title'] = variable_get('site_name');
}
function open_framework_preprocess_block(&$vars) {
// Count number of blocks in a given theme region
$vars['block_count'] = count(block_list($vars['block']->region));
}
/**
* Determines if the region has at least one block for this user
*
* @param $region
* A string containing the region name
*
* @return
* TRUE if the region has at least one block. FALSE if it doesn't.
*/
function open_framework_region_has_block($region) {
$number_of_blocks = count(block_list($region));
if ($number_of_blocks > 0) {
return TRUE;
}
else {
return FALSE;
}
}
/**
* Determine the span for a blocka
*
* @param $block_count
* The number of blocks in the region
*
* @param $block_id
* The position of the block (starts at 1)
*
* @param $count_sidebars
* A boolean indicating whether sidebars should be counted
*
* @return
* The span value for the block at this location and region
*/
function open_framework_get_span($block_count, $block_id, $count_sidebars) {
// @petechen (6.27.12) This method of applying a value to span assumes that there
// is at least 1 block. If there are no blocks, you end up with a calculation
// dividing by 0 generating a php error. Suggest the following change:
// default span if calculations fail
// Use this default value instead as an "else" condition below:
// $span = 12;
// there are 12 columsn in bootstrap
$available_width = 12;
if ($count_sidebars) {
// we assume that the left and right regions have a span of 3
// if present, we remove that much from the available width
if (open_framework_region_has_block('sidebar_first')) {
$available_width = $available_width – 0;
}
if (open_framework_region_has_block('sidebar_second')) {
$available_width = $available_width – 0;
}
}
// @petechen – surroung this condition with another if else to account for $block_count = 0
if ($block_count != 0) {
// if the number of blocks divides evenly into the available width, that's our span width
if (($available_width % $block_count) == 0) {
$span = $available_width / $block_count;
}
// if the number of blocks does not divide evenly, we look up the span widths in an array
// where then indexes are available width, number of blocks, and block position
// e.g. [9][2][1] is the span of the first block, out of two when the available width is 9.
else {
$exceptions[6][4][1] = 2;
$exceptions[6][4][2] = 2;
$exceptions[6][4][3] = 1;
$exceptions[6][4][4] = 1;
$exceptions[6][5][1] = 1;
$exceptions[6][5][2] = 1;
$exceptions[6][5][3] = 1;
$exceptions[6][5][4] = 1;
$exceptions[6][5][5] = 1;
$exceptions[9][2][1] = 3;
$exceptions[9][2][2] = 6;
$exceptions[9][4][1] = 3;
$exceptions[9][4][2] = 2;
$exceptions[9][4][3] = 2;
$exceptions[9][4][4] = 2;
$exceptions[9][5][1] = 3;
$exceptions[9][5][2] = 1;
$exceptions[9][5][3] = 1;
$exceptions[9][5][4] = 1;
$exceptions[9][5][5] = 3;
$exceptions[9][6][1] = 2;
$exceptions[9][6][2] = 2;
$exceptions[9][6][3] = 2;
$exceptions[9][6][4] = 1;
$exceptions[9][6][5] = 1;
$exceptions[9][6][6] = 1;
$exceptions[12][5][1] = 3;
$exceptions[12][5][2] = 2;
$exceptions[12][5][3] = 2;
$exceptions[12][5][4] = 2;
$exceptions[12][5][5] = 3;
$span = $exceptions[$available_width][$block_count][$block_id];
}
return $span;
}
// @petechen: so if $block_count = 0, use this as the default
else $span = 12;
}
/**
* Returns HTML for status and/or error messages, grouped by type.
*/
function open_framework_status_messages($variables) {
$display = $variables['display'];
$output = '';
$status_heading = array(
'status' => t('Status message'),
'error' => t('Error message'),
'warning' => t('Warning message'),
);
// Map Drupal message types to their corresponding Bootstrap classes.
// @see http://twitter.github.com/bootstrap/components.html#alerts
$status_class = array(
'status' => 'success',
'error' => 'error',
'warning' => 'info',
);
foreach (drupal_get_messages($display) as $type => $messages) {
$class = (isset($status_class[$type])) ? ' alert-' . $status_class[$type] : '';
$output .= "<div class=\"alert alert-block$class\">\n";
if (arg(0) != 'admin' && arg(0) != 'panels' && arg(0) != 'ctools') {
$output .= " <a class=\"close\" data-dismiss=\"alert\" href=\"#\">x</a>\n";
}
if (!empty($status_heading[$type])) {
$output .= '<h2 class="element-invisible">' . $status_heading[$type] . "</h2>\n";
}
if (count($messages) > 1) {
$output .= " <ul>\n";
foreach ($messages as $message) {
$output .= ' <li>' . $message . "</li>\n";
}
$output .= " </ul>\n";
}
else {
$output .= $messages[0];
}
$output .= "</div>\n";
}
return $output;
}
/* Search Form Block */
function search_preprocess_block(&$variables) {
if ($variables['block']->module == 'search') {
$variables['attributes_array']['role'] = 'search';
}
}
function open_framework_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'search_block_form') {
$form['search_block_form']['#title_display'] = 'invisible';
$form['search_block_form']['#attributes']['class'][] = 'input-medium search-query';
$form['search_block_form']['#attributes']['placeholder'] = t('Search this site…');
$form['actions']['submit']['#attributes']['class'][] = 'btn-search';
$form['actions']['submit']['#attributes']['alt'] = t('Search');
unset($form['actions']['submit']['#value']);
$form['actions']['submit']['#type'] = 'image_button';
$form['actions']['submit']['#src'] = drupal_get_path('theme', 'open_framework') . '/images/searchbutton.png';
}
}
/* Returns HTML for primary and secondary local tasks. */
function open_framework_menu_local_tasks(&$vars) {
$output = '';
if ( !empty($vars['primary']) ) {
$vars['primary']['#prefix'] = '<h2 class="element-invisible">' . t('Primary tabs') . '</h2>';
$vars['primary']['#prefix'] = '<ul class="nav nav-tabs">';
$vars['primary']['#suffix'] = '</ul>';
$output .= drupal_render($vars['primary']);
}
if ( !empty($vars['secondary']) ) {
$vars['primary']['#prefix'] = '<h2 class="element-invisible">' . t('Primary tabs') . '</h2>';
$vars['secondary']['#prefix'] = '<ul class="nav nav-pills">';
$vars['secondary']['#suffix'] = '</ul>';
$output .= drupal_render($vars['secondary']);
}
return $output;
}
/* Returns HTML for primary and secondary local task. */
function open_framework_menu_local_task($vars) {
$link = $vars['element']['#link'];
$link_text = $link['title'];
$classes = array();
if (!empty($vars['element']['#active'])) {
// Add text to indicate active tab for non-visual users.
$active = '<span class="element-invisible">' . t('(active tab)') . '</span>';
// If the link does not contain HTML already, check_plain() it now.
// After we set 'html'=TRUE the link will not be sanitized by l().
if (empty($link['localized_options']['html'])) {
$link['title'] = check_plain($link['title']);
}
$link['localized_options']['html'] = TRUE;
$link_text = t('!local-task-title!active', array('!local-task-title' => $link['title'], '!active' => $active));
$classes[] = 'active';
}
return '<li class="' . implode(' ', $classes) . '">' . l($link_text, $link['href'], $link['localized_options']) . "</li>\n";
}
function open_framework_menu_tree(&$vars) {
return '<ul class="menu nav">' . $vars['tree'] . '</ul>';
}
/*
* Implements hook_menu_link
* Apply bootstrap menu classes to all menu blocks in the
* navigation region and the main-menu block by default.
* Note: if a menu is in the navigation and somewhere else as well,
* both instances of the menu will have the classes applied,
* not just the one in the navigation
*/
function open_framework_menu_link(array $vars) {
$element = $vars['element'];
if (open_framework_is_in_nav_menu($element)) {
$sub_menu = '';
if ($element['#below']) {
// Add our own wrapper
unset($element['#below']['#theme_wrappers']);
$sub_menu = '<ul class="dropdown-menu">' . drupal_render($element['#below']) . '</ul>';
$element['#localized_options']['attributes']['class'][] = 'dropdown-toggle';
$element['#localized_options']['attributes']['data-toggle'] = 'dropdown';
// Check if this element is nested within another
if ((!empty($element['#original_link']['depth'])) && ($element['#original_link']['depth'] > 1)) {
// Generate as dropdown submenu
$element['#attributes']['class'][] = 'dropdown-submenu';
}
else {
// Generate as standard dropdown
$element['#attributes']['class'][] = 'dropdown';
$element['#localized_options']['html'] = TRUE;
$element['#title'] .= ' <span class="caret"></span>';
}
// Set dropdown trigger element to # to prevent inadvertant page loading with submenu click
$element['#localized_options']['attributes']['data-target'] = '#';
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
} else {
$element = $vars['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
}
/**
* Get all primary tasks including subsets
*/
function _bootstrap_local_tasks($tabs = FALSE) {
if ($tabs == '') {
return $tabs;
}
if (!$tabs) {
$tabs = menu_primary_local_tasks();
}
foreach ($tabs as $key => $element) {
$result = db_select('menu_router', NULL, array('fetch' => PDO::FETCH_ASSOC))
->fields('menu_router')
->condition('tab_parent', $element['#link']['path'])
->condition('context', MENU_CONTEXT_INLINE, '<>')
->condition('type', array(MENU_DEFAULT_LOCAL_TASK, MENU_LOCAL_TASK), 'IN')
->orderBy('weight')
->orderBy('title')
->execute();
$router_item = menu_get_item($element['#link']['href']);
$map = $router_item['original_map'];
$i = 0;
foreach ($result as $item) {
_menu_translate($item, $map, TRUE);
//only add items that we have access to
if ($item['tab_parent'] && $item['access']) {
//set path to that of parent for the first item
if ($i === 0) {
$item['href'] = $element['#link']['href'];
}
if (current_path() == $item['href']) {
$tabs[$key][] = array(
'#theme' => 'menu_local_task',
'#link' => $item,
'#active' => TRUE,
);
}
else {
$tabs[$key][] = array(
'#theme' => 'menu_local_task',
'#link' => $item,
);
}
//only count items we have access to.
$i++;
}
}
}
return $tabs;
}
/*
* Find out if an element (a menu link) is a link displayed in the
* navigation region for the user. We return true by default if this is a
* menu link in the main-menu. Open Framework treats the main-menu
* as being in the navigation by default.
* We are using the theming functions to figure out the block IDs.
* The block IDs aren't passed to this function, but theming function names are,
* and those are baed on the block ID.
*
*/
function open_framework_is_in_nav_menu($element) {
// #theme holds one or more suggestions for theming function names for the link
// simplify things by casting into an array
$link_theming_functions = (array)$element['#theme'];
// Avoid calculating this more than once
$nav_theming_functions = &drupal_static(__FUNCTION__);
// if not done yet, calculate the names of the theming function for all the blocks
// in the navigation region
if (!isset($nav_theming_functions)) {
// get all blocks in the navigation region
$blocks = block_list('navigation');
// Blocks placed using the context module don't show up using Drupal's block_list
// If context is enabled, see if it has placed any blocks in the navigation area
// See: http://drupal.org/node/785350
$context_blocks = array();
if (module_exists('context')) {
$reaction_block_plugin = context_get_plugin('reaction', 'block');
$context_blocks = $reaction_block_plugin->block_list('navigation');
}
$blocks = array_merge($blocks, $context_blocks);
// extract just their IDs (<module>_<delta>)
$ids = array_keys($blocks);
// translate the ids into function names for comparison purposes
$nav_theming_functions = array_map('open_framework_block_id_to_function_name', $ids);
}
// if there is nothing in the navigation section, the main menu is added automatically, so
// we watch for that.
// 'menu_link__main_menu' is the theming function name for the main-menu
if ((empty($nav_theming_functions)) && (in_array('menu_link__main_menu', $link_theming_functions))) {
return TRUE;
};
// Find out if any of the theming functions for the blocks are the same
// as the theming functions for the link.
$intersect = array_intersect($nav_theming_functions, $link_theming_functions);
if ((!empty($intersect))) {
return TRUE;
}
else {
return FALSE;
}
}
/*
* Convert a block id to a theming function name
*/
function open_framework_block_id_to_function_name ($id) {
// if a system block, remove 'system_'
$id = str_replace('system_', '', $id);
// recognize menu and block_menu module blocks
if (strpos($id, 'menu_block_') === false) {
// if a menu block but not a menu_block block, remove menu_
$id = str_replace('menu_', '', $id);
}
else {
// if a menu_block block, keep menu_block, but add an
// underscore. Not sure why this is different from other
// core modules
$id = str_replace('menu_block_', 'menu_block__', $id);
}
// massage the id to looks like a theming function name
// use the same function used to create the name of theming function
$id = strtr($id, '-', '_');
$name = 'menu_link__' . $id;
return $name;
}
/*
* Show or hide breadcrumb based on theme setting selection
*/
function open_framework_breadcrumb(&$variables) {
$output = '';
$breadcrumb = $variables['breadcrumb'];
$show_breadcrumb = theme_get_setting('breadcrumb_classes');
if ($show_breadcrumb == 'show-breadcrumb ') {
if (!empty($breadcrumb)) {
// Provide a navigational heading to give context for breadcrumb links to
// screen-reader users. Make the heading invisible with .element-invisible.
$output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
$output .= '<div class="breadcrumb">' . implode(' » ', $breadcrumb) . '</div>';
} else {
$output = '<div class="breadcrumb">' . t('Home') . '</div>';
}
}
return $output;
}
Bibliografie
Andreas Mauthe, Peter Thomas Professional content management system England, 2004.
http://books.google.md/books?id=Oqd5i0rv8PIC&printsec=frontcover&hl=ru&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false (vizitat 27.02.2014)
Angie Radtke Joomla Templates Indiana, 2012 http://it-ebooks.info/read/1042/ (vizitat 03.03.2014)
Aaron Brazell WordPress Bible Indiana, 2010 http://it-ebooks.info/read/1887/ (vizitat 20.03.2014)
About php.
http://www.homeandlearn.co.uk/php/php1p1.html (vizitat 06.04.2014)
Access control in Drupal
http://www.siteground.com/tutorials/drupal/drupal_access_control.htm (vizitat 11.04.2014)
Connecting MySQL DataBase to WebMatrix
http://www.microsoft.com/web/post/connecting-to-a-sql-server-or-mysql-database-in-webmatrix (vizitat 07.04.2014)
Custom page with css and javascript
http://wearepropeople.com/blog/7-ways-to-add-custom-js-and-css-to-a-page-in-drupal (vizita 18.04.2014).
Dan Rahmel Advanced Joomla New York, 2013 http://it-ebooks.info/read/2395/ (vizitat 10.03.2014)
Drupal modules
http://www.siteground.com/tutorials/drupal/drupal_modules.htm (vizitat 09.04.2014)
Drupal Themes
http://www.siteground.com/tutorials/drupal/drupal_themes.htm (vizitat 10.04.2014)
Drupal Engine Optimization
http://www.siteground.com/tutorials/drupal/drupal_sef.htm (vizitat 10.04.2014)
Dynamic css files
http://www.lullabot.com/blog/article/dynamic-css-files-drupal (vizitat 20.04.2014)
Dani Nordin Design and Prototyping for Drupal Sebastopol, 2011 http://it-ebooks.info/read/354/ (vizitat 29.04.2014)
Earl Miles, Lynette Miles Drupal’s Building Blocks Indiana, 2010 http://it-ebooks.info/read/1501/ (vizitat pe 29.04.2014)
Flexibility WordPress http://coderoom.wordpress.com/2010/04/16/code-for-flexibility-a-manifesto/ (vizitat 10.05.2014)
Import MySQL database
http://support.minitab.com/en-us/minitab/17/topic-library/minitab-environment/input-output/import-data-from-a-database-with-odbc/import-data-from-mysql-server/ (vizitat 07.04.2014)
Jeff Sheltren, Narayan Newton, Nathaniel Catchpole High Performance Drupal England, 2013. http://it-ebooks.info/read/3090/ (vizitat 02.03.2014)
Jennifer Marriott, Elin Waring The Official Joomla book Indiana 2010 http://it-ebooks.info/read/2615/ (vizitat 08.03.2014)
Mick Olinik, Raena Jackson Armitage The WordPress Anthology Austalia, 2011 http://it-ebooks.info/read/1180/ (vizitat 26.03.2014)
Open Framework.https://openframework.stanford.edu/ (vizitat 2.04.2014)
Overview of Drupal taxonomy
http://friendlymachine.net/posts/overview-drupal-taxonomy (vizitat 09.04.2014)
PHP is user for.
http://php.about.com/od/phpbasics/qt/what_is_php_used_for.htm (vizitat 06.04.2014)
PHP filter in drupal
http://www.valuebound.com/blog/enabling-php-filter-drupal-7-core-what-can-go-wrong (vizitat 22.04.2014)
Responsive theming in Drupal
http://www.creativebloq.com/web-design/create-responsive-drupal-theme-9134569 (vizitat 18.04.2014)
Sammy Spets Programming Drupal 7 Entities Mumbai, 2013, http://it-ebooks.info/read/2955/ (vizitat 06.03.2014)
Stephanie Leary Beggining WordPress United States of America, 2010 http://www.it-ebooks.info/read/463/ (vizitat 12.03.2014)
Stephanie Leary Beginnig WordPress 3 United States of America, 2010 http://www.it-ebooks.info/read/463/ (vizitat 02.05.2014)
Todd Tomlinson Beginnig Drupal 7 Colorado, 2013 http://it-ebooks.info/read/468/ (vizitat 02.03.2014
Tagging the content in drupal
http://www.drupalace.com/EDAM/taxonomy-tagging-your-content (vizitat 16.04.2014)
The periodic table of drupal modules
http://www.amazeelabs.com/en/blog/periodic-table-drupal-modules-infographic (vizitat 16.04.2014)
ANEXA 1.
<?php
function open_framework_preprocess_html(&$vars) {
// theme option variables
$vars['content_order_classes'] = theme_get_setting('content_order_classes');
$vars['front_heading_classes'] = theme_get_setting('front_heading_classes');
$vars['breadcrumb_classes'] = theme_get_setting('breadcrumb_classes');
$vars['border_classes'] = theme_get_setting('border_classes');
$vars['corner_classes'] = theme_get_setting('corner_classes');
$vars['body_bg_type'] = theme_get_setting('body_bg_type');
$vars['body_bg_classes'] = theme_get_setting('body_bg_classes');
$vars['body_bg_path'] = theme_get_setting('body_bg_path');
}
function open_framework_js_alter(&$javascript) {
// Update jquery version for non-administration pages
if (arg(0) != 'admin' && arg(0) != 'panels' && arg(0) != 'ctools' && !(module_exists('jquery_update'))) {
$jquery_file = drupal_get_path('theme', 'open_framework') . '/js/jquery-1.9.1.min.js';
$jquery_version = '1.9.1';
$migrate_file = drupal_get_path('theme', 'open_framework') . '/js/jquery-migrate-1.2.1.min.js';
$migrate_version = '1.2.1';
$form_file = drupal_get_path('theme', 'open_framework') . '/js/jquery-form-3.31.0.min.js';
$form_version = '3.31.0';
$javascript['misc/jquery.js']['data'] = $jquery_file;
$javascript['misc/jquery.js']['version'] = $jquery_version;
$javascript['misc/jquery.js']['weight'] = 0;
$javascript['misc/jquery.js']['group'] = -101;
drupal_add_js($migrate_file);
if (isset($javascript["$migrate_file"])) {
$javascript["$migrate_file"]['version'] = $migrate_version;
$javascript["$migrate_file"]['weight'] = 1;
$javascript["$migrate_file"]['group'] = -101;
}
if (isset($javascript['misc/jquery.form.js'])) {
$javascript['misc/jquery.form.js']['data'] = $form_file;
$javascript['misc/jquery.form.js']['version'] = $form_version;
$javascript['misc/jquery.form.js']['weight'] = 2;
$javascript['misc/jquery.form.js']['group'] = -101;
}
}
}
function open_framework_preprocess_page(&$vars) {
// Add page template suggestions based on the aliased path. For instance, if the current page has an alias of about/history/early, we'll have templates of:
// page-about-history-early.tpl.php, page-about-history.tpl.php, page-about.tpl.php
// Whichever is found first is the one that will be used.
if (module_exists('path')) {
$alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
if ($alias != $_GET['q']) {
$template_filename = 'page';
foreach (explode('/', $alias) as $path_part) {
$template_filename = $template_filename . '-' . $path_part;
$vars['template_files'][] = $template_filename;
}
}
}
// Get the entire main menu tree
$main_menu_tree = menu_tree_all_data('main-menu');
// Add the rendered output to the $main_menu_expanded variables
$vars['main_menu_expanded'] = menu_tree_output($main_menu_tree);
// Primary nav
$vars['primary_nav'] = FALSE;
if ($vars['main_menu']) {
// Build links
$vars['primary_nav'] = menu_tree(variable_get('menu_main_links_source', 'main-menu'));
// Provide default theme wrapper function
$vars['primary_nav']['#theme_wrappers'] = array('menu_tree__primary');
}
// Secondary nav
$vars['secondary_nav'] = FALSE;
if ($vars['secondary_menu']) {
// Build links
$vars['secondary_nav'] = menu_tree(variable_get('menu_secondary_links_source', 'user-menu'));
// Provide default theme wrapper function
$vars['secondary_nav']['#theme_wrappers'] = array('menu_tree__secondary');
}
// Checks if tabs are set
if (!isset($vars['tabs']['#primary'])) $vars['tabs']['#primary'] = FALSE;
// Replace tabs with drop down version
$vars['tabs']['#primary'] = _bootstrap_local_tasks($vars['tabs']['#primary']);
// Add variable for site title
$vars['my_site_title'] = variable_get('site_name');
}
function open_framework_preprocess_block(&$vars) {
// Count number of blocks in a given theme region
$vars['block_count'] = count(block_list($vars['block']->region));
}
/**
* Determines if the region has at least one block for this user
*
* @param $region
* A string containing the region name
*
* @return
* TRUE if the region has at least one block. FALSE if it doesn't.
*/
function open_framework_region_has_block($region) {
$number_of_blocks = count(block_list($region));
if ($number_of_blocks > 0) {
return TRUE;
}
else {
return FALSE;
}
}
/**
* Determine the span for a blocka
*
* @param $block_count
* The number of blocks in the region
*
* @param $block_id
* The position of the block (starts at 1)
*
* @param $count_sidebars
* A boolean indicating whether sidebars should be counted
*
* @return
* The span value for the block at this location and region
*/
function open_framework_get_span($block_count, $block_id, $count_sidebars) {
// @petechen (6.27.12) This method of applying a value to span assumes that there
// is at least 1 block. If there are no blocks, you end up with a calculation
// dividing by 0 generating a php error. Suggest the following change:
// default span if calculations fail
// Use this default value instead as an "else" condition below:
// $span = 12;
// there are 12 columsn in bootstrap
$available_width = 12;
if ($count_sidebars) {
// we assume that the left and right regions have a span of 3
// if present, we remove that much from the available width
if (open_framework_region_has_block('sidebar_first')) {
$available_width = $available_width – 0;
}
if (open_framework_region_has_block('sidebar_second')) {
$available_width = $available_width – 0;
}
}
// @petechen – surroung this condition with another if else to account for $block_count = 0
if ($block_count != 0) {
// if the number of blocks divides evenly into the available width, that's our span width
if (($available_width % $block_count) == 0) {
$span = $available_width / $block_count;
}
// if the number of blocks does not divide evenly, we look up the span widths in an array
// where then indexes are available width, number of blocks, and block position
// e.g. [9][2][1] is the span of the first block, out of two when the available width is 9.
else {
$exceptions[6][4][1] = 2;
$exceptions[6][4][2] = 2;
$exceptions[6][4][3] = 1;
$exceptions[6][4][4] = 1;
$exceptions[6][5][1] = 1;
$exceptions[6][5][2] = 1;
$exceptions[6][5][3] = 1;
$exceptions[6][5][4] = 1;
$exceptions[6][5][5] = 1;
$exceptions[9][2][1] = 3;
$exceptions[9][2][2] = 6;
$exceptions[9][4][1] = 3;
$exceptions[9][4][2] = 2;
$exceptions[9][4][3] = 2;
$exceptions[9][4][4] = 2;
$exceptions[9][5][1] = 3;
$exceptions[9][5][2] = 1;
$exceptions[9][5][3] = 1;
$exceptions[9][5][4] = 1;
$exceptions[9][5][5] = 3;
$exceptions[9][6][1] = 2;
$exceptions[9][6][2] = 2;
$exceptions[9][6][3] = 2;
$exceptions[9][6][4] = 1;
$exceptions[9][6][5] = 1;
$exceptions[9][6][6] = 1;
$exceptions[12][5][1] = 3;
$exceptions[12][5][2] = 2;
$exceptions[12][5][3] = 2;
$exceptions[12][5][4] = 2;
$exceptions[12][5][5] = 3;
$span = $exceptions[$available_width][$block_count][$block_id];
}
return $span;
}
// @petechen: so if $block_count = 0, use this as the default
else $span = 12;
}
/**
* Returns HTML for status and/or error messages, grouped by type.
*/
function open_framework_status_messages($variables) {
$display = $variables['display'];
$output = '';
$status_heading = array(
'status' => t('Status message'),
'error' => t('Error message'),
'warning' => t('Warning message'),
);
// Map Drupal message types to their corresponding Bootstrap classes.
// @see http://twitter.github.com/bootstrap/components.html#alerts
$status_class = array(
'status' => 'success',
'error' => 'error',
'warning' => 'info',
);
foreach (drupal_get_messages($display) as $type => $messages) {
$class = (isset($status_class[$type])) ? ' alert-' . $status_class[$type] : '';
$output .= "<div class=\"alert alert-block$class\">\n";
if (arg(0) != 'admin' && arg(0) != 'panels' && arg(0) != 'ctools') {
$output .= " <a class=\"close\" data-dismiss=\"alert\" href=\"#\">x</a>\n";
}
if (!empty($status_heading[$type])) {
$output .= '<h2 class="element-invisible">' . $status_heading[$type] . "</h2>\n";
}
if (count($messages) > 1) {
$output .= " <ul>\n";
foreach ($messages as $message) {
$output .= ' <li>' . $message . "</li>\n";
}
$output .= " </ul>\n";
}
else {
$output .= $messages[0];
}
$output .= "</div>\n";
}
return $output;
}
/* Search Form Block */
function search_preprocess_block(&$variables) {
if ($variables['block']->module == 'search') {
$variables['attributes_array']['role'] = 'search';
}
}
function open_framework_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'search_block_form') {
$form['search_block_form']['#title_display'] = 'invisible';
$form['search_block_form']['#attributes']['class'][] = 'input-medium search-query';
$form['search_block_form']['#attributes']['placeholder'] = t('Search this site…');
$form['actions']['submit']['#attributes']['class'][] = 'btn-search';
$form['actions']['submit']['#attributes']['alt'] = t('Search');
unset($form['actions']['submit']['#value']);
$form['actions']['submit']['#type'] = 'image_button';
$form['actions']['submit']['#src'] = drupal_get_path('theme', 'open_framework') . '/images/searchbutton.png';
}
}
/* Returns HTML for primary and secondary local tasks. */
function open_framework_menu_local_tasks(&$vars) {
$output = '';
if ( !empty($vars['primary']) ) {
$vars['primary']['#prefix'] = '<h2 class="element-invisible">' . t('Primary tabs') . '</h2>';
$vars['primary']['#prefix'] = '<ul class="nav nav-tabs">';
$vars['primary']['#suffix'] = '</ul>';
$output .= drupal_render($vars['primary']);
}
if ( !empty($vars['secondary']) ) {
$vars['primary']['#prefix'] = '<h2 class="element-invisible">' . t('Primary tabs') . '</h2>';
$vars['secondary']['#prefix'] = '<ul class="nav nav-pills">';
$vars['secondary']['#suffix'] = '</ul>';
$output .= drupal_render($vars['secondary']);
}
return $output;
}
/* Returns HTML for primary and secondary local task. */
function open_framework_menu_local_task($vars) {
$link = $vars['element']['#link'];
$link_text = $link['title'];
$classes = array();
if (!empty($vars['element']['#active'])) {
// Add text to indicate active tab for non-visual users.
$active = '<span class="element-invisible">' . t('(active tab)') . '</span>';
// If the link does not contain HTML already, check_plain() it now.
// After we set 'html'=TRUE the link will not be sanitized by l().
if (empty($link['localized_options']['html'])) {
$link['title'] = check_plain($link['title']);
}
$link['localized_options']['html'] = TRUE;
$link_text = t('!local-task-title!active', array('!local-task-title' => $link['title'], '!active' => $active));
$classes[] = 'active';
}
return '<li class="' . implode(' ', $classes) . '">' . l($link_text, $link['href'], $link['localized_options']) . "</li>\n";
}
function open_framework_menu_tree(&$vars) {
return '<ul class="menu nav">' . $vars['tree'] . '</ul>';
}
/*
* Implements hook_menu_link
* Apply bootstrap menu classes to all menu blocks in the
* navigation region and the main-menu block by default.
* Note: if a menu is in the navigation and somewhere else as well,
* both instances of the menu will have the classes applied,
* not just the one in the navigation
*/
function open_framework_menu_link(array $vars) {
$element = $vars['element'];
if (open_framework_is_in_nav_menu($element)) {
$sub_menu = '';
if ($element['#below']) {
// Add our own wrapper
unset($element['#below']['#theme_wrappers']);
$sub_menu = '<ul class="dropdown-menu">' . drupal_render($element['#below']) . '</ul>';
$element['#localized_options']['attributes']['class'][] = 'dropdown-toggle';
$element['#localized_options']['attributes']['data-toggle'] = 'dropdown';
// Check if this element is nested within another
if ((!empty($element['#original_link']['depth'])) && ($element['#original_link']['depth'] > 1)) {
// Generate as dropdown submenu
$element['#attributes']['class'][] = 'dropdown-submenu';
}
else {
// Generate as standard dropdown
$element['#attributes']['class'][] = 'dropdown';
$element['#localized_options']['html'] = TRUE;
$element['#title'] .= ' <span class="caret"></span>';
}
// Set dropdown trigger element to # to prevent inadvertant page loading with submenu click
$element['#localized_options']['attributes']['data-target'] = '#';
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
} else {
$element = $vars['element'];
$sub_menu = '';
if ($element['#below']) {
$sub_menu = drupal_render($element['#below']);
}
$output = l($element['#title'], $element['#href'], $element['#localized_options']);
return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}
}
/**
* Get all primary tasks including subsets
*/
function _bootstrap_local_tasks($tabs = FALSE) {
if ($tabs == '') {
return $tabs;
}
if (!$tabs) {
$tabs = menu_primary_local_tasks();
}
foreach ($tabs as $key => $element) {
$result = db_select('menu_router', NULL, array('fetch' => PDO::FETCH_ASSOC))
->fields('menu_router')
->condition('tab_parent', $element['#link']['path'])
->condition('context', MENU_CONTEXT_INLINE, '<>')
->condition('type', array(MENU_DEFAULT_LOCAL_TASK, MENU_LOCAL_TASK), 'IN')
->orderBy('weight')
->orderBy('title')
->execute();
$router_item = menu_get_item($element['#link']['href']);
$map = $router_item['original_map'];
$i = 0;
foreach ($result as $item) {
_menu_translate($item, $map, TRUE);
//only add items that we have access to
if ($item['tab_parent'] && $item['access']) {
//set path to that of parent for the first item
if ($i === 0) {
$item['href'] = $element['#link']['href'];
}
if (current_path() == $item['href']) {
$tabs[$key][] = array(
'#theme' => 'menu_local_task',
'#link' => $item,
'#active' => TRUE,
);
}
else {
$tabs[$key][] = array(
'#theme' => 'menu_local_task',
'#link' => $item,
);
}
//only count items we have access to.
$i++;
}
}
}
return $tabs;
}
/*
* Find out if an element (a menu link) is a link displayed in the
* navigation region for the user. We return true by default if this is a
* menu link in the main-menu. Open Framework treats the main-menu
* as being in the navigation by default.
* We are using the theming functions to figure out the block IDs.
* The block IDs aren't passed to this function, but theming function names are,
* and those are baed on the block ID.
*
*/
function open_framework_is_in_nav_menu($element) {
// #theme holds one or more suggestions for theming function names for the link
// simplify things by casting into an array
$link_theming_functions = (array)$element['#theme'];
// Avoid calculating this more than once
$nav_theming_functions = &drupal_static(__FUNCTION__);
// if not done yet, calculate the names of the theming function for all the blocks
// in the navigation region
if (!isset($nav_theming_functions)) {
// get all blocks in the navigation region
$blocks = block_list('navigation');
// Blocks placed using the context module don't show up using Drupal's block_list
// If context is enabled, see if it has placed any blocks in the navigation area
// See: http://drupal.org/node/785350
$context_blocks = array();
if (module_exists('context')) {
$reaction_block_plugin = context_get_plugin('reaction', 'block');
$context_blocks = $reaction_block_plugin->block_list('navigation');
}
$blocks = array_merge($blocks, $context_blocks);
// extract just their IDs (<module>_<delta>)
$ids = array_keys($blocks);
// translate the ids into function names for comparison purposes
$nav_theming_functions = array_map('open_framework_block_id_to_function_name', $ids);
}
// if there is nothing in the navigation section, the main menu is added automatically, so
// we watch for that.
// 'menu_link__main_menu' is the theming function name for the main-menu
if ((empty($nav_theming_functions)) && (in_array('menu_link__main_menu', $link_theming_functions))) {
return TRUE;
};
// Find out if any of the theming functions for the blocks are the same
// as the theming functions for the link.
$intersect = array_intersect($nav_theming_functions, $link_theming_functions);
if ((!empty($intersect))) {
return TRUE;
}
else {
return FALSE;
}
}
/*
* Convert a block id to a theming function name
*/
function open_framework_block_id_to_function_name ($id) {
// if a system block, remove 'system_'
$id = str_replace('system_', '', $id);
// recognize menu and block_menu module blocks
if (strpos($id, 'menu_block_') === false) {
// if a menu block but not a menu_block block, remove menu_
$id = str_replace('menu_', '', $id);
}
else {
// if a menu_block block, keep menu_block, but add an
// underscore. Not sure why this is different from other
// core modules
$id = str_replace('menu_block_', 'menu_block__', $id);
}
// massage the id to looks like a theming function name
// use the same function used to create the name of theming function
$id = strtr($id, '-', '_');
$name = 'menu_link__' . $id;
return $name;
}
/*
* Show or hide breadcrumb based on theme setting selection
*/
function open_framework_breadcrumb(&$variables) {
$output = '';
$breadcrumb = $variables['breadcrumb'];
$show_breadcrumb = theme_get_setting('breadcrumb_classes');
if ($show_breadcrumb == 'show-breadcrumb ') {
if (!empty($breadcrumb)) {
// Provide a navigational heading to give context for breadcrumb links to
// screen-reader users. Make the heading invisible with .element-invisible.
$output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
$output .= '<div class="breadcrumb">' . implode(' » ', $breadcrumb) . '</div>';
} else {
$output = '<div class="breadcrumb">' . t('Home') . '</div>';
}
}
return $output;
}
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: Elaborarea Portalului Informational Pentru Cnaa Utilizand Tehnologiile Drupal (ID: 149768)
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.
