diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..57f1cb2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/.idea/
\ No newline at end of file
diff --git a/Multilingual.php b/Multilingual.php
index f006aa4..ce4b737 100644
--- a/Multilingual.php
+++ b/Multilingual.php
@@ -137,7 +137,7 @@ public function getTranslations($data, $projectSettings){
$data['project_id'] = mysqli_real_escape_string($conn, $data['project_id']);
$data['page'] = mysqli_real_escape_string($conn, $data['page']);
- $query = "SELECT field_name, element_type, misc, grid_name, element_validation_type, element_validation_min, element_validation_max, element_label FROM redcap_metadata
+ $query = "SELECT field_name, element_type, misc, grid_name, element_validation_type, element_validation_min, element_validation_max, element_label, field_req FROM redcap_metadata
WHERE project_id = " . $data['project_id'] . "
AND (form_name LIKE '" . $data['page'] . "' OR field_name LIKE 'survey_text_" . $data['page'] . "')";
$result = mysqli_query($conn, $query);
@@ -145,6 +145,7 @@ public function getTranslations($data, $projectSettings){
while($row = mysqli_fetch_array($result)){
//default questions
$response['defaults'][$row['field_name']] = strip_tags($row['element_label']. '
');
+ $response['questions'][$row['field_name']]['req'] = $row['field_req'] == "1";
//$misc = explode("@", $row['misc']);
$misc = str_getcsv($row['misc'], '@');
diff --git a/index.php b/index.php
index cbfd6da..edda399 100644
--- a/index.php
+++ b/index.php
@@ -6,6 +6,8 @@
$data = @$_POST['data'];
+ /* @var $module Multilingual*/
+
if(isset($data) && $data != ''){
$data = json_decode($data, true);
diff --git a/js/multilingual_survey.js b/js/multilingual_survey.js
index 9abf9eb..ebee4c6 100644
--- a/js/multilingual_survey.js
+++ b/js/multilingual_survey.js
@@ -6,11 +6,12 @@
var project_id = getVariable('pid');
//var languages = {1: 'en', 2: 'es', 3: 'fr'};
var languages = {1: 'en', 2: 'es'};
+ var requiredFieldTranslations = {1:'Required *',2:'Required *'};
var totalLanguages = 2;
var settings = {};
settings['empty'] = true;
getSettings();
- getLanguages();
+ getRequiredFieldTranslations();
var lang = 'en';
var langReady = 0;
var interval = null;
@@ -307,28 +308,57 @@
$('#changeLang').css('color', (settings['font-color'] && settings['font-color']['value'] ? settings['font-color']['value'] : ''));
$('#changeLang').css('opacity','1');
- //remove required english label
- $('.requiredlabel').remove();
+ var mergedRequiredFieldTranslations = {};
+ var requiredLabelText = "";
+
+ //handle required english label
+ if(requiredFieldTranslations[""]==""){
+ // no field was set
+ // remove required english label
+ $('.requiredlabel').remove();
+ }else{
+ // replace required field label (if language is found)
+ var langKeys = Object.keys(requiredFieldTranslations);
+
+ //match language ids with defined required field labels
+ for(i=0; i';
}
- }
- else{
- $('#label-' + id).html(translations['questions'][id]['text']);
- }
+
+ if(translations['questions'][id]['matrix'] != null){
+ //$('#' + id + '-tr').children('td').eq(1).children('table').children().children().children('td:first').html(translations['questions'][id]['text']);
+ $('#label-' + id).html(translations['questions'][id]['text']+requiredLabelDiv);
+ }
+ else if(translations['questions'][id]['type'] == 'descriptive'){
+ var tmp = $('#' + id + '-tr').children('td').eq(1).html();
+ if(tmp != undefined){
+ $('#' + id + '-tr').children('td').eq(1).html(translations['questions'][id]['text']+requiredLabelDiv);
+ //tmp = tmp.split(/<(.+)/);
+ //$('#' + id + '-tr').children('td').eq(1).html(translations['questions'][id]['text'] + ' <' + tmp[1]);
+ }
+ }
+ else{
+ $('#label-' + id).html(translations['questions'][id]['text']+requiredLabelDiv);
+ }
+ }
}
//answers
@@ -581,6 +611,27 @@
});
}
+ function getRequiredFieldTranslations(){
+ var data = {};
+ data['todo'] = 2;
+ data['project_id'] = pid;
+ data['field_name'] = 'requiredFieldTranslations';
+ var json = encodeURIComponent(JSON.stringify(data));
+
+ $.ajax({
+ url: ajax_url,
+ type: 'POST',
+ data: 'data=' + json,
+ success: function (r) {
+ requiredFieldTranslations = r;
+ getLanguages();
+ },
+ error: function(jqXHR, textStatus, errorThrown) {
+ console.log(textStatus, errorThrown);
+ }
+ });
+ }
+
//generic functions
function getVariable(variable){
var query = window.location.search.substring(1);