Skip to content

Commit

Permalink
Widgets sync with global menu if both are available
Browse files Browse the repository at this point in the history
  • Loading branch information
LorenzoJokhan committed Aug 31, 2023
1 parent 789a17f commit 644668b
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 91 deletions.
17 changes: 13 additions & 4 deletions packages/cms/lib/modules/openstad-global/public/js/always.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@ apos.on('ready', function () {

var languageSelectContainer = $('.language-select-container');

$('.translation-widget-select')
.on('change', function (e) { return changeLanguage(e) });
$('#translation-widget-select-global')
.on('change', function (e) {
changeLanguage(e);
});

function setSelectDisabled(select) {
select.setAttribute('disabled', true);
Expand Down Expand Up @@ -67,6 +69,7 @@ apos.on('ready', function () {
changeTextInNodes(sentences, nodes);
setSelectEnabled(select);
addToast(toastContainer, "success", "De pagina is succesvol vertaald");
syncOtherTranslationWidgets(targetLanguageCode);
},
error: function() {
setSelectEnabled(select);
Expand All @@ -78,7 +81,7 @@ apos.on('ready', function () {
};


var select = document.querySelector('.translation-widget-select');
var select = document.querySelector('#translation-widget-select-global');
var isNormalUser = !hasModeratorRights; // references global var specified in layout.js
if(isNormalUser) {
setSelectedLanguage(localStorage.getItem('targetLanguageCode'));
Expand Down Expand Up @@ -163,5 +166,11 @@ function addToast(container, typeOfInfoErrorOrSuccess, text, timeout, onClick) {
}

function setSelectedLanguage(language) {
$('.translation-widget-select').val(language ? language : 'nl').trigger('change');
$('#translation-widget-select-global').val(language ? language : 'nl').trigger('change');
}

function syncOtherTranslationWidgets(language) {
document.querySelectorAll("#translation-widget-select").forEach(select => {
select.value = language ? language : 'nl';
});
}
94 changes: 9 additions & 85 deletions packages/cms/lib/modules/translation-widgets/public/js/always.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,101 +5,25 @@
apos.define('translation-widgets', {
extend: 'openstad-widgets',
construct: function (self, options) {
// var firstTimeLoading = true;
// var nodes = [];
// var nlContents = [];

// var languageSelectContainer = $('.language-select-container');

// $('.translation-widget-select')
// .on('change', function (e) { return changeLanguage(e) });

// function setSelectDisabled(select) {
// select.setAttribute('disabled', true);
// languageSelectContainer.addClass('languageLoading');
// };

// function setSelectEnabled(select) {
// select.removeAttribute('disabled');
// languageSelectContainer.removeClass('languageLoading');
// };

// function saveLanguagePreference(targetLanguageCode) {
// try{
// localStorage.setItem("targetLanguageCode", targetLanguageCode);
// } catch(quotaExceededError) {
// console.log("Could not save the language preference");
// }
// }

// changeLanguage = function (e) {
// var select = e.target;
// var targetLanguageCode = select.value;
// setSelectDisabled(select);


// var node = document.body;

// if (firstTimeLoading) {
// nodes = handleNode(node, nodes);
// nlContents = nodes.map(function(itemToTranslate) { return itemToTranslate.orgText });
// firstTimeLoading = false;
// }

// if (targetLanguageCode === 'nl') {
// console.log("Language is set to the default: " + targetLanguageCode +". No need to translate");
// changeTextInNodes(nlContents, nodes);
// setSelectEnabled(select);
// saveLanguagePreference(targetLanguageCode);
// } else {
// console.log('translating to', targetLanguageCode);

// var toastContainer = document.querySelector("#openstad-toast");
// addToast(toastContainer, "info", "De pagina wordt vertaald...", 5000);

// $.ajax({
// url: '/modules/translation-widgets/submit',
// method: 'POST',
// contentType: "application/json",
// data: JSON.stringify({
// contents: nlContents,
// sourceLanguageCode: 'nl',
// targetLanguageCode: targetLanguageCode,
// origin: window.location.href
// }),
// success: function (sentences) {
// saveLanguagePreference(targetLanguageCode);
// sentences = sentences.map(function(sentence) { return sentence.text });
// changeTextInNodes(sentences, nodes);
// setSelectEnabled(select);
// addToast(toastContainer, "success", "De pagina is succesvol vertaald");
// },
// error: function() {
// setSelectEnabled(select);
// setSelectedLanguage('nl');
// addToast(toastContainer, "error", "De pagina kon niet worden vertaald");
// }
// });
// }
// };
$('#translation-widget-select')
.on('change', function (e) { return changeLanguage(e) });
}
});


// function setSelectedLanguage(language) {
// $('.translation-widget-select').val(language ? language : 'nl').trigger('change');
// }

/**
* Makes a call to the backend to translate. This needs to happen to set the initial selection after rendering the page,
* collecting the initial values and if the language is not the default 'nl', fetching the translations
*/
apos.on('ready', function() {
var select = document.querySelector('.translation-widget-select');
var select = document.querySelector('#translation-widget-select');
var presentGlobalSelect = document.querySelector('#translation-widget-select-global');


var isNormalUser = !hasModeratorRights; // references global var specified in layout.js
if(isNormalUser) {
// setSelectedLanguage(localStorage.getItem('targetLanguageCode'));
if(isNormalUser && !presentGlobalSelect) {
setSelectedLanguage(localStorage.getItem('targetLanguageCode'));
} else if(select) {
// select.setAttribute('disabled', true);
select.setAttribute('disabled', true);
}
});
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<div class="translationModuleContainer">
<label for="translationModule">Taal instellen</label>
<div class="language-select-container">
<select translate="no" name="translationModule" class="translation-widget-select">
<select id="translation-widget-select" translate="no" name="translationModule" class="translation-widget-select">
{% for language in data.widget.supportedLanguages %}
{% if language.code === 'nl' %}
<option translate="no" value="{{language.code}}" selected='selected' class="translation-widget-select-option">{{language.text}}</option>
Expand Down
2 changes: 1 addition & 1 deletion packages/cms/views/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ <h2 class="header-subtitle">
{% if data.global.translateInMenu %}
<div class="{{ 'col-xs-2' if data.global.hideSiteTitle else 'col-sm-1 col-md-1' }} hidden-xs">
<ul class="top-links">
<select class="translation-widget-select compact" selected="nl">
<select id="translation-widget-select-global" class="translation-widget-select compact" selected="nl">
{% for language in data.global.languages %}
{% if language.code === 'nl' %}
<option translate="no" value="{{language.code}}" selected='selected' class="translation-widget-select-option">{{language.code}}</option>
Expand Down

0 comments on commit 644668b

Please sign in to comment.