LimeSurvey 7 -kenttänimien uudistus
From LimeSurvey Manual
Kenttänimien ja vastaustaulukoiden uudistus - LimeSurvey 7
LimeSurvey 7 tuo mukanaan mittavan siivouksen siihen, miten vastaustaulukot ja kenttänimet muodostetaan. Päivitys uudistaa pitkään käytössä olleita sisäisiä nimeämiskäytäntöjä ja luo ennustettavamman ja kestävämmän perustan lisäosille, integraatioille ja tulevalle kehitykselle.
Tällä sivulla keskitytään vastaustaulukoiden ja kenttänimien uudistukseen.
Koska kyseessä on rakenteellinen muutos, vanhoihin nimiin tukeutuvat omat toteutukset voivat vaatia päivityksiä. Tällä sivulla kerrotaan, mikä muuttuu, miten voit testata turvallisesti ja miten valmistaudut päivitykseen.
1. Mikä muuttuu
1.1 Uudet taulukoiden nimet
LimeSurvey käyttää nyt yhdenmukaista nimeämistapaa vastauksiin liittyville taulukoille.
| Vanha taulukon nimi | Uusi taulukon nimi |
|---|---|
old_survey_<sid>_<timestamp>
|
old_responses_<sid>_<timestamp>
|
old_survey_<sid>_timings_<timestamp>
|
old_timings_<sid>_<timestamp>
|
survey_<sid>
|
responses_<sid>
|
survey_<sid>_timings
|
timings_<sid>
|
Kaikki näihin taulukoihin viittaavat SQL-kyselyt, integraatiot tai lisäosat voivat vaatia muutoksia.
1.2 Uusi kenttänimien rakenne
Kenttänimet noudattavat nyt ennustettavaa ja yhdenmukaista muotoa. Esimerkkejä:
Q<questionId>- päätason kysymysQ<questionId>_S<subquestionId>- alikysymyksetQ<questionId>_C<suffix>- kommentti- tai muut kentät- sijoituskentät:
Q<questionId>_S<subquestionId>- sijoituskohteet ovat nyt alikysymyksiä (katso 1.3) - aikakentät: kysymystason tai ryhmätason kenttiä tilanteesta riippuen
Tämä korvaa vanhan sidXgidXqid-pohjaisen nimeämisen.
1.3 Sijoituskysymykset
Sijoituskysymykset toimivat nyt kuten muut alikysymyksiin perustuvat kysymystyypit:
- Kohteet ovat alikysymyksiä. Sijoitettavat kohteet tallennetaan alikysymyksinä (tyyppi
R), ei vastausvaihtoehtoina. - Kenttänimet noudattavat alikysymysten vakiomuotoa
Q<questionId>_S<subquestionId>(yksi kutakin sijoitettua kohdetta kohden). - Vastaukset tallennetaan yhteen JSON-sarakkeeseen
Q<questionId>järjestettynä taulukkona kohteiden koodeista, jossa sijainti = sijoitus. Esimerkki:["3", "1", "2"]
2. Miksi tällä on merkitystä
Tämä siivous koskee nimeämiskäytäntöjä, jotka määriteltiin virallisesti ja olivat käytössä monta vuotta, ja tuo ne yhdenmukaiseen ja kestävään rakenteeseen, jonka varaan voimme rakentaa tulevaisuudessa.
Tällaiset rakenteelliset muutokset ovat harvoin yksinkertaisia. Ne koskettavat järjestelmän osia, joihin monet lisäosat ja integraatiot tukeutuvat, minkä vuoksi ne jäävät usein toteuttamatta monimutkaisuutensa takia. Johdonmukaisuus ja ennustettavuus ovat kuitenkin tärkeitä pitkän aikavälin vakauden kannalta.
Kun tartumme asiaan nyt, LimeSurvey on siistimpi ja helpompi laajentaa, vaikka muutos onkin pinnalta katsoen enimmäkseen näkymätön.
3. Uusien kenttänimien esikatselu
Näet, miten mikä tahansa olemassa oleva kenttänimi vastaa uutta LS7-rakennetta, seuraavasti:
- Tee tietokannasta varmuuskopio, sillä muutokset eivät ole peruttavissa, ja jos jokin menee pieleen, on hyödyllistä palauttaa tietokanta ennen muutosta olleeseen tilaan.
- Siirry develop-major-haaraan:
git checkout develop-major
tai kloonaa/lataa projekti suoraan tästä haarasta osoitteesta https://github.com/LimeSurvey/LimeSurvey/tree/develop-major - Lataa jokin ylläpitosivu käynnistääksesi muutoskomentosarjan.
- Ilmoita mahdolliset virheet, joita muutoskomentosarjan suorituksen aikana ilmenee.
- Tutustu uusiin taulukoiden ja kenttien nimiin.
- Testaa lisäosasi ja teemasi ja korjaa taulukoiden ja/tai kenttien nimiin liittyvät virheet.
Vanhojen kenttänimien muuntamiseen uusiksi kenttänimiksi käytetään seuraavaa funktiota:
getFieldName($tableName, $fieldName, $questions, $sid, $gid, $cd)
Parametrit
- $tableName - alkuperäinen taulukon nimi
- $fieldName - alkuperäinen kenttänimi
- $questions - päätason kysymys ja sen alikysymykset
- $sid - Kysely ID
- $gid - Ryhmän tunniste
- $cd - sovelletaanko Ehtojen suunnittelu -logiikkaa
Tulos
Funktio palauttaa kyseisen vastauskentän uuden LS7-kenttänimen.
4. Muutosten turvallinen testaaminen
LS7:ää on erittäin suositeltavaa testata erillisessä ympäristössä ennen tuotantojärjestelmien päivittämistä.
4.1 Asenna LS7 erilliseen ympäristöön
Lataa uusin LS7 osoitteesta:
https://community.limesurvey.org
Asenna se erillään nykyisestä asennuksestasi.
4.2 Tuo olemassa olevat aineistosi
Testaa seuraavilla:
- kyselyt
- Kyselyn teemat
- Ylläpitoteemat
- Kysymyksen teemat
- lisäosat
- mukautettu JavaScript
- kaikki itse rakentamasi mukautetut integraatiot
Tarkista, toimiiko kaikki odotetusti uusilla taulukoiden ja kenttien nimillä. Päivitä kaikki koodi, joka perustuu vanhoihin nimiin.
4.3 Miten migraatio käynnistetään?
Jos haluat esikatsella migraatiologiikkaa testiasennuksessasi:
- Varmuuskopioi tietokantasi.
- Asenna LS7-versio.
- Lataa mikä tahansa hallintasivu suorittaaksesi migraatioskriptin.
- Tarkista taulukoiden ja kenttien nimien muutokset.
- Testaa sovellus.
- Päivitä mukautettu koodi tarvittaessa.
4.4 Ilmoita ongelmista
Kiitos, että testaat tätä jo varhaisessa vaiheessa. Jos huomaat ytimessä jotain outoa, ilmoita siitä, jotta voimme korjata asian mahdollisimman pian.
5. Mitkä asiat voivat vaatia päivityksiä
Seuraaviin voi tarvita muutoksia:
- lisäosat, jotka viittaavat vanhoihin kenttien nimiin tai taulukoiden nimiin
- kaikki itse rakentamasi mukautetut integraatiot
- JavaScript, joka käyttää kenttien nimiin perustuvia valitsimia
- mukautetut teemat, jotka käyttävät vastauksiin liittyviä tunnisteita
- integraatiot, jotka riippuvat aiemmasta nimeämistavasta
- vanhojen vientitiedostojen, kuten kyselyiden, teemojen, kysymysteemojen jne., tuonti
Tämä on odotettua ja kuuluu päivitysprosessiin.
6. Yhteenveto
- LS7 uudistaa vastaustaulukoiden ja kenttien nimeämisen kokonaan
- Tämä on LS7:n tärkein rakenteellinen taustajärjestelmän muutos
- Testaaminen erillisessä ympäristössä on erittäin suositeltavaa
getFieldName()auttaa esikatselemaan tulevaa nimeämistä- Päivitä mukautettu koodi tarvittaessa
- Ilmoita ongelmista ajoissa, jotta lopullinen julkaisu saadaan vakaaksi