Actions

Difference between revisions of "Public Survey Views"

From LimeSurvey Manual

(Next improvement / Extendable template)
(Some decision to do: Added new chapter after discussion with Tammo)
Line 35: Line 35:
 
** Add no-js/js class in Core (html class="no-js") , and add an helper class js-hidden js-display (bootstrap don't have one) : https://modernizr.com/docs#no-js (because I ( [[User:DenisChenu|DenisChenu]] ([[User talk:DenisChenu|talk]]) ) like it ;) )
 
** Add no-js/js class in Core (html class="no-js") , and add an helper class js-hidden js-display (bootstrap don't have one) : https://modernizr.com/docs#no-js (because I ( [[User:DenisChenu|DenisChenu]] ([[User talk:DenisChenu|talk]]) ) like it ;) )
 
** Did we need other modernizer feature ?
 
** Did we need other modernizer feature ?
 +
 +
= Possible next steps for better templates =
 +
To make maintaining templates easier and offering more flexibility to template designers, we need a cleaner separation of code and possibly implement the concept of child themes (this is what Wordpress calls it).
 +
 +
== Short term ==
 +
''(Could be Limesurvey 2.6)''
 +
* Have one basic template using Bootstrap's main details only (Tammo has one at hand)
 +
* Create the three shipped templates based on that template
 +
* Clean up view HTML and the templates PSTPL files
 +
* ... please continue...
 +
 +
== Long term ==
 +
''(Could be Limesurvey 3)''
 +
* Switch to a template engine (Twig, maybe Mustache)
 +
* Implement concept of child themes
 +
* Clearly separate HTML structure and functions
 +
* ... to be continued...
  
 
= Linked mantis =
 
= Linked mantis =

Revision as of 16:18, 5 September 2016

(Public = front-end)

Reworking on Public (survey) views. Actually we have ANSWERS part done by views : https://github.com/LimeSurvey/LimeSurvey/tree/master/application/views/survey/questions (thanks to Louis)

I ( DenisChenu (talk) ) want to rework all this answers part (and some other) to be

  • Easily CSS managed
  • More easily jquery managed (data/global class/tag etc ...)
  • More easily reusable by Plugins (plugin can update {ANSWERS} part and use same file than core (using renderPartial)

Then : need some help for "what is the best for LimeSurvey core to become the best survey tools and the more easily hackable survey tool".

Actual idea to do

  • Usage of bootstrap part, add more if it's OK and it's useful/helpful. Fix some part
  • Remove the empty label : move the label to the answer/subquestion text (like in 2.06)
  • Remove the uneeded label (for 508 issue), and use a core plugin to add it to question part (labelled-by to be clean)
  • Usage of specific class : answer-item / radio-item / checkbox-item : needed or not ? What mus be improved ?
  • usage of checkbox/radio class : actually on wrapper and on input : one must be removed for sure. The warapper is here for bootstrap-awesome-checkbox : leave it or update bootstrap-awesome-checkbox
  • I ( DenisChenu (talk) ) want to readd ul/li : think it's more quick to do a $("li").each : then answer and subquestion are taken. And more : i think it'"s a list of answers, a lits of question.
  • All part must be "near same" : HTML produced must have same class and tag if possible.
  • Add string in replacement then asterisk. For screen reader at minima.

Some decision to do

  • Views, sub views and sub sub views
    • Use of some "global part, non dependant of question type : for example : views/radio/radio.php with only the input[radio]
    • Or all part in his specific QuestionType/ directory
    • Possible solution : for example : views/survey/questions/arrays/array/dropdown/item.php include views/survey/item/select.php
  • Replace variable by object
    • Actually : controllers make all vars, and views use only fixed vars.
    • Maybe it's best to send the question object (with lang), the array of sub questions object, the array of answers object, the array of question attributes
  • HTML5
    • nav/section etc .... must leave in template (I think) : confirm ?
    • Usage of HTML5 input : leave it for plugin OR in core ? Difficulty with some input : for example input[date] is totally not adaptable, only browser dependant. Same for input[number] : no radix control. (More work than i want to do actually Denis (talk) )
  • no-js functionality (modernizer)
    • Add no-js/js class in Core (html class="no-js") , and add an helper class js-hidden js-display (bootstrap don't have one) : https://modernizr.com/docs#no-js (because I ( DenisChenu (talk) ) like it ;) )
    • Did we need other modernizer feature ?

Possible next steps for better templates

To make maintaining templates easier and offering more flexibility to template designers, we need a cleaner separation of code and possibly implement the concept of child themes (this is what Wordpress calls it).

Short term

(Could be Limesurvey 2.6)

  • Have one basic template using Bootstrap's main details only (Tammo has one at hand)
  • Create the three shipped templates based on that template
  • Clean up view HTML and the templates PSTPL files
  • ... please continue...

Long term

(Could be Limesurvey 3)

  • Switch to a template engine (Twig, maybe Mustache)
  • Implement concept of child themes
  • Clearly separate HTML structure and functions
  • ... to be continued...

Linked mantis

Next improvement

Extendable template

Allow a template to extend another template, extend another template, extend core template. (See Talk). For whole HTML/js/css part (+js+css). By default (without updatingt config.php)

  • DenisChenu : think we need a cache system for this ( runtime/templatename ) for example.