Selaa lähdekoodia

Add it, pl, es language, added "langue_cible", add filter by lang

BT#15167
Julio Montoya 6 vuotta sitten
vanhempi
commit
17cc0bcb7d
4 muutettua tiedostoa jossa 175 lisäystä ja 93 poistoa
  1. 103 74
      load_search.php
  2. 7 4
      main/inc/ajax/model.ajax.php
  3. 17 3
      main/inc/lib/sessionmanager.lib.php
  4. 48 12
      search.php

+ 103 - 74
load_search.php

@@ -145,11 +145,31 @@ if (!empty($items)) {
 
 $extraField = new ExtraField('session');
 $extraFieldValue = new ExtraFieldValue('session');
+$extraFieldValueUser = new ExtraFieldValue('user');
 
 $theme = 'theme_fr';
+$lang = api_get_interface_language();
+
 if ($userToLoadInfo) {
     $lang = $userToLoadInfo['language'];
+    $targetLanguageInfo = $extraFieldValueUser->get_values_by_handler_and_field_variable(
+        $userToLoad,
+        'langue_cible'
+    );
+    if (!empty($targetLanguageInfo)) {
+        $lang = strtolower($targetLanguageInfo['value']);
+    }
+
     switch ($lang) {
+        case 'italian':
+            $theme = 'theme_it';
+            break;
+        case 'polish':
+            $theme = 'theme_pl';
+            break;
+        case 'spanish':
+            $theme = 'theme_es';
+            break;
         case 'french2':
         case 'french':
             $theme = 'theme_fr';
@@ -317,6 +337,7 @@ $extra = $extraField->addElements(
 $fieldsToShow = [
     'heures_disponibilite_par_semaine',
     'moment_de_disponibilite',
+    'langue_cible'
 ];
 
 $extra = $extraFieldUser->addElements(
@@ -423,7 +444,6 @@ $extra = $extraField->addElements(
 
 $form->addHtml('</div></div></div>');
 
-
 // Enviroment
 $userForm->addHtml('<div class="panel panel-default">');
 $userForm->addHtml(
@@ -462,7 +482,6 @@ $userForm->addLabel(null, get_lang('MonEnvironnementDeTravailExplanationIntro2')
 
 $jqueryExtra .= $extra['jquery_ready_content'];
 
-
 $fieldsToShow = [
     'browser_platforme',
     'browser_platforme_autre',
@@ -492,9 +511,6 @@ $userForm->addHtml('<p class="text-info">'.get_lang('MonEnvironnementDeTravailRe
 $userForm->addButtonSave(get_lang('Save'), 'submit_partial[collapseEight]');
 $userForm->addHtml('</div></div></div>');
 
-
-
-
 $form->addButtonSave(get_lang('SaveDiagnosticChanges'), 'save');
 $form->addButtonSearch(get_lang('SearchSessions'), 'search');
 
@@ -543,7 +559,6 @@ if ($resultOptions) {
 }
 
 $filterToSend = '';
-
 if ($formSearch->validate()) {
     $formSearchParams = $formSearch->getSubmitValues();
 }
@@ -641,8 +656,15 @@ if ($form->validate()) {
         $userDataToSave = [
             'item_id' => $userToLoad,
             'extra_heures_disponibilite_par_semaine' => isset($userData['extra_heures_disponibilite_par_semaine']) ? $userData['extra_heures_disponibilite_par_semaine'] : '',
+            'extra_langue_cible' => isset($userData['extra_langue_cible']) ? $userData['extra_langue_cible'] : '',
+
         ];
-        $extraFieldValue->saveFieldValues($userDataToSave, true, false, ['heures_disponibilite_par_semaine']);
+        $extraFieldValue->saveFieldValues(
+            $userDataToSave,
+            true,
+            false,
+            ['heures_disponibilite_par_semaine', 'langue_cible']
+        );
 
         // Save session search
         /** @var \Chamilo\UserBundle\Entity\User $user */
@@ -747,7 +769,6 @@ if (!empty($tagsData)) {
     foreach ($tagsData as $extraField => $tags) {
         foreach ($tags as $tag) {
             $tag = api_htmlentities($tag);
-            // $jsTag .= "$('#$extraField')[0].addItem('$tag', '$tag');";
         }
     }
 }
@@ -758,6 +779,7 @@ $(function() {
     '.$jsTag.'
 });
 </script>';
+
 if (!empty($filterToSend)) {
     // Get start and end date from ExtraFieldSavedSearch
     $defaultExtraStartDate = isset($defaults['extra_access_start_date']) ? $defaults['extra_access_start_date'] : '';
@@ -803,83 +825,83 @@ if (!empty($filterToSend)) {
     foreach ($filterToSend['rules'] as &$filterItem) {
         if (isset($filterItem['field'])) {
             switch ($filterItem['field']) {
-            case 'extra_ecouter':
-            case 'extra_lire':
-            case 'extra_participer_a_une_conversation':
-            case 'extra_s_exprimer_oralement_en_continu':
-            case 'extra_ecrire':
-                $selectedValue = '';
-                $fieldExtra = str_replace('extra_', '', $filterItem['field']);
-                $extraFieldSessionData = $extraFieldSession->get_handler_field_info_by_field_variable($fieldExtra);
-
-                if (is_array($filterItem['data'])) {
-                    $myOrder = [];
-                    foreach ($filterItem['data'] as $option) {
-                        foreach ($extraFieldSessionData['options'] as $optionValue) {
-                            if ($option == $optionValue['option_value']) {
-                                $myOrder[$optionValue['option_order']] = $optionValue['option_value'];
+                case 'extra_ecouter':
+                case 'extra_lire':
+                case 'extra_participer_a_une_conversation':
+                case 'extra_s_exprimer_oralement_en_continu':
+                case 'extra_ecrire':
+                    $selectedValue = '';
+                    $fieldExtra = str_replace('extra_', '', $filterItem['field']);
+                    $extraFieldSessionData = $extraFieldSession->get_handler_field_info_by_field_variable($fieldExtra);
+
+                    if (is_array($filterItem['data'])) {
+                        $myOrder = [];
+                        foreach ($filterItem['data'] as $option) {
+                            foreach ($extraFieldSessionData['options'] as $optionValue) {
+                                if ($option == $optionValue['option_value']) {
+                                    $myOrder[$optionValue['option_order']] = $optionValue['option_value'];
+                                }
                             }
                         }
-                    }
 
-                    if (!empty($myOrder)) {
-                        // Taking last from list
-                        $selectedValue = end($myOrder);
+                        if (!empty($myOrder)) {
+                            // Taking last from list
+                            $selectedValue = end($myOrder);
+                        }
+                    } else {
+                        $selectedValue = $filterItem['data'];
                     }
-                } else {
-                    $selectedValue = $filterItem['data'];
-                }
 
-                $newOptions = array_column(
-                    $extraFieldSessionData['options'],
-                    'option_value',
-                    'option_order'
-                );
-
-                $searchOptions = [];
-                for ($i = 1; $i < count($newOptions); $i++) {
-                    if ($selectedValue == $newOptions[$i]) {
-                        if (isset($newOptions[$i - 1])) {
-                            $searchOptions[] = $newOptions[$i - 1];
-                        }
-                        if (isset($newOptions[$i])) {
-                            $searchOptions[] = $newOptions[$i];
-                        }
-                        if (isset($newOptions[$i + 1])) {
-                            $searchOptions[] = $newOptions[$i + 1];
+                    $newOptions = array_column(
+                        $extraFieldSessionData['options'],
+                        'option_value',
+                        'option_order'
+                    );
+
+                    $searchOptions = [];
+                    for ($i = 1; $i < count($newOptions); $i++) {
+                        if ($selectedValue == $newOptions[$i]) {
+                            if (isset($newOptions[$i - 1])) {
+                                $searchOptions[] = $newOptions[$i - 1];
+                            }
+                            if (isset($newOptions[$i])) {
+                                $searchOptions[] = $newOptions[$i];
+                            }
+                            if (isset($newOptions[$i + 1])) {
+                                $searchOptions[] = $newOptions[$i + 1];
+                            }
+                            break;
                         }
-                        break;
                     }
-                }
 
-                $filterItem['data'] = $searchOptions;
-                break;
-            case 'extra_domaine':
-                // Special condition see:
-                // https://task.beeznest.com/issues/10849#note-218
-                // Remove filiere
-                $list = [
-                    'vie-quotidienne',
-                    //'competente-dans-mon-domaine-de-specialite',
-                    'arrivee-sur-mon-poste-de-travail',
-                ];
-
-                $deleteFiliere = false;
-                if (is_array($filterItem['data'])) {
-                    $myOrder = [];
-                    foreach ($filterItem['data'] as $option) {
-                        if (in_array($option, $list)) {
+                    $filterItem['data'] = $searchOptions;
+                    break;
+                case 'extra_domaine':
+                    // Special condition see:
+                    // https://task.beeznest.com/issues/10849#note-218
+                    // Remove filiere
+                    $list = [
+                        'vie-quotidienne',
+                        //'competente-dans-mon-domaine-de-specialite',
+                        'arrivee-sur-mon-poste-de-travail',
+                    ];
+
+                    $deleteFiliere = false;
+                    if (is_array($filterItem['data'])) {
+                        $myOrder = [];
+                        foreach ($filterItem['data'] as $option) {
+                            if (in_array($option, $list)) {
+                                $deleteFiliere = true;
+                                break;
+                            }
+                        }
+                    } else {
+                        if (in_array($filterItem['data'], $list)) {
                             $deleteFiliere = true;
-                            break;
                         }
                     }
-                } else {
-                    if (in_array($filterItem['data'], $list)) {
-                        $deleteFiliere = true;
-                    }
-                }
-                break;
-        }
+                    break;
+            }
         }
 
         if ($deleteFiliere) {
@@ -891,15 +913,21 @@ if (!empty($filterToSend)) {
         }
     }
 
+    // Language
+    $lang = isset($params['extra_langue_cible']) ? $params['extra_langue_cible'] : $lang;
+    $lang = strtolower($lang);
+
     if ($userStartDate && !empty($userStartDate)) {
         $filterToSend['custom_dates'] = $sql;
     }
     $filterToSend = json_encode($filterToSend);
     $url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions&_search=true&load_extra_field='.$extraFieldListToString.'&_force_search=true&rows=20&page=1&sidx=&sord=asc&filters2='.$filterToSend;
+    $url .= '&lang='.$lang;
 } else {
     $url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_sessions&_search=true&load_extra_field='.$extraFieldListToString.'&_force_search=true&rows=20&page=1&sidx=&sord=asc';
 }
 
+
 // Autowidth
 $extra_params['autowidth'] = 'true';
 
@@ -942,6 +970,7 @@ $griJs = Display::grid_js(
     $action_links,
     true
 );
+
 $grid = '<div id="session-table" class="table-responsive">';
 $grid .= Display::grid_html('sessions');
 $grid .= '</div>';

+ 7 - 4
main/inc/ajax/model.ajax.php

@@ -676,6 +676,7 @@ switch ($action) {
         break;
     case 'get_sessions':
         $list_type = isset($_REQUEST['list_type']) ? $_REQUEST['list_type'] : 'simple';
+        $language =  isset($_REQUEST['lang']) ? $_REQUEST['lang'] : '';
         $session_columns = SessionManager::getGridColumns($list_type);
         $columns = $session_columns['simple_column_name'];
 
@@ -696,8 +697,9 @@ switch ($action) {
                 true,
                 [],
                 $extraFieldsToLoad,
-                $accessStartDate,
-                $accessEndDate
+                $language
+                //$accessStartDate,
+                //$accessEndDate
             );
         } else {
             $count = SessionManager::get_count_admin_complete(
@@ -1584,8 +1586,9 @@ switch ($action) {
                 false,
                 $session_columns,
                 $extraFieldsToLoad,
-                $accessStartDate,
-                $accessEndDate
+                $language
+                //$accessStartDate,
+                //$accessEndDate
             );
         } else {
             $result = SessionManager::get_sessions_admin_complete(

+ 17 - 3
main/inc/lib/sessionmanager.lib.php

@@ -472,7 +472,8 @@ class SessionManager
         $options = [],
         $get_count = false,
         $columns = [],
-        $extraFieldsToLoad = []
+        $extraFieldsToLoad = [],
+        $language = ''
     ) {
         $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
         $sessionCategoryTable = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
@@ -563,6 +564,16 @@ class SessionManager
             $inject_joins .= " LEFT JOIN $table su ON (su.session_id = s.id)";
         }
 
+
+        if (!empty($language)) {
+            $table = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
+            $tableCourse = Database::get_main_table(TABLE_MAIN_COURSE);
+            $inject_joins .= " INNER JOIN $table sc ON (sc.session_id = s.id) 
+                               INNER JOIN $tableCourse c ON (sc.c_id = c.id)";
+            $language = Database::escape_string($language);
+            $where .= " AND c.course_language = '$language' ";
+        }
+
         $query = "$select FROM $tbl_session s $inject_joins $where $inject_where";
 
         if (api_is_multiple_url_enabled()) {
@@ -577,6 +588,7 @@ class SessionManager
             }
         }
 
+
         if ($showCountUsers) {
             $query .= ' GROUP by s.id';
         }
@@ -587,7 +599,6 @@ class SessionManager
 
         $query .= $order;
         $query .= $limit;
-        $result = Database::query($query);
 
         $categories = self::get_all_session_category();
         $orderedCategories = [];
@@ -596,6 +607,8 @@ class SessionManager
                 $orderedCategories[$category['id']] = $category['name'];
             }
         }
+
+        $result = Database::query($query);
         $formatted_sessions = [];
         if (Database::num_rows($result)) {
             $sessions = Database::store_result($result, 'ASSOC');
@@ -624,10 +637,11 @@ class SessionManager
                         null,
                         true
                     );
-                    $courses = SessionManager::getCoursesInSession($session_id);
+                    $courses = self::getCoursesInSession($session_id);
                     $teachers = '';
                     foreach ($courses as $courseId) {
                         $courseInfo = api_get_course_info_by_id($courseId);
+
                         // Ofaj
                         $teachers = CourseManager::get_coachs_from_course_to_string($session_id, $courseInfo['real_id']);
                         /*$teachers .= CourseManager::get_teacher_list_from_course_code_to_string(

+ 48 - 12
search.php

@@ -59,9 +59,28 @@ if ($hide === false) {
 $url = api_get_path(WEB_AJAX_PATH).'extra_field.ajax.php?a=order&user_id='.$userId;
 
 // Theme fix
-$lang = api_get_interface_language();
+$targetLanguage = api_get_interface_language();
+
+$targetLanguageInfo = $extraFieldValue->get_values_by_handler_and_field_variable(
+    api_get_user_id(),
+    'langue_cible'
+);
+
+if (!empty($targetLanguageInfo)) {
+    $targetLanguage = strtolower($targetLanguageInfo['value']);
+}
+
 $theme = 'theme_fr';
-switch ($lang) {
+switch ($targetLanguage) {
+    case 'italian':
+        $theme = 'theme_it';
+        break;
+    case 'polish':
+        $theme = 'theme_pl';
+        break;
+    case 'spanish':
+        $theme = 'theme_es';
+        break;
     case 'french2':
     case 'french':
         $theme = 'theme_fr';
@@ -85,15 +104,7 @@ $(document).ready(function() {
             extraFiliere.hide();
         }
     });
-        
-    /*$("#extra_domaine").parent().append(
-        $("<a>", {
-            "class": "btn ajax btn-default",
-            "href": "'.$url.'&field_variable=extra_domaine",
-            "text": "'.get_lang('Order').'"             
-        })
-    );*/    
-    
+
     $("#extra_theme").parent().append(
         $("<a>", {
             "class": "btn ajax btn-default",
@@ -116,7 +127,32 @@ $(document).ready(function() {
             "href": "'.$url.'&field_variable=extra_theme_de",
             "text": "'.get_lang('Order').'"             
         })
-    );    
+    );
+    
+    $("#extra_theme_it").parent().append(
+        $("<a>", {
+            "class": "btn ajax btn-default",
+            "href": "'.$url.'&field_variable=extra_theme_it",
+            "text": "'.get_lang('Order').'"             
+        })
+    );
+    
+    $("#extra_theme_es").parent().append(
+        $("<a>", {
+            "class": "btn ajax btn-default",
+            "href": "'.$url.'&field_variable=extra_theme_es",
+            "text": "'.get_lang('Order').'"             
+        })
+    );
+    
+     $("#extra_theme_pl").parent().append(
+        $("<a>", {
+            "class": "btn ajax btn-default",
+            "href": "'.$url.'&field_variable=extra_theme_pl",
+            "text": "'.get_lang('Order').'"             
+        })
+    );
+        
     
     $("#extra_domaine_0, #extra_domaine_1, #extra_domaine_2").on("change", function() {
         var domainList = [];