Skip to content

Commit

Permalink
Fixed issue #12581: Question index and Language Chooser do not work
Browse files Browse the repository at this point in the history
  • Loading branch information
lacrioque committed Oct 12, 2017
1 parent 999d4db commit bc09ab8
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 65 deletions.
12 changes: 6 additions & 6 deletions application/models/TemplateConfig.php
Expand Up @@ -661,12 +661,12 @@ public function getClassAndAttributes()
// Language changer
$aClassAndAttributes['id']['lctdropdown'] = 'langs-container';

$aClassAndAttributes['class']['lctli'] = ' dropdown ls-no-js-hidden lctli ';
$aClassAndAttributes['class']['lctla'] = ' dropdown-toggle ';
$aClassAndAttributes['class']['lctspan'] = ' caret ';
$aClassAndAttributes['class']['lctdropdown'] = ' dropdown-menu ';
$aClassAndAttributes['class']['lctdropdownli'] = ' index-item ';
$aClassAndAttributes['class']['lctdropdownlia'] = ' ls-language-link ';
$aClassAndAttributes['class']['lctli'] = 'dropdown ls-no-js-hidden form-change-lang ';
$aClassAndAttributes['class']['lctla'] = 'dropdown-toggle ';
$aClassAndAttributes['class']['lctspan'] = 'caret ';
$aClassAndAttributes['class']['lctdropdown'] = 'dropdown-menu ';
$aClassAndAttributes['class']['lctdropdownli'] = 'index-item ';
$aClassAndAttributes['class']['lctdropdownlia'] = 'ls-language-link ';

$aClassAndAttributes['attr']['lctla'] = ' data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" ';
$aClassAndAttributes['attr']['lctdropdown'] = ' style="overflow: scroll" ';
Expand Down
3 changes: 3 additions & 0 deletions templates/default/css/template.css
Expand Up @@ -13,6 +13,9 @@ body {
.surveys-list .btn-group {
width: 50%;
}
.language_change_container{
height: 90vh;
}
}

.group-title-container {
Expand Down
32 changes: 31 additions & 1 deletion templates/default/scripts/template.js
Expand Up @@ -85,6 +85,34 @@ var Template = function(){
});
}

var initLanguageChanger = function(selectorItem, selectorGlobalForm){
$(selectorItem).on('change',function() {
var lang = $(this).val();
console.log(lang, 'changed');
// If there are no form : we can't use it */
/* No form, not targeturl : just see what happen */
var target = window.location.href;
$("<form>", {
"class":'ls-js-hidden',
"html": '<input type="hidden" name="lang" value="' + lang + '" />',
"action": target,
"method": 'get'
}).appendTo('body').submit();
});
};

var initTopMenuLanguageChanger = function(selectorItem, selectorGlobalForm){
// $(selectorContainer).height($('#main-row').height());
$(selectorItem).on('click', function(){
var lang = $(this).data('limesurvey-lang');
/* The limesurvey form exist in document, move select and button inside and click */
$(selectorGlobalForm+" [name='lang']").remove(); // Remove existing lang selector
$("<input type='hidden'>").attr('name','lang').val(lang).appendTo($(selectorGlobalForm));
$('#changlangButton').clone().appendTo($(selectorGlobalForm)).click();

});
};

