LimeSurvey Manual
Menu
Navigation
Main page
Recent changes
Random page
Help
Search
Special pages
Printable version
Recent changes
Help
English
Log in
Actions
Translate
Language statistics
Message group statistics
Export
Special
Export translations
Settings
Group
Activating a survey
Adding answers or subquestions
Administering LimeSurvey
Alternatives to the LimeSurvey import function
Assessments
Backup entire database
Batch deletion
Category:Advanced Question Settings
Category:General Question Options
Category:Question Settings
Central Participant Database
Changing an active survey
Check data integrity
Check question logic
Check survey logic - Advanced
Closing a survey
ComfortUpdate
Copy question
Data encryption
Data entry
Data policy settings
DateFunctions
Default answers
Delete question
Delete survey
Display/Export survey
Edit question
Email bounce tracking system
Email templates
Export question
Export responses
Exporting results
Expression Manager
Expression Manager sample surveys
ExpressionScript - Presentation
ExpressionScript Engine - Quick start guide
ExpressionScript examples
ExpressionScript How-tos
ExpressionScript sample surveys
Extension compatibility
Failed email notifications
First login - your user preferences
General FAQ
General settings
Getting started
Global settings
Google API howto
Home page settings
How to design a good survey (guide)
Import responses
Importing a survey
Installation - LimeSurvey CE
Installation FAQ
Installation of the LimeSurvey XAMPP package
Installation security hints
Installation using a command line interface (CLI)
Installation Version 1.92 or older
Iterate survey
Label sets
LDAP settings
License
LimeSurvey Manual
LimeSurvey PRO vs LimeSurvey CE
LimeSurvey Users
LimeSurvey Video-Tutorial
LimeSurvey-compatible hosting companies
List question groups
List questions
Localization
Major version upgrade
Make your plugin compatible with LS4
Manage user groups
Manage users
Menu configuration
Menu entries configuration
Multilingual survey
New Template System in LS3.x
Not categorized and advanced features
Notifications & data
Optional settings
Overview
Panel integration
Participant settings
Plugin manager
Plugin menu
Plugins - advanced
Presentation
Preview function
Problems & solutions
Publication & access
QS:Allowed filetypes
QS:Alphasort
QS:Answer width
QS:Array filter
QS:Array filter exclude
QS:Array filter style
QS:Assessment value
QS:Autocheck exclusive option
QS:Category separator
QS:Chart type
QS:Choice column width
QS:Choice header
QS:Code filter
QS:Commented checkbox
QS:CSS Class
QS:Date max
QS:Date min
QS:Date time format
QS:Display chart
QS:Display columns
QS:Display map
QS:Display rows
QS:Display type
QS:Dropdown dates
QS:Dropdown dates year max
QS:Dropdown dates year min
QS:Dropdown prefix
QS:Dropdown prepostfix
QS:Dropdown separators
QS:Dropdown size
QS:Dualscale headerA
QS:Dualscale headerB
QS:Em validation q
QS:Em validation q tip
QS:Em validation sq
QS:Em validation sq tip
QS:Encryption
QS:Equals num value
QS:Equation
QS:Exclusive option
QS:Get order previous q
QS:Hidden
QS:Hide tip
QS:Input box size
QS:Input boxes
QS:Input max characters
QS:Label column width
QS:Location city
QS:Location country
QS:Location defaultcoordinates
QS:Location mapheight
QS:Location mapservice
QS:Location mapwidth
QS:Location mapzoom
QS:Location nodefaultfromip
QS:Location postal
QS:Location state
QS:Mandatory
QS:Max answers
QS:Max filesize
QS:Max num value
QS:Max num value n
QS:Max num value sgqa
QS:Max subquestions
QS:Maximum chars
QS:Maximum number of files
QS:Min answers
QS:Min num value
QS:Min num value n
QS:Minimum number of files
QS:Minute step interval
QS:Month display style
QS:Multiflexible checkbox
QS:Multiflexible max
QS:Multiflexible min
QS:Multiflexible step
QS:Num value int only
QS:Numbers only
QS:Other
QS:Other comment mandatory
QS:Other numbers only
QS:Other Position
QS:Other replace text
QS:Page break
QS:Prefix
QS:Preg validation
QS:Printable survey relevance help
QS:Public statistics
QS:Question theme
QS:Random group
QS:Random order
QS:Rank header
QS:Relevance
QS:Remove text or uncheck checkbox
QS:Repeat headers
QS:Reverse
QS:Samechoiceheight
QS:Samelistheight
QS:Scale export
QS:Show comment
QS:Show grand total
QS:Show title
QS:Show totals
QS:Showpopups
QS:Slider accuracy
QS:Slider default
QS:Slider handle shape
QS:Slider handle Unicode shape
QS:Slider initial value
QS:Slider layout
QS:Slider max
QS:Slider middlestart
QS:Slider min
QS:Slider orientation
QS:Slider rating
QS:Slider reset
QS:Slider reverse
QS:Slider separator
QS:Slider showminmax
QS:Subquestion width
QS:Suffix
QS:Text input width
QS:Theme editor - advanced options
QS:Time limit
QS:Time limit action
QS:Time limit countdown message
QS:Time limit disable next
QS:Time limit disable prev
QS:Time limit message
QS:Time limit message delay
QS:Time limit message style
QS:Time limit timer style
QS:Time limit warning
QS:Time limit warning display time
QS:Time limit warning message
QS:Time limit warning style
QS:Use dropdown
QS:Value range allows missing
Question groups - introduction
Question toolbar options
Question type - 5 point choice
Question type - Array
Question type - Array (10 point choice)
Question type - Array (5 point choice)
Question type - Array (Increase-Same-Decrease)
Question type - Array (Numbers)
Question type - Array (Texts)
Question type - Array (Yes-No-Uncertain)
Question type - Array by column
Question type - Array dual scale
Question type - Date
Question type - Equation
Question type - File upload
Question type - Gender
Question type - Huge free text
Question type - Language switch
Question type - List (Dropdown)
Question type - List (Radio)
Question type - List with comment
Question type - Long free text
Question type - Multiple choice
Question type - Multiple choice with comments
Question type - Multiple numerical input
Question type - Multiple short text
Question type - Numerical input
Question type - Ranking
Question type - Short free text
Question type - Text display
Question type - Yes-No
Question types
Questions - introduction
QueXML PDF Export
Quick start guide - LimeSurvey 2.50+
Quick start guide - LimeSurvey 3.0+
Quick-translation
Regenerate question codes
Reorder questions and question groups
Reset conditions
Resources
Responses & statistics
Responses (survey results)
Running a survey safely
Setting conditions
SGQA identifier
Statistics
Survey group permissions
Survey menu
Survey participants
Survey permissions
Survey quotas
Survey settings
Survey settings version 2
Survey structure
Survey toolbar options
Surveys - introduction
Surveys - management
Tab Separated Value survey structure
Template:Deprecated
Template:DeprecatedIn
Template:Example
Template:FeatureChange
Template:FeatureStarting
Template:Hint
Template:NewIn
Template:UpdatedIn
Testing a survey
Text elements
Theme editor
Theme options
Themes
Timing statistics
Tools
Transferring an installation
Translating LimeSurvey
Troubleshooting
TwoFactorAdminLogin
Upgrading from a previous version
URL fields
Using regular expressions
Version change log
Version guide
View saved but not submitted responses
Workarounds
Language
aa - Afar
ab - Abkhazian
abs - Ambonese Malay
ace - Achinese
acm - Iraqi Arabic
ady - Adyghe
ady-cyrl - Adyghe (Cyrillic script)
aeb - Tunisian Arabic
aeb-arab - Tunisian Arabic (Arabic script)
aeb-latn - Tunisian Arabic (Latin script)
af - Afrikaans
aln - Gheg Albanian
alt - Southern Altai
am - Amharic
ami - Amis
an - Aragonese
ang - Old English
ann - Obolo
anp - Angika
ar - Arabic
arc - Aramaic
arn - Mapuche
arq - Algerian Arabic
ary - Moroccan Arabic
arz - Egyptian Arabic
as - Assamese
ase - American Sign Language
ast - Asturian
atj - Atikamekw
av - Avaric
avk - Kotava
awa - Awadhi
ay - Aymara
az - Azerbaijani
azb - South Azerbaijani
ba - Bashkir
ban - Balinese
ban-bali - Balinese (Balinese script)
bar - Bavarian
bbc - Batak Toba
bbc-latn - Batak Toba (Latin script)
bcc - Southern Balochi
bci - Baoulé
bcl - Central Bikol
bdr - West Coast Bajau
be - Belarusian
be-tarask - Belarusian (Taraškievica orthography)
bew - Betawi
bg - Bulgarian
bgn - Western Balochi
bh - Bhojpuri
bho - Bhojpuri
bi - Bislama
bjn - Banjar
blk - Pa'O
bm - Bambara
bn - Bangla
bo - Tibetan
bpy - Bishnupriya
bqi - Bakhtiari
br - Breton
brh - Brahui
bs - Bosnian
btm - Batak Mandailing
bto - Iriga Bicolano
bug - Buginese
bxr - Russia Buriat
ca - Catalan
cbk-zam - Chavacano
cdo - Min Dong Chinese
ce - Chechen
ceb - Cebuano
ch - Chamorro
cho - Choctaw
chr - Cherokee
chy - Cheyenne
ckb - Central Kurdish
co - Corsican
cps - Capiznon
cpx - Pu-Xian Min
cpx-hans - Pu-Xian Min (Simplified Han script)
cpx-hant - Pu-Xian Min (Traditional Han script)
cpx-latn - Pu-Xian Min (Latin script)
cr - Cree
crh - Crimean Tatar
crh-cyrl - Crimean Tatar (Cyrillic script)
crh-latn - Crimean Tatar (Latin script)
crh-ro - Crimean Tatar (Romania)
cs - Czech
csb - Kashubian
cu - Church Slavic
cv - Chuvash
cy - Welsh
da - Danish
dag - Dagbani
de - German
de-at - Austrian German
de-ch - Swiss High German
de-formal - German (formal address)
dga - Dagaare
din - Dinka
diq - Zazaki
dsb - Lower Sorbian
dtp - Central Dusun
dty - Doteli
dv - Divehi
dz - Dzongkha
ee - Ewe
egl - Emilian
el - Greek
eml - Emiliano-Romagnolo
en - English
en-ca - Canadian English
en-gb - British English
eo - Esperanto
es - Spanish
es-419 - Latin American Spanish
es-formal - Spanish (formal address)
et - Estonian
eu - Basque
ext - Extremaduran
fa - Persian
fat - Fanti
ff - Fula
fi - Finnish
fit - Tornedalen Finnish
fj - Fijian
fo - Faroese
fon - Fon
fr - French
frc - Cajun French
frp - Arpitan
frr - Northern Frisian
fur - Friulian
fy - Western Frisian
ga - Irish
gaa - Ga
gag - Gagauz
gan - Gan Chinese
gan-hans - Gan (Simplified)
gan-hant - Gan (Traditional)
gcr - Guianan Creole
gd - Scottish Gaelic
gl - Galician
gld - Nanai
glk - Gilaki
gn - Guarani
gom - Goan Konkani
gom-deva - Goan Konkani (Devanagari script)
gom-latn - Goan Konkani (Latin script)
gor - Gorontalo
got - Gothic
gpe - Ghanaian Pidgin
grc - Ancient Greek
gsw - Alemannic
gu - Gujarati
guc - Wayuu
gur - Frafra
guw - Gun
gv - Manx
ha - Hausa
hak - Hakka Chinese
haw - Hawaiian
he - Hebrew
hi - Hindi
hif - Fiji Hindi
hif-latn - Fiji Hindi (Latin script)
hil - Hiligaynon
hno - Northern Hindko
ho - Hiri Motu
hr - Croatian
hrx - Hunsrik
hsb - Upper Sorbian
hsn - Xiang Chinese
ht - Haitian Creole
hu - Hungarian
hu-formal - Hungarian (formal address)
hy - Armenian
hyw - Western Armenian
hz - Herero
ia - Interlingua
id - Indonesian
ie - Interlingue
ig - Igbo
igl - Igala
ii - Sichuan Yi
ik - Inupiaq
ike-cans - Eastern Canadian (Aboriginal syllabics)
ike-latn - Eastern Canadian (Latin script)
ilo - Iloko
inh - Ingush
io - Ido
is - Icelandic
it - Italian
iu - Inuktitut
ja - Japanese
jam - Jamaican Creole English
jbo - Lojban
jut - Jutish
jv - Javanese
ka - Georgian
kaa - Kara-Kalpak
kab - Kabyle
kai - Karekare
kbd - Kabardian
kbd-cyrl - Kabardian (Cyrillic script)
kbp - Kabiye
kcg - Tyap
kea - Kabuverdianu
kg - Kongo
khw - Khowar
ki - Kikuyu
kiu - Kirmanjki
kj - Kuanyama
kjh - Khakas
kjp - Eastern Pwo
kk - Kazakh
kk-arab - Kazakh (Arabic script)
kk-cn - Kazakh (China)
kk-cyrl - Kazakh (Cyrillic script)
kk-kz - Kazakh (Kazakhstan)
kk-latn - Kazakh (Latin script)
kk-tr - Kazakh (Turkey)
kl - Kalaallisut
km - Khmer
kn - Kannada
ko - Korean
ko-kp - Korean (North Korea)
koi - Komi-Permyak
kr - Kanuri
krc - Karachay-Balkar
kri - Krio
krj - Kinaray-a
krl - Karelian
ks - Kashmiri
ks-arab - Kashmiri (Arabic script)
ks-deva - Kashmiri (Devanagari script)
ksh - Colognian
ksw - S'gaw Karen
ku - Kurdish
ku-arab - Kurdish (Arabic script)
ku-latn - Kurdish (Latin script)
kum - Kumyk
kus - Kʋsaal
kv - Komi
kw - Cornish
ky - Kyrgyz
la - Latin
lad - Ladino
lb - Luxembourgish
lbe - Lak
lez - Lezghian
lfn - Lingua Franca Nova
lg - Ganda
li - Limburgish
lij - Ligurian
liv - Livonian
lki - Laki
lld - Ladin
lmo - Lombard
ln - Lingala
lo - Lao
loz - Lozi
lrc - Northern Luri
lt - Lithuanian
ltg - Latgalian
lus - Mizo
luz - Southern Luri
lv - Latvian
lzh - Literary Chinese
lzz - Laz
mad - Madurese
mag - Magahi
mai - Maithili
map-bms - Basa Banyumasan
mdf - Moksha
mg - Malagasy
mh - Marshallese
mhr - Eastern Mari
mi - Māori
min - Minangkabau
mk - Macedonian
ml - Malayalam
mn - Mongolian
mnc - Manchu
mnc-latn - Manchu (Latin script)
mnc-mong - Manchu (Mongolian script)
mni - Manipuri
mnw - Mon
mo - Moldovan
mos - Mossi
mr - Marathi
mrh - Mara
mrj - Western Mari
ms - Malay
ms-arab - Malay (Jawi script)
mt - Maltese
mus - Muscogee
mwl - Mirandese
my - Burmese
myv - Erzya
mzn - Mazanderani
na - Nauru
nah - Nāhuatl
nan - Min Nan Chinese
nap - Neapolitan
nb - Norwegian Bokmål
nds - Low German
nds-nl - Low Saxon
ne - Nepali
new - Newari
ng - Ndonga
nia - Nias
niu - Niuean
nl - Dutch
nl-informal - Dutch (informal address)
nmz - Nawdm
nn - Norwegian Nynorsk
no - Norwegian
nod - Northern Thai
nog - Nogai
nov - Novial
nqo - N’Ko
nrm - Norman
nso - Northern Sotho
nv - Navajo
ny - Nyanja
nyn - Nyankole
nys - Nyungar
oc - Occitan
ojb - Northwestern Ojibwa
olo - Livvi-Karelian
om - Oromo
or - Odia
os - Ossetic
pa - Punjabi
pag - Pangasinan
pam - Pampanga
pap - Papiamento
pcd - Picard
pcm - Nigerian Pidgin
pdc - Pennsylvania German
pdt - Plautdietsch
pfl - Palatine German
pi - Pali
pih - Norfuk / Pitkern
pl - Polish
pms - Piedmontese
pnb - Western Punjabi
pnt - Pontic
prg - Prussian
ps - Pashto
pt - Portuguese
pt-br - Brazilian Portuguese
pwn - Paiwan
qu - Quechua
qug - Chimborazo Highland Quichua
rgn - Romagnol
rif - Riffian
rki - Arakanese
rm - Romansh
rmc - Carpathian Romani
rmy - Vlax Romani
rn - Rundi
ro - Romanian
roa-tara - Tarantino
rsk - Pannonian Rusyn
ru - Russian
rue - Rusyn
rup - Aromanian
ruq - Megleno-Romanian
ruq-cyrl - Megleno-Romanian (Cyrillic script)
ruq-latn - Megleno-Romanian (Latin script)
rw - Kinyarwanda
ryu - Okinawan
sa - Sanskrit
sah - Yakut
sat - Santali
sc - Sardinian
scn - Sicilian
sco - Scots
sd - Sindhi
sdc - Sassarese Sardinian
sdh - Southern Kurdish
se - Northern Sami
se-fi - Northern Sami (Finland)
se-no - Northern Sami (Norway)
se-se - Northern Sami (Sweden)
sei - Seri
ses - Koyraboro Senni
sg - Sango
sgs - Samogitian
sh - Serbo-Croatian
sh-cyrl - Serbo-Croatian (Cyrillic script)
sh-latn - Serbo-Croatian (Latin script)
shi - Tachelhit
shi-latn - Tachelhit (Latin script)
shi-tfng - Tachelhit (Tifinagh script)
shn - Shan
shy - Shawiya
shy-latn - Shawiya (Latin script)
si - Sinhala
simple - Simple English
sjd - Kildin Sami
sje - Pite Sami
sk - Slovak
skr - Saraiki
skr-arab - Saraiki (Arabic script)
sl - Slovenian
sli - Lower Silesian
sm - Samoan
sma - Southern Sami
smn - Inari Sami
sms - Skolt Sami
sn - Shona
so - Somali
sq - Albanian
sr - Serbian
sr-ec - Serbian (Cyrillic script)
sr-el - Serbian (Latin script)
srn - Sranan Tongo
sro - Campidanese Sardinian
ss - Swati
st - Southern Sotho
stq - Saterland Frisian
sty - Siberian Tatar
su - Sundanese
sv - Swedish
sw - Swahili
syl - Sylheti
szl - Silesian
szy - Sakizaya
ta - Tamil
tay - Tayal
tcy - Tulu
tdd - Tai Nuea
te - Telugu
tet - Tetum
tg - Tajik
tg-cyrl - Tajik (Cyrillic script)
tg-latn - Tajik (Latin script)
th - Thai
ti - Tigrinya
tk - Turkmen
tl - Tagalog
tly - Talysh
tly-cyrl - Talysh (Cyrillic script)
tn - Tswana
to - Tongan
tok - Toki Pona
tpi - Tok Pisin
tr - Turkish
tru - Turoyo
trv - Taroko
ts - Tsonga
tt - Tatar
tt-cyrl - Tatar (Cyrillic script)
tt-latn - Tatar (Latin script)
tum - Tumbuka
tw - Twi
ty - Tahitian
tyv - Tuvinian
tzm - Central Atlas Tamazight
udm - Udmurt
ug - Uyghur
ug-arab - Uyghur (Arabic script)
ug-latn - Uyghur (Latin script)
uk - Ukrainian
ur - Urdu
uz - Uzbek
uz-cyrl - Uzbek (Cyrillic script)
uz-latn - Uzbek (Latin script)
ve - Venda
vec - Venetian
vep - Veps
vi - Vietnamese
vls - West Flemish
vmf - Main-Franconian
vmw - Makhuwa
vo - Volapük
vot - Votic
vro - Võro
wa - Walloon
wal - Wolaytta
war - Waray
wls - Wallisian
wo - Wolof
wuu - Wu Chinese
wuu-hans - Wu Chinese (Simplified)
wuu-hant - Wu Chinese (Traditional)
xal - Kalmyk
xh - Xhosa
xmf - Mingrelian
xsy - Saisiyat
yi - Yiddish
yo - Yoruba
yrl - Nheengatu
yue - Cantonese
yue-hans - Cantonese (Simplified)
yue-hant - Cantonese (Traditional)
za - Zhuang
zea - Zeelandic
zgh - Standard Moroccan Tamazight
zh - Chinese
zh-cn - Chinese (China)
zh-hans - Simplified Chinese
zh-hant - Traditional Chinese
zh-hk - Chinese (Hong Kong)
zh-mo - Chinese (Macau)
zh-my - Chinese (Malaysia)
zh-sg - Chinese (Singapore)
zh-tw - Chinese (Taiwan)
zu - Zulu
Format
Export for off-line translation
Export in native format
Export in CSV format
Fetch
{{DISPLAYTITLE:Noul sistem de șabloane în LS3.x}}<languages /> __TOC__ =Introducere= Fiți conștienți: în versiunile anterioare ale LimeSurvey fișierele care definesc modul în care arată sondajul, cum este prezentat sondajul în termeni de culori, fonturi, aspect și (unele) comportament, au fost numite „șablon”. Datorită noilor perspective, aceasta este acum numită „temă”, în timp ce șablonul este rezervat pentru sondaje de exemplu. Pe această pagină veți învăța cum să: * Utilizați noul sistem de teme al LimeSurvey 3.0. * Utilizați moștenirea pentru a vă gestiona propriile teme. * Adăugați o imagine la tema dvs. * Gestionați opțiunile de temă pentru sondajele și grupurile dvs. de sondaje <hr/> LimeSurvey 3 introduce un sistem complet nou de motor de teme, bazat pe Twig 1.29, Bootstrap și care permite moștenirea temei și opțiunile temei. Îndepărtează complet vechiul sistem de cuvinte cheie de înlocuire. Deci, acum, 100% din HTML-ul frontend poate fi personalizat. De exemplu, în vechiul sistem de teme, exista un cuvânt cheie {ASSESSMENTS} care a fost înlocuit cu HTML de evaluare în momentul execuției. Un designer de teme nu a avut nicio modalitate de a personaliza acest HTML (altul decât să folosească JavaScript). Acum, există un fișier numit assessments.twig care conține logica (scrisă în Twig) pentru a genera acest HTML. În aceste pagini, vă vom oferi câteva explicații despre cum să utilizați acest nou motor de teme. <div class="simplebox">[[File:help.png]] Nu vom detalia aici cum funcționează Twig. Este un fel de PHP foarte simplificat care oferă un nivel ridicat de securitate datorită sistemului „sandbox” (vom vedea asta mai detaliat în partea despre codul Theme Engine Core). Dacă știi deja PHP, îți va fi extrem de ușor să stăpânești. Dacă nu cunoașteți PHP, ar trebui să fie destul de ușor de învățat. Vă rugăm să aruncați o privire la documentația Twig 1.X: https://twig.symfony.com/</div> =Editarea utilizând interfața de administrare= ==listă de teme== Pe tabloul de bord de administrare, există acum o casetă pentru a accesa lista de teme: [[File:Template list.jpg|thumb|800px |center|baseline|border|''Lista de teme după o nouă instalare a RC3'']] <br /> Lista este împărțită în 5 coloane: * o previzualizare a temei: este doar un fișier imagine numit „preview.png” la rădăcina temei * „titlul” temei ca specificate în manifest (config.xml în rădăcina temei) * descrierea temei: un șir stabilit în manifestul său * tipul temei: Tema principală (furnizată cu LimeSurvey), Tema utilizatorului (adăugat în directorul de încărcare), temă XML (neîncărcată în baza de date) * Se extinde: dacă tema extinde o altă temă, numele ei va fi indicat aici * Câteva butoane de acțiune: ** Instalează: aceasta va încărca manifestul unei teme pentru ao adăuga la baza de date și o va pune la dispoziție pentru selecție la nivel de sondaj ** Dezinstalare: va șterge intrările de configurare ale unei teme din baza de date ** Editor de teme: it vă va redirecționa către editorul de teme! N!** Opțiunea temei: vă va conduce la configurarea globală a opțiunilor temei ==Editor de teme== <div class="simplebox"> [[File:help.png]] Această documentație presupune că știți deja cum să utilizați Editorul de teme în versiunea anterioară a LS.</div> <br> Editorul de teme a fost păstrat cât mai aproape de cel original. Deci, când deschideți o temă de bază, nu o puteți edita. Dar acum, în loc de un buton de „copiere”, aveți un „buton de extindere”. <br> [[File:Extends default.png|center|baseline|border|''Acum '''extend''' theme'']] <span id="A_quick_overview_of_the_concept_of_theme_inheritance"></span> ====O scurtă prezentare a conceptului de moștenire a temei==== În LS3, o temă poate moșteni acum de la o altă temă, poate „extinde” o altă temă. Aceasta înseamnă că directorul de teme va fi practic gol, va conține doar fișierele (vizualizări, foi de stil, scripturi, resurse etc.) care diferă de cele originale. Procedând astfel, vă va fi ușor să creați o flotă de teme pentru diferiții dvs. utilizatori, fără a fi nevoie să mențineți o mulțime de teme diferite. De exemplu: puteți avea propria temă de casă și apoi o versiune pentru o companie (cu logo-ul său, stilul său, poate un link către site-ul său în subsol etc.), o altă versiune pentru o altă companie etc. Dacă atunci actualizați CSS-ul sau aspectul global al temei dvs. personalizate, toate temele care moștenesc de la aceasta vor fi actualizate automat. Rețineți că moștenirea este recursivă: o temă poate extinde o temă care extinde alta etc. <div class="simplebox">[[File:help.png]] De asemenea, înseamnă că dacă extindeți una dintre temele de bază ale LimeSurvey, veți beneficia în continuare de actualizările sale.</div> <span id="Novelties_in_the_user_interface"></span> ====Noutăți în interfața cu utilizatorul==== Pentru a extinde tema Monocrom a LimeSurvey, accesați lista de teme, faceți clic pe butonul „Editor de teme” al temei Monocrom. Apoi, faceți clic pe „extend” și validați noul nume „extends_monochrome”. Dacă mergeți acum la directorul de încărcare (cu fișierul/clientul dvs. ftp), veți vedea că a fost creat un nou director: '''upload/themes/extends_monochrome''' Conține un fișier XML și directoare , dar majoritatea directoarelor sunt goale. Nu are nici vizualizări, nici CSS, nici JS. Dar, puteți selecta această temă ca una normală dintr-un sondaj și va arăta exact ca tema monocromă. [[File:Extends monochrome empty.jpg|center|baseline|border|''Arborele de teme (director și fișiere) imediat după crearea sa. Este practic gol'']] <div class="simplebox">[[File:help.png]] Resursele (jpg, png etc.) din tema originală sunt copiate la extinderea unei teme. Acest lucru se datorează faptului că dacă copiați un fișier CSS din tema originală local și dacă se referă la acele fișiere (ca în declarația imagine de fundal), va trebui să găsească acele imagini în calea temei curente.</div> Editorul de teme pentru tema extends_monochrome arată așa: [[File:Editing extends monochrome.jpg|center|baseline|border|'' Editarea temei extends_monochrome'']] <br /><br /> Nu există nicio diferență mare cu editorul de teme vechi. Să le enumerăm pe cele principale: <br /> * Cuvântul cheie '''moștenit''' din lista de fișiere. Înseamnă că fișierul nu este prezent în directorul temei și că fișierul din tema originală va fi folosit. [[File:Inherited.jpg|center]] <br> * Editorul principal ( [https://ace.c9.io ACE editor ] ) arată conținutul fișierului selectat. Fișierele nu conțin doar HTML, CSS sau JS, ci și instrucțiuni Twig. Acele declarații Twig ne oferă posibilitatea de a împinge o logică a vizualizărilor temei care au fost localizate adânc în nucleu înainte și care acum pot fi personalizate. [[File:Twig code in editor.jpg|center|''O crenguță cod, pentru Survey List'']] <br> * Acesta este motivul pentru care acum aveți mai multe tipuri de ecran disponibile în selectorul drop-down al meniului de sus. Veți observa pagini precum „Lista de sondaj”, „Încărcare”, „Salvare”, „Eroare”, „Înregistrare”, „Evaluări”, „Tipărire răspunsuri” care nu erau disponibile înainte sau pe care nu le-ați putut cu adevărat fi personalizat înainte. [[File:Newscreens editables.jpg|195px|center|''Acum, puteți personaliza toate ecranele'']] <br /> * Linkul „sfat” din partea de jos a listei de fișiere vă oferă modul Twig de a adăuga o imagine în HTML [[File:Tip picture.png|605px|center]] <br /> * Butonul „salvați modificările” devine un buton „Copiați în tema locală și salvați modificările” [[File:Copytolocal.png|360px|center]] <span id="Quick_example:_adding_a_picture"></span> ====Exemplu rapid: adăugarea unei imagini ==== Butonul „Copiați în tema locală și salvați modificările” va face exact ceea ce scrie: dacă editați ceva în interiorul fișierului și apoi faceți clic pe acel buton, acesta va copia fișierul în tema pe care o editați și salvați modificările. <br> De exemplu: faceți clic pe fișierul layout_global.twig, apoi chiar înainte de conținutul blocului ({% block content %}) adăugați textul „TEST” și faceți clic pe butonul. Puteți vedea că eticheta fișierului s-a schimbat de la „moștenit” la „local”, iar acum butonul este un simplu buton „salvați modificările”. [[File:After edition.png|center|''doar după ce faceți clic pe butonul'']] <br> Dacă deschideți un explorator de fișiere și mergeți la directorul upload/themes/extends_monochrome/views/, veți vedea că acesta conține un singur fișier, fișierul layout_global.twig și că șirul „TEST” este acolo. [[File:Tree with layout global arrow.png|center|''Acum fișierul este prezent în tema ta'']] <br><br> Acum, în loc să adăugăm un text aleatoriu, vom adăuga o imagine. Dacă dați clic pe linkul de tip, acesta vă va spune: <br> Pentru a utiliza o imagine într-un fișier .twig: '''{{ image('./files/myfile.png', 'alt-text for my file', {"class": "myclass" }) }}''' <br> Dacă ați citit documentația Twig (și ar fi trebuit să o faceți în acest moment), știți că '''{{ function( ) }}<nowiki /> ''' va ecou rezultatul unei funcții pe ecran. Aici, funcția este imagine( ). <div class="simplebox">[[File:help.png]] Dacă ești curios să știi ce face, îl poți găsi în codul de aici (versiunea RC3): [https://github.com/LimeSurvey/LimeSurvey/blob/f3737a75e428f604d68d2e5ba958f3eba3eba2 Funcția /application/core/LS_Twig_Extension.php#L219-L237 image() în RC3] Dacă nu înțelegeți codul: nu vă faceți griji, nu trebuie să știți cum funcționează, dar de ce să folosește-l și cum să-l folosești. </div> <br> Ar trebui să utilizați funcția image() din două motive: * Imaginea funcției parcurge tema pentru a găsi imaginea. Dacă tema la care lucrați este extinsă la o altă temă și dacă copiați fișierul acolo unde ați inserat imaginea local, dar acea imagine nu este copiată în tema locală, va trece prin arborele de moștenire a temei pentru a găsi unde acea imagine este. * Va folosi administratorul de active, astfel încât va îmbunătăți performanța temei dvs. Consultați documentația Yii Asset Manager pentru mai multe informații despre aceasta: http://www.yiiframework.com/wiki/148/understanding-assets/ <div class="simplebox"> Deci, pentru a adăuga o imagine la tema dvs.: *, încărcați-o ca de obicei cu dispozitivul de încărcare de fișiere din dreapta și apoi adăugați-o acolo unde doriți în orice fișier twig: '''{ { imagine('./files/myfile.png') }}''' * Dacă doriți să adăugați un text alternativ pentru imaginea dvs. (pentru cititoare de ecran și validare HTML), adăugați: {{ image('./files/myfile.png'), ''' 'textul meu alternativ' ' ''}} * Dacă doriți să adăugați un atribut de clasă și să adăugați un id la acesta: {{ image('./files/myfile.png'), „textul meu alternativ”, „'' {“class”: „a_nice_css_class ”, „id”: „any_id”} ''' }} </div> ====Unele lucruri din lista noastră de TO-DO==== * Oferiți utilizatorilor posibilitatea de a încărca un fișier de previzualizare personalizat din editorul însuși * Adăugați un buton pentru a șterge fișierul local și a reveni la declarație moștenită * Copiați doar imaginea folosită în fișierele CSS (prin listarea lor în manifest ca fișier de copiat) * Amintiți-vă pe ce temă extinde cea curentă (dacă există) ==Opțiunile temei== O altă noutate a LS3 este pagina cu opțiunile temei. După cum vom vedea mai târziu, creatorii de teme își pot crea propriile opțiuni și chiar propria lor pagină de opțiuni de administrare. Aici, vom vedea rapid cum funcționează pagina de opțiuni a temelor de bază. Pentru a accesa opțiunile temei la nivel global: faceți clic pe „opțiuni teme” din lista de teme ===Opțiuni avansate=== {{QS:Editor de teme - opțiuni avansate}} <span id="Simple_options"></span> ===Opțiuni simple=== Pagina de opțiune simplă provine din șablonul însuși. Este realizat printr-un fișier twig și niște javascript în directorul /options al temei: https://github.com/LimeSurvey/LimeSurvey/tree/develop/templates/default/options (Link rupt) <div class="simplebox"> [[File:help.png]] Această pagină poate fi complet diferită de la o temă la alta, iar furnizorii de teme sunt încurajați să-și creeze propriul aspect.</div> [[File:Options.png|thumb|750px|center]] <br><br> Pagina cu opțiuni simple completează pur și simplu intrările de formulare avansate. Puteți să-l vedeți activând sau dezactivând o setare în pagina simplă și vedeți cum se modifică în consecință intrarea aferentă în formularul avansat. De exemplu, în opțiunile simple ale șablonului implicit, dacă modificați tema Bootswatch la „Darkly” și apoi faceți clic pe fila pentru opțiuni avansate (chiar și fără salvare), veți vedea că câmpul „Cssframework Css” s-a schimbat din {"replace": [["css/bootstrap.css","css/flatly.css"]]}<br> la<br> {"replace": [["css/bootstrap.css","css/darkly.css"]]} <br> Iată diferitele opțiuni simple pentru temele de bază: *'''Modul Ajax:''' În cazul în care următoarea pagină este încărcată prin ajax (mai rapid) sau prin reîncărcare a paginii (mai bine pentru scopul depanării) *'''Imagine de fundal:''' dacă este setată la Da, imaginea numită pattern.png va fi încărcată (va fi înlocuită cu un selector de fișiere în Master) *'''Container cutie:''' dacă setată la Nu, întrebările nu vor fi conținute într-o casetă (deci puteți utiliza matrice mari mai mari decât lățimea ecranului) *'''Brandlogo:''' dacă este setată la nu, numele sondajului va fi afișat în bara de sus, în caz contrar, puteți selecta una dintre imaginile din directorul de fișiere pentru a fi folosită ca imagine de siglă. *'''Animate body:''' dacă este setată la da, puteți alege una dintre animații de aplicat atunci când corpul sondajului este încărcat *'''Animați întrebarea:''' la fel cu întrebările *'''Alertele animate:''' la fel și cu alertele *'''Bootstrap theme:''' aici, puteți alege o temă Bootstrap pentru a încărca. Vin de la Bootswatch https://bootswatch.com/3/ <br> Biblioteca folosită pentru animații este animate.css: https://daneden.github.io/animate.css/ Bineînțeles, un furnizor de teme ar putea adăuga propria bibliotecă de animație sau nicio bibliotecă de animație. <div class="simplebox">[[File:help.png]] Temele monocrome folosesc aceeași temă de culoare bootstrap ca și interfața de administrator. Nu folosesc sistemul de înlocuire a cadrului CSS, ci pur și simplu adaugă un fișier CSS. Deci, ilustrează un alt mod de a trata teme personalizate pentru furnizorii de teme.</div> <span id="Inheritance_system"></span> ===Sistemul de moștenire=== În partea anterioară, am văzut că o temă poate extinde o altă temă. O configurație de temă poate moșteni și de la o altă configurație de temă. Înseamnă că pentru o anumită temă, puteți avea o configurație la * nivel global (cel pe care tocmai l-am văzut accesibil din lista de teme) * la nivel de grup de sondaj * un ultim la nivel de sondaj. Fiecare parametru la un anumit nivel poate moșteni de la nivelul superior: moștenirea grupului de anchetă. Mai întâi, să vedem nivelul grupului de sondaj. <span id="At_survey_group_level"></span> ====La nivel de grup de anchetă==== Într-adevăr, una dintre celelalte mari noutăți ale LS3 este sistemul de grup de sondaj. Acum puteți crea diferite grupuri pentru a vă organiza sondajele. Pentru a-l accesa, accesați lista de sondaje și apoi faceți clic pe fila grup de sondaje: [[File:Surveygroup.png|thumb|800px|center|''Fila Grupuri de sondaje'']] <br> În această listă, aveți două butoane de acțiune. Dacă grupul este gol, îl puteți șterge. În rest, îl puteți edita oricând. Făcând clic pe butonul de editare, ajungeți la pagina de configurare a grupului de sondaj: [[File:Surveygroupedit.png|thumb|800px|center|''Editarea grupului de sondaj implicit'']] <br> A treia filă a acestei pagini se numește „Opțiuni de șablon pentru acest grup de sondaj”. Dacă dați clic pe el, veți vedea aceeași listă de teme ca în lista de teme, cu excepția faptului că aici este vizibil doar butonul de opțiune (editorul de teme poate fi accesat doar din lista principală). <br> Acum, dacă faceți clic pe opțiunea pentru Șablon implicit, veți vedea asta: [[File:Option group inherit.png|thumb|800px|center|''La Survey Group, Opțiunile șablonului sunt moștenite implicit'']] <br> * '''Moșteniți totul''' înseamnă că toată configurația va fi moștenită de la nivelul de configurare globală. * Dacă accesați „pagina de opțiuni avansate”, veți vedea că toate câmpurile sunt setate să moștenească. * Dacă faceți clic pe „nu” pentru „Moșteniți totul” în opțiuni simple, veți vedea din nou o pagină foarte asemănătoare cu pagina de opțiuni globale. Singura diferență este că pentru fiecare câmp, îl puteți seta la da, nu sau moșteniți; și fiecare selector dropdown are o valoare „moștenire”. [[File:Inherit group.png|thumb|800px|center|''Fiecare setare poate avea o valoare moștenită'']] <div class="simplebox">[[File:help.png]] Un grup de sondaj poate fi un copil al altui grup. În acest caz, va moșteni de la părintele său.</div> ====La nivel de sondaj==== Când editați un sondaj, în meniul din bara din stânga, veți vedea o nouă intrare „Opțiuni teme”. Vă va conduce la pagina de opțiuni a temei selectate pentru sondajul curent. Veți găsi același sistem de moștenire ca și în grupul de sondaj, dar de data aceasta, moștenire înseamnă că setarea va fi moștenită din grupul de sondaj al sondajului. [[File:Options survey.png|thumb|800px|center|''Opțiuni de temă la nivel de sondaj'']] ==Exemplu de caz de utilizare== Să presupunem că utilizați o singură temă pentru diferite companii (A și B). Vă setați opțiunile favorite la nivel global (de exemplu: ajax activat, animați corpul cu un slide, alerte cu puls). Apoi creați un grup de sondaje pentru fiecare companie: un grup de anchete pentru compania A care va găzdui toate sondajele pentru această companie și un sondaj pentru compania B care va găzdui toate sondajele pentru compania B. La acest nivel, veți seta doar logo-ul și fundalul și veți lăsa celelalte opțiuni să moștenească. Deci, toate sondajele din grupa A vor folosi logo-ul companiei A, iar tot sondajul din grupa B logo-ul companiei B. Pentru unul dintre sondajele companiei A, ați putea folosi un fundal diferit în legătură cu subiectul a sondajului: doar schimbați fundalul în opțiuni la nivel de sondaj. Dacă cineva din compania B vă spune că alerta pulsatorie este prea agresivă și ar prefera ceva mai lină, cum ar fi un fade in, trebuie doar să schimbați animația alertei la nivelul Grupului de sondaje B și toate sondajele acestui grup vor folosi acum această animație. Dacă firma A își schimbă logo-ul, îl puteți schimba la nivelul Grupului de Sondaj A, iar toate sondajele acestui grup vor folosi noul logo. <br> <div class="simplebox"> Aceste exemple se bazează pe opțiunile curente ale temei de bază. Dar, desigur, dacă sunteți un furnizor de teme sau dacă puteți să scrieți puțin cu twig, puteți adăuga propriile opțiuni. De exemplu, puteți adăuga o opțiune „subsol de informații” unde puteți adăuga date precum site-ul web al companiei sau un număr de telefon pentru ajutor. Apoi, dacă compania A are departamente diferite, cu numere de telefon diferite, puteți crea doar un subgrup pentru fiecare departament din Grupul de sondaj A. Fiecare subgrup va avea propriul număr de telefon în aceste opțiuni.</div> <span id="FAQ_about_theme_customization"></span> = Întrebări frecvente despre personalizarea temei = Veți găsi aici câteva răspunsuri la întrebările care au fost puse pe forum și care vă pot ajuta să vă personalizați tema. ==Personalizarea CSS/JS: tratați cu managerul de active ("de ce nu sunt aplicate modificările mele?") == <br /> Dacă încercați să actualizați CSS/JS al unei teme prin editarea directă a codului cu editorul preferat, ați putea fi surprins că modificările dvs. nu sunt aplicate. <br /> Din 2.50, LS utilizează Yii asset manager: [http://www.yiiframework.com/wiki/148/understanding-assets/ Yii Documentation about Assets] <br /> Mută fișierele CSS/JS ale unei teme într-un subdirector tmp/ cu un șir aleator (de exemplu: „tmp/1ef64ml/”). Deci, dacă faceți vreo modificare la un fișier css/js și îi spuneți managerului de active, fișierele sunt copiate într-un nou subdirector cu un nume nou, astfel încât memoria cache a browserului utilizatorului să fie actualizată și să vadă noul css/js. . În caz contrar, ar trebui să își curețe memoria cache a browserului. <br /> Aici linkurile CSS din antet când managerul de active este activat: <br /> [[Fișier:Assets on vanilla.jpg]] <br /> După cum puteți vedea, toate se referă la subfolderele tmp/. <br /> Aici linkurile CSS din antet când managerul de active este dezactivat: <br /> [[File:Asset off.png]] <br /> După cum puteți vedea, ele indică fișierele reale ale temei. <br /> <div class="simplebox">[[File:help.png]] Desigur, dacă Managerul de active nu știe că ați schimbat fișierul, fișierul vechi din vechiul tmp/director rămâne neschimbat, iar modificările dvs. nu vor fi aplicate niciodată.</div> Deci, atunci când editați CSS/JS al unei teme, aveți diverse posibilități: *'''Puteți folosi Editorul de teme LS:''' se ocupă de managerul de active și nu trebuie să vă faceți griji pentru orice! N!*'''Puteți activa modul de depanare:''' va dezactiva managerul de active, astfel încât fișierele reale css/js ale temelor dvs. sunt apelate (dar apoi, trebuie să vă reîmprospătați memoria cache a browserului la fiecare încărcare) * '''Puteți reîmprospăta memoria cache a activelor''': din Setări globale -> General -> Ștergeți memoria cache a activelor [[Fișier:Clearassets-ls3 3.png]] <div class="simplebox">[[File:help.png]] '''Folosirea editorului de teme pentru a edita CSS-ul personalizat este de departe cea mai bună soluție.'''</div> Folosirea editorului de teme vă va ajuta să înțelegeți arhitectura noului motor de teme. De asemenea, dacă personalizarea dvs. este fructată, aveți grijă cu specificația CSS: majoritatea definițiilor folosesc selectorul „.fruity” (unul din clasa de elementul corpului) == Adăugarea de fonturi personalizate la tema mea == === Modalitatea ușoară: folosind Google Font CDN === Bootswatch Survey Theme folosește Google Font CDN. Să aruncăm o privire la cum funcționează: https://github.com/LimeSurvey/LimeSurvey/blob/70a1d99cd2ebe411597231a8bc746b4ca9e19584/themes/survey/bootswatch/css/variations./cssly <syntaxhighlight lang="css"> @import url("https://fonts.googleapis.com/css?family=Lato:400,700,400italic"); </syntaxhighlight> Apoi fontul Lato este folosit prin regulile CSS: https://github.com/thomaspark/bootswatch/blob/master/dist/flatly/bootstrap.css#L72 <syntaxhighlight lang="css"> corp { ... familia de fonturi: "Lato"; ... } </syntaxhighlight> Puteți folosi orice font Google în acest fel în tema personalizată. Desigur, ar trebui să eliminați selectorul de fonturi din opțiunile temei dvs. Ștergeți acele linii din options.twig: https://github.com/LimeSurvey/LimeSurvey/blob/70a1d99cd2ebe411597231a8bc746b4ca9e19584/themes/survey/vanilla/options/options.twig#L2309-L#L209 === Folosind fontul local === Desigur, puteți descărca și fișierele cu fonturi și le puteți utiliza de pe serverul local, mai degrabă decât de pe Google CDN (mai bine pentru confidențialitate). Pentru a avea un exemplu despre cum se face, aici versiunea noastră locală a fontului noto: https://github.com/LimeSurvey/LimeSurvey/blob/70a1d99cd2ebe411597231a8bc746b4ca9e19584/assets/fonts/noto.css <syntaxhighlight lang="css"> @font-face { familia de fonturi: 'Noto Sans'; greutate font: 300; font-style: normal; src: url('./font-src/Noto/NotoSans-Regular.ttf'); } ... </syntaxhighlight> Puteți utiliza o definiție foarte asemănătoare în fișierul dvs. de temă css și apoi prin copierea fișierului NotoSans-Regular.ttf în folderul tema css/font-src/. Apoi, aplicați acel font pe corpul dvs. (sau orice alt element) ca mai sus și eliminați selectorul de font implicit al opțiunii. === Crearea propriului selector de fonturi în opțiuni === Deocamdată, nu puteți utiliza cu ușurință selectorul de fonturi de bază pentru a adăuga propriul font în opțiuni. Mai întâi trebuie să oferim utilizatorului final posibilitatea de a încărca pachete personalizate (vezi paragraful următor: O privire asupra Selectorului de fonturi Fruity) <br> Iată cum se procedează: <br> *Adăugați două fonturi (my_custom_font și my_custom_other_font) în tema dvs., folosind CDN sau serverul local *Apoi, în fișierul dvs. css, adăugați două clase noi: <br> <syntaxhighlight lang="css"> .font-my_custom_font { familia de fonturi: 'fontul_my_personalizat'; } .font-my_custom_other_font { familia de fonturi: „my_custom_other_font”; } </syntaxhighlight> *În fișierul XML al temei dvs., adăugați o opțiune de font (una implicită va fi my_custom_font) : <syntaxhighlight lang="xml"> <options> .... <font>fontul_personalizat</font> </options> </syntaxhighlight> * în option.twig, adăugați selectorul de fonturi adăugând acele linii (netestate deocamdată, așa că veniți să vă plângeți pe forum dacă nu funcționează): <syntaxhighlight lang="html"> <div class='row ls-space margin top-15 bottom-15 action_hide_on_inherit'> <hr/> </div> <div class='row action_hide_on_inherit'> <div class='col-sm-12'> <div class='panel panel-default'> <div class='panel-heading'> {{ „Fonturile mele personalizate” | t }}</div> <div class='panel-body'> <div class='form-group row'> <label for='simple_edit_font' class='control-label'>{{ „Selectați fontul:” | t }}</label> <div class='col-sm-12'> <select class='form-control selector_option_value_field' id='simple_edit_font' name='font'> {% dacă templateConfiguration.sid nu este gol sau templateConfiguration.gsid nu este gol %} //Nu ar trebui să fie „temă” în loc de „șablon”? {% set fontOptions = fontOptions ~ '<option value = "inherit" > Moşteni</option> ' %} {% endif %} <optgroup label="{{ "My Custom fonts" | t }}"> <option class="font-my_custom_font" value="custom_font" data-font-package="" > Personalizat</option> <option class="font-my_custom_other_font" value="my_custom_other_font" data-font-package="" > Alte</option> </optgroup> </select> </div> </div> </div> </div> </div> </div> </syntaxhighlight> <br> Acum, utilizatorii dvs. ar trebui să poată alege dintre aceste două fonturi. === O privire asupra Selectorului de fonturi Fruity === În viitor, vom oferi utilizatorului final posibilitatea de a-și încărca propriile pachete de active, inclusiv pachete de fonturi. Va face foarte ușor orice personalizare a fonturilor. <br> Pentru a înțelege Pachetele Yii: <br> http://www.yiiframework.com/doc/api/1.1/CClientScript#packages-detail <br> <br> Pachetele LimeSurvey sunt definite în fișiere diferite. Pachetele de fonturi sunt definite aici: https://github.com/LimeSurvey/LimeSurvey/blob/4c40b61afb0dba8fd80154b50f5831045df8d814/application/config/fonts.php <br> De exemplu, pachetul de fonturi Noto este definit aici: https://github.com/LimeSurvey/LimeSurvey/blob/4c40b61afb0dba8fd80154b50f5831045df8d814/application/config/fonts.php#L47-L53!<br> <syntaxhighlight lang="php"> 'font-noto' => array( 'devBaseUrl' => 'assets/fonts/', 'basePath' => 'fonturi', 'css' => array( ' noto.css', ), ), </syntaxhighlight> <br> Fișierul noto.css pe care îl conține este aici: https://github.com/LimeSurvey/LimeSurvey/blob/4c40b61afb0dba8fd80154b50f5831045df8d814/assets/fonts/noto.css <br> Observați definiția clasei css „.font-noto” la sfârșitul acesteia: <syntaxhighlight lang="css"> @font-face { familia de fonturi: 'Noto Sans'; ... } ... .font-noto{ familia de fonturi: „Noto Sans”; } </syntaxhighlight> <br> Apoi, în Tema Vanilla, fontul noto este folosit prin adăugarea pachetului noto și definirea opțiunii de font la noto: <br> https://github.com/LimeSurvey/LimeSurvey/blob/70a1d99cd2ebe411597231a8bc746b4ca9e19584/themes/survey/vanilla/config.xml#L79 <syntaxhighlight lang="xml"> <packages> .... <add> font-noto</add> </packages> </syntaxhighlight > https://github.com/LimeSurvey/LimeSurvey/blob/70a1d99cd2ebe411597231a8bc746b4ca9e19584/themes/survey/vanilla/config.xml#L58 <br> <syntaxhighlight lang="xml"> <options> .... <font>noto</font> </options> </syntaxhighlight> <br> Apoi, fontul clasei de corp este definit folosind această valoare: https://github.com/LimeSurvey/LimeSurvey/blob/70a1d99cd2ebe411597231a8bc746b4ca9e19584/themes/survey/vanilla/views. layout<syntaxhighlight lang="html"> <body class=" ... font-{{ aSurveyInfo.options.font }} ... " ... > </syntaxhighlight> Desigur, fișierul XML conține doar valorile implicite pentru configurația temei dvs. Dar, într-adevăr, acele valori sunt definite și citite în baza de date (tabelul „template_configuration” (Întrebare: „template_” din „theme_”?) ca șiruri json. Fișierul option.js folosește doar valoarea selectorului de font al opțiunii simple pentru a modifica valoarea din formularul de filă avansat: https://github.com/LimeSurvey/LimeSurvey/blob/70a1d99cd2ebe411597231a8bc746b4ca9e19584/themes/survey/vanilla/options/options.js#L148-L148 Deci, atunci când funcționalitatea „încărcare pachet de materiale” va fi disponibilă, va fi ușor să adăugați un script care scanează toate pachetele de fonturi existente pentru a le adăuga în selector. == Adăugarea de opțiuni de temă pentru a controla poziționarea și afișarea elementelor de sondaj == Acest tutorial va arăta cum să adăugați opțiuni la o temă extinsă pentru a afișa elemente de sondaj în diferite locații. În acest caz, vom crea opțiuni de temă pentru a afișa titlul sondajului în două locații diferite. <div class="simplebox"> [[File:help.png]] De dragul simplității, vom baza tutorialul pe o extensie a temei „bootswatch” din LimeSurvey versiunea 3.4.3.</div> === Creați o temă personalizată === #Extindeți tema „bootswatch” așa cum este descris mai sus. #Copiați <span style="color: #BA2121;">custom.css</span> la tema locală, așa cum este descris mai sus. ===Creați noi opțiuni de temă=== #Copiați conținutul <span style="color: #BA2121;">/themes/survey/bootswatch/options/</span> în <span style="color: #BA2121;">/upload/themes/survey/yourThemeName/options/</span> . #Open <span style="color: #BA2121;">/upload/themes/survey/yourThemeName/ options/options.twig</span> într-un editor și găsiți „{# Bootstrap Bootswatch theme #}”. Direct înaintea părintelui său<nowiki><div class='row'></nowiki> element, adăugați acesta:<syntaxhighlight lang="html"> {# Nume personalizat sondaj în bara de navigare #} <div class='row'> <div class='col-sm-12 col-md-6'> <div class='form-group row'> <label for='simple_edit_options_surveyname1' class='control-label'>Numele sondajului în bara de navigare</label> <div class='col-sm-12'> <div class="btn-group" data-toggle="buttons"> <label class="btn btn-default"> <input name='surveyname1' type='radio' value='on' class='selector_option_radio_field ' data-id='simple_edit_options_surveyname1'/> Da </label> <label class="btn btn-default"> <input name='surveyname1' type='radio' value='off' class='selector_option_radio_field ' data-id='simple_edit_options_surveyname1'/> Non!</label> </div> </div> </div> </div> </div> <div class='row'> <hr/> </div> {# Nume personalizat sondaj sub bara de progres #} <div class='row'> <div class='col-sm-12 col-md-6'> <div class='form-group row'> <label for='simple_edit_options_surveyname2' class='control-label'>Numele sondajului sub bara de progres</label> <div class='col-sm-12'> <div class="btn-group" data-toggle="buttons"> <label class="btn btn-default"> <input name='surveyname2' type='radio' value='on' class='selector_option_radio_field ' data-id='simple_edit_options_surveyname2'/> Da </label> <label class="btn btn-default"> <input name='surveyname2' type='radio' value='off' class='selector_option_radio_field ' data-id='simple_edit_options_surveyname2'/> Non!</label> </div> </div> </div> </div> </div> <div class='row'> <hr/> </div></syntaxhighlight> #Deschide <span style="color: #BA2121;">/upload/themes/survey/yourThemeName/config.xml</span> și adaugă două elemente în blocul „opțiuni”, astfel încât să arate astfel:<syntaxhighlight lang="xml"><options> <ajaxmode> pe</ajaxmode> ... <surveyname1> pe</surveyname1> <surveyname2> pe</surveyname2> </options></syntaxhighlight> #Acest lucru ar trebui să vă ofere două noi opțiuni în ecranul Opțiuni teme, astfel:<br /> [[Fișier:Tutorial_tp_1_1.png]] ===Vizualizare modificată pentru titlul sondajului în bara de navigare=== #Creați un director nou <span style="color: #BA2121;">/upload/themes/survey/yourThemeName/views/subviews/header/</span> . #Copy <span style="color: #BA2121;">/themes/survey/vanilla/ views/subviews/header/nav_bar.twig</span> în acel director nou. #Deschide <span style="color: #BA2121;">/themes/survey/vanilla/views/subviews/header/nav_bar.twig</span> și găsește „{# Logo option #}”. Sub aceasta, modificați instrucțiunea IF pentru sigla/numele sondajului, astfel încât să arate astfel:<syntaxhighlight lang="html"> {# Opțiune logo #} {% if( aSurveyInfo.options.brandlogo == „on”) %} <div class="{{ aSurveyInfo.class.navbarbrand }} logo-container" {{ aSurveyInfo.attr.navbarbrand }} > {{ imagine(aSurveyInfo.options.brandlogofile, aSurveyInfo.name, {"class": "logo img-responsive"}) }} </div> {% endif %} {% if( aSurveyInfo.options.surveyname1 == „activat”) %} <div class="{{ aSurveyInfo.class.navbarbrand }}" {{ aSurveyInfo.attr.navbarbrand }} > {{ aSurveyInfo.name }} </div> {% endif %}</syntaxhighlight> #Adăugați ceva de genul acesta la <span style="color: #BA2121;">/upload/themes/survey/yourThemeName/css/custom.css</span> :<syntaxhighlight lang="css"> .navbar-brand { înălțimea liniei: 60px; dimensiunea fontului: 32px; }</syntaxhighlight> #Comută opțiunea temei „Numele sondajului în bara de navigare” la „Da” #Ar trebui să vezi asta:<br /> [[File:Tutorial_tp_1_2.png]] ===Vizualizarea modificată pentru titlul sondajului sub bara de progres=== #Creați un director nou <span style="color: #BA2121;">/upload/themes/survey/yourThemeName/views/subviews/survey/group_subviews</span> . #Copiați <span style="color: #BA2121;">/themes/survey/vanilla/views/subviews/survey/group_subviews/group_container.twig</span> în acel director nou. <span style="color: #BA2121;">#Deschideți /themes/survey/vanilla/views/subviews/survey/group_subviews/group_container .cremură</span> și adăugați un<nowiki><h1></nowiki> element pentru numele sondajului. Deci arata cam asa: <syntaxhighlight lang="html"><div class="{{ aSurveyInfo.class.groupcontainer }} space-col" {{ aSurveyInfo.attr.groupcontainer }}> {# Nume personalizat sondaj #} {% if( aSurveyInfo.options.surveyname2 == „activat”) %} <h1 class="custom-survey-name"> {{ aSurveyInfo.name }}</h1> {% endif %} {# Nume grup #} {{ include('./subviews/survey/group_subviews/group_name.twig') }} {# Descrierea grupului #} {{ include('./subviews/survey/group_subviews/group_desc.twig') }} {# PREZENTĂ ÎNTREBĂRILE Aceasta este partea principală. Va reda fiecare întrebare pentru acest grup #} <!-- PRESENT THE QUESTIONS --> {% pentru o întrebare în aGroup.aQuestions %} {{ include('./subviews/survey/question_container.twig') }} {% endfor %} <!-- Hidden inputs --> {% if aGroup.show_last_group == adevărat %} <input type='hidden' name='lastgroup' value='{{ aGroup.lastgroup }}' id='lastgroup' /> {% endif %} {% if aGroup.show_last_answer == adevărat %} <input type='hidden' name='lastanswer' value='{{ aGroup.lastanswer }}' id='lastanswer' /> {% endif %} </div></syntaxhighlight> # Adăugați ceva de genul acesta la <span style="color: #BA2121;">/upload/themes/survey/yourThemeName/css/custom.css</span> :<syntaxhighlight lang="css"> .navbar-brand { line-height: 60ph1.custom-survey-name { marja: 0; text-align: center; }</syntaxhighlight> #Comută opțiunea temei „Numele sondajului sub bara de progres” la „Da” #Ar trebui să vezi asta:<br /> [[Fișier:Tutorial_tp_1_3.png]] ===Descărcări=== * Exemplu de temă extinsă: [[Media:Test_survey_names.zip]] =Crearea unei teme de la zero= Documentarea va veni în curând. Deocamdată, oferă doar câteva sfaturi. <span id="Theme_structure"></span> ==Structura temei== === Fișiere și directoare === Când creați o Temă de la zero, nu trebuie să respectați structura fișierului/directorului/css/js de la Vanilla. Css/js obligatoriu este adăugat de bază (încă îl puteți elimina dacă este necesar) Singurele fișiere pe care trebuie să le aibă tema dvs. sunt fișierele de aspect: * '''layout_global.twig''': redă paginile pentru efectuarea sondajului * '''layout_survey_list.twig''': redă lista de sondaje (dacă această temă este setată implicit) * '' 'layout_errors.twig''': folosit pentru a reda erorile care blochează randarea sondajului. (ID sondaj greșit, grup gol în grupul de previzualizare etc.) * '''layout_user_forms.twig''': redă formularele utilizator, cum ar fi: token (participant la sondaj) și înregistrare. * '' 'layout_print.twig''': folosit pentru a tipări sondajul în pdf * '''layout_printanswers.twig''': tipăriți răspunsurile Conținutul acelor fișiere, fișierele pe care le includ sau nu, depinde în întregime de dvs. Toate celelalte fișiere și directoare pe care le găsiți pe Vanilla sunt pur opționale, nu ezitați să vă organizați codul așa cum doriți. <div class="simplebox">[[File:help.png]] Dacă citiți codul de redare pentru interfață, veți vedea că acele nume de fișiere apar direct în el. De aceea sunt obligatorii. De exemplu: https://github.com/LimeSurvey/LimeSurvey/blob/2398dda3b425da1a37d4611cd7963d39ac739987/application/helpers/SurveyRuntimeHelper.php#L462 </div> <span id="Content"></span> === Conținut === În layout_global.twig de la Vanilla, veți vedea că folosim o variabilă numită „include_content” pentru a decide ce să arătăm layout_global.twig#L114-L115 <syntaxhighlight lang="php"> {% set sViewContent = './subviews/content/' ~ aSurveyInfo.include_content ~ '.twig' %} {% include './subviews/content/outerframe.twig' cu {'include_content': sViewContent } %} </syntaxhighlight> aSurveyInfo.include_content vă spune ce acțiune se desfășoară în prezent: afișați întrebări? afișează rezultatul trimiterii? arata clar tot? etc După cum puteți vedea, în vanilie, creăm un fișier pe care să îl includem prin acțiune. Deci, dacă doriți să aflați lista de acțiuni, verificați doar directorul vaniliei „views/subviews/content” și eliminați extensia „twig” : https://github.com/LimeSurvey/LimeSurvey /tree/2398dda3b425da1a37d4611cd7963d39ac739987/themes/survey/vanilla/views/subviews/content * '''clearall.twig''' * '''firstpage.twig''' * '''load.twig''' * '''mainrow.twig''' * '''main.twig''' * '''optin.twig''' * '''optout.twig''' * '''outerframe.twig'' ' * '''printanswers.twig''' * '''quotas.twig''' * '''register.twig''' * '''save.twig ''' * '''submit_preview.twig''' * '''submit.twig''' * '''userforms.twig''' Dacă ați creat deja un lor pentru versiunile 2.x ale LimeSurvey, veți observa că majoritatea dintre ele corespund vechilor fișiere pstpl pentru limesurvey 2.x. Din nou, nu există nicio obligație pentru dvs. în tema dvs. de a crea acele fișiere, cu acele nume, în acest director. Puteți, de exemplu, să adăugați un comutator gigant în layout_global.twig cu HTML dorit pentru fiecare acțiune. <span id="The_manifest_config.xml"></span> === Manifestul config.xml === Manifestul temei conține informațiile principale despre tema ta. Când instalați o temă, conținutul manifestului va fi încărcat în baza de date, în două tabele diferite: template și template_configuration. Deci, de fiecare dată când modificați manifestul unei teme, trebuie să o dezinstalați și să o reinstalați (sau pur și simplu să o resetați). Deoarece acest proces este enervant în timpul dezvoltării unei teme, puteți forța utilizarea directă a fișierului XML, mai degrabă decât a intrărilor DB. Pentru a face acest lucru, în config.php activați modul de depanare și „force_xmlsettings_for_survey_rendering” la true. <span id="The_metadata_section"></span> ==== Secțiunea de metadate ==== Nimic complex: doar informațiile principale despre tema ta. Acesta va fi introdus în tabelul templates_configuration <syntaxhighlight lang="xml"> <metadata> <name> numele_temei_voastre</name> <title> Titlul temei dvs</title> <creationDate> 16.10.2017</creationDate> <author> Numele dumneavoastră</author> <authorEmail> your@email.org</authorEmail> <authorUrl> http://www.yourwebsite.org</authorUrl> <copyright> Dreptul de autor</copyright> <license> Licența temei dvs</license> <version> versiunea temei dvs</version> <apiVersion> 3</apiVersion> <description> Descrierea temei dvs</description> <extends> tema_parinte</extends> </metadata> </syntaxhighlight> Câteva remarci: * '''nume''': va fi folosit ca o cheie în db. Deci trebuie să fie unic și să nu aibă caractere speciale (fără spații). Rețineți că cazurile nu vor fi luate în considerare * '''Titlu''': va fi folosit pentru a afișa numele temei dvs. în diferitele liste. Poate avea caractere speciale * '''descriere''': va fi folosită în lista principală a temei sondajului. Poate conține caractere speciale și chiar cod HTML folosind * '''extends''': opțional, definește temele părinte. Deci, dacă niciun fișier nu este prezent în această temă (twig/js/css/jpg, etc) îl va căuta în tema părinte <div class="simplebox">[[File:help.png]] Dacă ați extins una dintre cele 3 teme de bază (Vanilla, Bootswatch, Fruity), puteți modifica valoarea „extinde” de la o temă părinte la alta. Desigur, va trebui să resetați tema.</div> <span id="The_files_section"></span> ==== Secțiunea fișiere ==== Acesta este unul important. Acesta va fi împins în tabelul template_configuration, în câmpul files_css, files_js, files_print_css ca matrice json. De exemplu: secțiunea de fișiere a temei Material Premium: <syntaxhighlight lang="xml"> <files> <css> <add> css/bootstrap-material-design.css</add> <add> css/ripples.min.css</add> <replace> css/ajaxify.css</replace> <replace> css/theme.css</replace> <replace> css/custom.css</replace> <remove> awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css</remove> </css> <js> <replace> scripts/theme.js</replace> <replace> scripts/ajaxify.js</replace> <add> scripts/material.js</add> <add> scripts/ripples.min.js</add> <replace> scripts/custom.js</replace> </js> <print_css> <add> css/print_theme.css</add> </print_css> </files> </syntaxhighlight> Toate fișierele CSS/JS prezente în această secțiune vor fi încărcate la lansarea sondajului (în modul ajax. Dacă modul ajax este dezactivat, atunci, desigur, toate fișierele sunt reîncărcate la fiecare pagină). Acestea vor fi adăugate la un pachet de active Yii pe baza numelui temei. Deci, când Asset Manager este activat (modul de depanare fiind dezactivat), acele fișiere vor fi copiate în directorul tmp cu restul temei (deci puteți utiliza calea relativă în CSS și JS pentru a ajunge la fișierele imagine). Despre managerul de active din Yii: https://www.yiiframework.com/wiki/148/understanding-assets Despre pachete din Yii: http://www.yiiframework.com/doc/api/1.1 /CClientScript#packages-detail Ei vor folosi sistemul de moștenire. Înseamnă că dacă adăugați un fișier CSS/JS la o temă, dar acesta nu este prezent în temă, atunci motorul va analiza toate temele mamă ale acestei teme și o va folosi pe prima pe care o găsește. Deci, dacă un utilizator vă extinde tema prin intermediul editorului de teme, toate acele fișiere vor fi moștenite în tema sa. Cuvintele cheie se referă la acest sistem de moștenire. * '''adăugați''': va adăuga fișierul la temă și la toată tema moștenită * '''înlocuiți''': va înlocui fișierul temei sale mamă * '''eliminați''': va elimina fișierul din '''orice pachet''', chiar și pachetul de bază (din 3.14) <div class="simplebox">[[File:help.png]] Amintiți-vă că puteți seta în config.php „force_xmlsettings_for_survey_rendering” astfel încât configurația să fie citită din XML în loc de DB (nu este necesară resetarea). Acest lucru va face mai ușor să testați modificările fișierelor XML și vă va evita să dezinstalați/reinstalați tema la fiecare modificare a fișierului XML.</div> Câteva observații despre acele cuvinte cheie: ===== Sfaturi de moștenire ===== După cum sa explicat mai înainte, cuvântul cheie „adăugați” se poate referi la un fișier care se află într-una dintre temele mamei. Deci, puteți „adăuga” un fișier în această secțiune și tot nu aveți acest fișier în tema dvs., ci într-una dintre tema părinților. Motorul va analiza toate temele sale părinte și o va folosi pe prima pe care o găsește. Dacă nu poate găsi fișierul și modul de depanare este activat în configurație, iar modul de depanare js frontend este activat în setarea globală, un mesaj în consolă vă va avertiza. De exemplu: dacă adăugăm o temă_mea:<add> css/unexisting.css</add> , în consolă vom vedea: <syntaxhighlight lang=""> (¯`·._.·(¯`·._.· Eroare de configurare a temei ·._.·´¯)·._.·´¯) Nu se găsește fișierul „css/unexisting.css” definit în tema „my_theme” </syntaxhighlight> Dacă modul de depanare este dezactivat, atunci nu se va vedea nicio eroare. Motorul va ignora pur și simplu declarațiile de adăugare greșite. <span id="When_to_use_add,_when_to_use_replace,_when_can_I_just_leave_it_to_the_parent_theme?"></span> ===== Când să folosesc adăugare, când să folosesc înlocuire, când pot lăsa doar tema părinte? ===== În primul rând: adăugați și înlocuiți sunt același cuvânt cheie. Puteți folosi una sau alta, motorul va face la fel. Sunt distincte pentru cititorii umani, așa că înțeleg care a fost intenția ta. Nu puteți adăuga un fișier cu același nume cu tema mamă: îl va înlocui întotdeauna. de exemplu: Dacă aveți un fișier numit „my_mother_theme/foo.css” și adăugați un fișier numit „foo.cs” în tema fiică, numai „daughter_theme/foo.css” va fi adăugat la temă. Dacă doriți să păstrați „tema_mamă/foo.css”, alegeți un alt nume pentru „tema_fiică/foo.css”, cum ar fi „tema_fiică/bar.css”. Deci cuvântul cheie „adăugați” poate fi folosit ca cuvânt cheie „înlocuiți”. Dacă vă întrebați de ce: acest lucru face mult mai ușoară generarea automată a temei moștenite, copierea secțiunii fișierului funcționează imediat (nu este nevoie să redenumiți „adăugați” cu „înlocuiți” atunci când extindeți unul dintre fișiere). Pentru a fi clar, să luăm exemplul Fruity. Aici secțiunea fișierului CSS: <syntaxhighlight lang="xml"> <css> <add> css/variations/sea_green.css</add> <replace> css/animate.css</replace> <replace> css/theme.css</replace> <replace> css/custom.css</replace> </css> </syntaxhighlight> Dacă te uiți la fișierul custom.css în fruity, este exact același cu cel de vanilie. Am putea șterge fișierul custom.css din fruity, cel de vanilie s-ar încărca. Am putea elimina declarația<replace> CSS personalizat</replace> din manifestul Fruity, se va folosi declarația de la vanilla și ar fi încărcat vanilla custom.css. Deci de ce folosim afirmația<replace> CSS personalizat</replace> în interiorul manifestului fructat? Răspunsul este ușor: pentru că dorim ca utilizatorul final să poată extinde tema fructată, să modifice fișierul în tema sa locală și să încarce acest fișier modificat din tema moștenită. Pentru a înțelege, extindeți doar fructele și aruncați o privire la tema extinsă. Tema extinsă nici măcar nu are fișierul custom.css. Deci se va folosi cea de fructe. Dar: dacă utilizatorul creează acest fișier în tema extinsă (făcând clic pe „extend” în editorul de teme), atunci acest fișier va fi încărcat din tema lui. Deci, în general: dacă creați o temă de la zero fără a extinde nicio temă, utilizați instrucțiunea add pentru a adăuga fișierele dvs. css/js. Simplu. dacă creați o temă care extinde o altă temă și nu doriți ca utilizatorii să poată extinde fișierul css/js din tema mamă: nu utilizați instrucțiunea add în manifest. Fișierele vor fi încă încărcate din configurația temei mamă. dacă creați o temă care extinde o altă temă și doriți să înlocuiți un fișier din tema mamă: utilizați cuvântul cheie înlocuiți (cuvântul cheie add va avea același rezultat) dacă creați o temă care extinde o altă temă, dacă nu înlocuiți un anumit fișier din css/js, dar doriți ca utilizatorii să poată extinde acest fișier: atunci utilizați declarația „replace” din manifest pentru acest fișier. Chiar dacă nu înlocuiți fișierul, folosind cuvântul cheie înlocuiți în manifest: permiteți utilizatorului să o facă dacă dorește să o facă. Doar acest ultim caz are nevoie de puțină gimnastică mentală pentru a înțelege, toate celelalte cazuri sunt banale. <div class="simplebox">[[File:help.png]] De asemenea, puteți înregistra fișiere CSS și JS direct din codul twig. Aceste fișiere vor fi încărcate numai atunci când este solicitat fișierul twig. Dacă doriți ca utilizatorii să poată moșteni acele fișiere JS/Css din editorul de teme, nu uitați să utilizați funcțiile {{registerTemplateCssFile('my_style.css')}} și {{registerTemplateScript('my_script.js')}} . Dacă nu utilizați aceste funcții, tema dvs. poate funcționa, dar moștenirea pe ea va fi ruptă. Este aceeași logică ca și funcția {{image('my_picture.jpg')}} </div> <span id="The_remove_keyword"></span> ===== Cuvântul cheie remove ===== Cuvântul cheie remove este disponibil numai din 3.14. Cu acesta, puteți elimina orice css/fișier din orice pachet, chiar și pe cele de bază. Este folosit în Tema Material Premium pentru a elimina fișierele casetei de selectare Awseome Bootstrap: <syntaxhighlight lang="xml"> <remove> awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css</remove> </syntaxhighlight> deci ar trebui să utilizați aceeași sintaxă ca și fișierul pachetului (de exemplu: „awesome-bootstrap-checkbox.css” singur fără calea folderului nu ar funcționa). Veți găsi lista completă a pachetelor de bază și fișierele acestora în /application/config/packages.php și config/third_party.php. De exemplu, pentru awesome-bootstrap-checkbox.css: https://github.com/LimeSurvey/LimeSurvey/blob/2398dda3b425da1a37d4611cd7963d39ac739987/application/config/packages.php#L54 <syntaxhighlight lang="php"> 'css'=> matrice( 'awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css', ), </syntaxhighlight> O altă modalitate de a găsi numele exact de utilizat în eticheta de eliminare este să activați managerul de active (dezactivarea modului de depanare sau setarea „use_asset_manager”=>true în configurație). Apoi, calea de utilizat va fi cea imediat după directorul aleatoriu din directorul tmp. De exemplu, pentru awesome-bootstrap-checkbox.css: <syntaxhighlight lang="html"> <link rel="stylesheet" type="text/css" href="/tmp/assets/cbc4e3cb/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css" /> </syntaxhighlight> Fișierele pe care nu ar trebui să le eliminați: '''jquery-3.1.1.min.js''': necesar '''jquery-migrate-3.0.0.min.js''': necesar '''survey.js''': necesar '''moment-with-locales.min.js''': necesar pentru tipul de întrebare despre dată (și alte câteva cred) '''em_javascript.js''': necesar pentru toate JavaScript ExpressionScript <span id="The_options_section"></span> ==== Secțiunea de opțiuni ==== Această secțiune este legată de opțiunea temei dvs. Acesta va fi folosit pentru a alimenta „opțiunile” fișiere ale tabelului template_configuration ca o matrice json. <span id="Further_information"></span> === Informații suplimentare === * [[Tema:Funcția disponibilă]] <span id="Some_notes"></span> == Câteva note == '''NOTĂ''': dacă editați fișierul XML al unei teme, trebuie să dezinstalați și să reinstalați tema astfel încât să fie luată în considerare. '''NOTĂ''': pentru a evita acest lucru, puteți forța utilizarea XML-ului mai degrabă decât DB. În config.php activați modul de depanare și anulați comentariile: 'force_xmlsettings_for_survey_rendering' => adevărat, // Anulați comentariul dacă doriți să forțați utilizarea fișierului XML în loc de DB (pentru dezvoltarea uşoară a temei) Atenție: totul va fi încărcat din XML (opțiuni incluse etc.) '''NOTĂ''': dacă editați manual fișierele CSS/JS (fără a utiliza Editorul de teme) și dacă modul de depanare este dezactivat, acum puteți forța ca materialul să fie șters. În „Setări globale”, „Fila General”, faceți clic pe butonul „Ștergeți cacheul activelor”. '''NOTĂ''': dacă eliminați secțiunea