var init = function(){

/**
Expand Down Expand Up @@ -170,7 +198,9 @@ var Template = function(){
sliderSuffixClone : sliderSuffixClone,
fixBodyPadding : fixBodyPadding,
hideQuestionWithRelevanceSubQuestion : hideQuestionWithRelevanceSubQuestion,
hideEmptyPart : hideEmptyPart
hideEmptyPart : hideEmptyPart,
initLanguageChanger: initLanguageChanger,
initTopMenuLanguageChanger: initTopMenuLanguageChanger
}

}
Expand Down
44 changes: 11 additions & 33 deletions templates/default/views/subviews/language_changer.twig
Expand Up @@ -29,16 +29,15 @@
'attribute' : 'value',
#}
{% set htmlOptions = {
'id' : false,
'id' : 'langchangerSelectMain',
'class' : aSurveyInfo.class.formcontrol,
'data-targeturl' : aLCD.targetUrl,
}
%}

<!-- Language Changer -->
<div class=" {{ aSurveyInfo.class.languagechanger }} " {{ aSurveyInfo.attr.languagechanger }} >
<label class="{{ aSurveyInfo.class.formgroup }} {{ aSurveyInfo.attr.formgroup }}">
<span class="{{ aSurveyInfo.class.controllabel }}" {{ aSurveyInfo.attr.controllabel }}>{{ "Language:" | t }}</span>
<div class=" {{ aSurveyInfo.class.formgroup }} " {{ aSurveyInfo.attr.formgroup }} >
<label class="{{ aSurveyInfo.class.controllabel }}" {{ aSurveyInfo.attr.controllabel }} for="langchangerSelectMain">
<span class="{{ aSurveyInfo.class.languagechanger }}" {{ aSurveyInfo.attr.languagechanger }}>{{ "Language:" | t }}</span>
{{
C.Html.dropDownList(
'lang',
Expand All @@ -47,9 +46,9 @@
htmlOptions
)
}}

</label>

</div>
{% if aLCD.withForm == true %}
<!-- for no js functionality (need form) -->
{% set buttonhtmlOptions = {
Expand All @@ -68,32 +67,11 @@
)
}}
{% endif %}
</div>
{% endif %}


{# TODO: add a javascript file, and register it here #}
<script>
// Method for link
$(document).ready(function(){
$('.form-change-lang').on('change','select',function() {
var lang = $(this).val();
/* we are not in a forum, can not submit directly */
if($('form#limesurvey').length==1){
/* The limesurvey form exist in document, move select and button inside and click */
$("form#limesurvey [name='lang']").remove(); // Remove existing lang selector
$("<input type='hidden'>").attr('name','lang').val(lang).appendTo($('form#limesurvey'));
$('#changlangButton').clone().appendTo($('form#limesurvey')).click();
}else{
// If there are no form : we can't use it */
/* No form, not targeturl : just see what happen */
$("<form>", {
"class":'ls-js-hidden',
"html": '<input type="hidden" name="lang" value="' + lang + '" />',
"action": target,
"method": 'get'
}).appendTo(document.body).submit();
}
<script>
$(document).on('ready pjax:complete', function(){
template.initLanguageChanger('#langchangerSelectMain', 'form#limesurvey');
});
});
</script>
</script>

{% endif %}
Expand Up @@ -30,14 +30,14 @@

<!-- Language Changer, top menu version -->
<li class="{{ aSurveyInfo.class.lctli }}" {{ aSurveyInfo.attr.lctli }} >
<a class="{{ aSurveyInfo.class.lcta }}" {{ aSurveyInfo.attr.lcta }} >
<a class="{{ aSurveyInfo.class.lctla }}" {{ aSurveyInfo.attr.lctla }} >

{# NOTE: {{ aLCD.aListLang[aLCD.sSelected] | t }}: retreives the language name of the selected language and translates it #}
{{ "Language:" | t }} {{ aLCD.aListLang[aLCD.sSelected] | t }}
<span class="{{ aSurveyInfo.class.lctspan }}" {{ aSurveyInfo.attr.lctspan }} ></span>
</a>

<ul class="{{ aSurveyInfo.class.lctdropdown }}" id="{{ aSurveyInfo.id.lctdropdown }}" {{ aSurveyInfo.attr.lctdropdown }} >
<ul class="{{ aSurveyInfo.class.lctdropdown }} language_change_container" id="{{ aSurveyInfo.id.lctdropdown }}" {{ aSurveyInfo.attr.lctdropdown }} >
{# List of available languages. #}
{% for value, lang in aLCD.aListLang %}
<li class="{{ aSurveyInfo.class.lctdropdownli }}" {{ aSurveyInfo.attr.lctdropdownli }}>
Expand Down Expand Up @@ -72,29 +72,9 @@

{% endif %}

{# TODO: add a javascript file, and register it here #}
<script>
// Method for link
$(document).ready(function(){
$('#langs-container').height($('#main-row').height());
$('.ls-language-link').on('click', function(){
var lang = $(this).data('limesurvey-lang');
/* we are not in a forum, can not submit directly */
if($('form#limesurvey').length==1){
/* The limesurvey form exist in document, move select and button inside and click */
$("form#limesurvey [name='lang']").remove(); // Remove existing lang selector
$("<input type='hidden'>").attr('name','lang').val(lang).appendTo($('form#limesurvey'));
$('#changlangButton').clone().appendTo($('form#limesurvey')).click();
}else{
// If there are no form : we can't use it */
/* No form, not targeturl : just see what happen */
$("<form>", {
"class":'ls-js-hidden',
"html": '<input type="hidden" name="lang" value="' + lang + '" />',
"method": 'get'
}).appendTo(document.body).submit();
}
// Method for link
$(document).ready(function(){
template.initTopMenuLanguageChanger('.{{aSurveyInfo.class.lctdropdownlia}}', 'form#limesurvey');
});
});
</script>

0 comments on commit bc09ab8

Please sign in to comment.