From ff64804ff0b5ec34ff3fd7dab82ce37d69df516b Mon Sep 17 00:00:00 2001
From: Emeric <emeric.bernet@francelabs.com>
Date: Tue, 13 Feb 2024 11:47:01 +0100
Subject: [PATCH] 787 - Extend simplified job with 2 filtering possibilities
 (WIP)

Add Office Mode option to Web and Filer simplified jobs
---
 .../manifoldcf/simplifiedui/jobs/web.json     |  4 --
 .../servlets/admin/MCFUISimplifiedFiler.java  |  6 +-
 .../servlets/admin/MCFUISimplifiedWeb.java    |  3 +
 .../simplifiedui/utils/FilerFilterRule.java   |  2 +-
 .../datafari/simplifiedui/utils/FilerJob.java | 10 ++++
 .../simplifiedui/utils/FilerJobConfig.java    | 34 ++++++++++--
 .../datafari/simplifiedui/utils/WebJob.java   |  8 +++
 .../simplifiedui/utils/WebJobConfig.java      | 16 ++++++
 .../main/webapp/admin/ajax/mcfSimplified.jsp  | 55 +++++++++++++++----
 .../js/AjaxFranceLabs/locale/de.json          |  2 +
 .../js/AjaxFranceLabs/locale/en.json          |  2 +
 .../js/AjaxFranceLabs/locale/es.json          |  2 +
 .../js/AjaxFranceLabs/locale/fr.json          |  2 +
 .../js/AjaxFranceLabs/locale/it.json          |  2 +
 .../js/AjaxFranceLabs/locale/pt_br.json       |  2 +
 .../js/AjaxFranceLabs/locale/ru.json          |  2 +
 .../resources/js/admin/ajax/mcfSimplified.js  |  6 ++
 17 files changed, 135 insertions(+), 23 deletions(-)

diff --git a/bin/common/config/manifoldcf/simplifiedui/jobs/web.json b/bin/common/config/manifoldcf/simplifiedui/jobs/web.json
index a96a68ec6..fa477dbd3 100644
--- a/bin/common/config/manifoldcf/simplifiedui/jobs/web.json
+++ b/bin/common/config/manifoldcf/simplifiedui/jobs/web.json
@@ -21,10 +21,6 @@
               "_type_": "includes",
               "_value_": ".*"
             },
-            {
-              "_type_": "includesindex",
-              "_value_": ".*"
-            },
             {
               "_type_": "limittoseeds",
               "_value_": "",
diff --git a/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedFiler.java b/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedFiler.java
index cd71013b1..0e20b34d4 100644
--- a/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedFiler.java
+++ b/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedFiler.java
@@ -81,6 +81,7 @@ public class MCFUISimplifiedFiler extends HttpServlet {
       final String security = request.getParameter("security");
       final String startJob = request.getParameter("startJob");
       final String timezone = request.getParameter("filerTimeZone");
+      final String mode = request.getParameter("filerMode");
       boolean duplicatesDetection = false;
       if (request.getParameter("duplicatesDetection") != null) {
         duplicatesDetection = true;
@@ -113,7 +114,7 @@ public class MCFUISimplifiedFiler extends HttpServlet {
           jsonResponse.put(OutputConstants.STATUS, "The repository name is not valid");
           LOGGER.error("The repository name is not valid");
         } else {
-          createFilerRepo(jsonResponse, server, user, password, reponame, paths, sourcename, timezone, security, duplicatesDetection, createOCR, tikaOCRHost, tikaOCRPort, tikaOCRName, createSpacy,
+          createFilerRepo(jsonResponse, server, user, password, reponame, paths, sourcename, timezone, mode, security, duplicatesDetection, createOCR, tikaOCRHost, tikaOCRPort, tikaOCRName, createSpacy,
               spacyConnectorName, spacyServerAddress, spacyModelToUse, spacyEndpointToUse, spacyOutputFieldPrefix, startJob);
         }
       } else {
@@ -133,7 +134,7 @@ public class MCFUISimplifiedFiler extends HttpServlet {
   }
 
   private void createFilerRepo(final JSONObject jsonResponse, final String server, final String user, final String password, final String reponame, final String paths, final String sourcename,
-      final String timezone, final String security, final boolean duplicatesDetection, final boolean createOCR, final String tikaOCRHost, final String tikaOCRPort, final String tikaOCRName,
+      final String timezone, final String mode, final String security, final boolean duplicatesDetection, final boolean createOCR, final String tikaOCRHost, final String tikaOCRPort, final String tikaOCRName,
       final boolean createSpacy, final String spacyConnectorName, final String spacyServerAddress, final String spacyModelToUse, final String spacyEndpointToUse, final String spacyOutputFieldPrefix,
       final String startJob) throws Exception {
     // Create webRepository
@@ -157,6 +158,7 @@ public class MCFUISimplifiedFiler extends HttpServlet {
       filerJob.setPaths(paths);
       filerJob.setSourcename(sourcename);
       filerJob.setTimezone(timezone);
+      filerJob.setMode(mode);
       filerJob.setDuplicatesDetection(duplicatesDetection);
       filerJob.setCreateOCR(createOCR);
       filerJob.setTikaOCRHost(tikaOCRHost);
diff --git a/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedWeb.java b/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedWeb.java
index 27b523d75..958bfd164 100644
--- a/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedWeb.java
+++ b/datafari-webapp/src/main/java/com/francelabs/datafari/servlets/admin/MCFUISimplifiedWeb.java
@@ -78,6 +78,8 @@ public class MCFUISimplifiedWeb extends HttpServlet {
       final String reponame = request.getParameter("webReponame");
       final String timezone = request.getParameter("webTimeZone");
       final String startJob = request.getParameter("startJobWeb");
+      final String mode = request.getParameter("webMode");
+
       boolean duplicatesDetection = false;
       if (request.getParameter("webDuplicatesDetection") != null) {
         duplicatesDetection = true;
@@ -117,6 +119,7 @@ public class MCFUISimplifiedWeb extends HttpServlet {
           webJob.setSeeds(seeds);
           webJob.setSourcename(sourcename);
           webJob.setTimezone(timezone);
+          webJob.setMode(mode);
           webJob.setDuplicatesDetection(duplicatesDetection);
           webJob.setCreateOCR(createOCR);
           webJob.setTikaOCRHost(tikaOCRHost);
diff --git a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerFilterRule.java b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerFilterRule.java
index 1c1700ae6..97b39994b 100644
--- a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerFilterRule.java
+++ b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerFilterRule.java
@@ -25,7 +25,7 @@ public class FilerFilterRule {
   }
 
   public static enum RuleType {
-    INCLUDE("include"), EXCLUDE("exclude");
+    INCLUDE("include"), EXCLUDE("exclude"), INCLUDEFILTER("includefilefilter");
 
     private final String name;
 
diff --git a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJob.java b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJob.java
index aed6182f8..1321f9941 100644
--- a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJob.java
+++ b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJob.java
@@ -4,6 +4,8 @@ public class FilerJob extends GenericJob {
 
   private String paths;
 
+  private String mode;
+
   public FilerJob() {
 
   }
@@ -16,4 +18,12 @@ public class FilerJob extends GenericJob {
     this.paths = paths;
   }
 
+  public String getMode() {
+    return mode;
+  }
+
+  public void setMode(String mode) {
+    this.mode = mode;
+  }
+
 }
diff --git a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJobConfig.java b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJobConfig.java
index 1f366bce7..ef2c6257f 100644
--- a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJobConfig.java
+++ b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/FilerJobConfig.java
@@ -33,6 +33,7 @@ public class FilerJobConfig {
   private final static String attributeIndexable = "_attribute_indexable";
   private final static String attributeFilespec = "_attribute_filespec";
   private final static String attributeType = "_attribute_type";
+  private final static String attributeRegex = "_attribute_regex";
   private final static String attributePath = "_attribute_path";
   private final static String value = "_value_";
   private final static String type = "_type_";
@@ -150,13 +151,36 @@ public class FilerJobConfig {
       }
     }
 
-    for (int i = 0; i < documentSpec.size(); i++) {
-      final JSONObject docSpecChild = (JSONObject) documentSpec.get(i);
+      for (Object o : documentSpec) {
+          final JSONObject docSpecChild = (JSONObject) o;
 
-      if (docSpecChild.get(type).equals(securityElement) && filerJob.isSecurity()) {
-        // Set security
-        docSpecChild.replace(attributeValue, "on");
+          if (docSpecChild.get(type).equals(securityElement) && filerJob.isSecurity()) {
+              // Set security
+              docSpecChild.replace(attributeValue, "on");
+          }
+      }
+
+    // Add include filters depending on the filtering mode
+    if ("office".equals(filerJob.getMode())) {
+      final String[] inclusions = new String[]{
+              "\\.(?i)(txt|pdf)(?-i)$",
+              "\\.(?i)(xls|xlsx|xlsm|xlt|xltx|xltm|xlm|xla)(?-i)$",
+              "\\.(?i)(doc|docx|wwl|wll|dotm|dot)(?-i)$",
+              "\\.(?i)(ppt|pot|pps|ppa|pptx|pptm|potx|ppam|ppsx|ppsm|sldx|sldm|ppam)(?-i)$",
+              "\\.(?i)(one|ecf|pub)(?-i)$",
+              "\\.(?i)(odt|ods|odp|odg)(?-i)$"
+      };
+      for (String inclusion : inclusions) {
+        final JSONObject include = new JSONObject();
+        String includeRuleType = RuleType.INCLUDEFILTER.toString();
+        // Create include rules
+        include.put(value, "");
+        include.put(attributeRegex, inclusion);
+        include.put(type, includeRuleType);
+
+        documentSpec.add(include);
       }
+
     }
 
     // Set paths
diff --git a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJob.java b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJob.java
index 892f22058..86221fbd0 100644
--- a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJob.java
+++ b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJob.java
@@ -3,6 +3,7 @@ package com.francelabs.datafari.simplifiedui.utils;
 public class WebJob extends GenericJob {
 
   private String seeds;
+  private String mode;
 
   public WebJob() {
 
@@ -16,4 +17,11 @@ public class WebJob extends GenericJob {
     this.seeds = seeds;
   }
 
+  public String getMode() {
+    return mode;
+  }
+
+  public void setMode(String mode) {
+    this.mode = mode;
+  }
 }
diff --git a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJobConfig.java b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJobConfig.java
index c76bbcf48..0038468d3 100644
--- a/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJobConfig.java
+++ b/datafari-webapp/src/main/java/com/francelabs/datafari/simplifiedui/utils/WebJobConfig.java
@@ -143,6 +143,22 @@ public class WebJobConfig {
       }
     }
 
+    // Add include filters depending on the filtering mode
+    String inclusion = ".*";
+    if ("office".equals(webJob.getMode())) {
+      inclusion = ".*\\.txt.*\r\n.*\\.pdf.*\r\n" +
+              ".*\\.xls.*\r\n.*\\.xlt.*\r\n.*\\.xlm.*\r\n.*\\.xla.*\r\n" +
+              ".*\\.doc.*\r\n.*\\.wwl.*\r\n.*\\.wll.*\r\n.*\\.dot.*\r\n" +
+              ".*\\.ppt.*\r\n.*\\.pot.*\r\n.*\\.pps.*\r\n.*\\.ppa.*\r\n.*\\.sld.*\r\n" +
+              ".*\\.one.*\r\n.*\\.ecf.*\r\n.*\\.pub.*\r\n" +
+              ".*\\.odt.*\r\n.*\\.ods.*\r\n.*\\.odp.*\r\n.*\\.odg.*";
+    }
+    final JSONObject include = new JSONObject();
+    // Create include rules
+    include.put(value, inclusion);
+    include.put(type, "includesindex");
+    documentSpec.add(include);
+
     for (int i = 0; i < documentSpec.size(); i++) {
       final JSONObject docSpecChild = (JSONObject) documentSpec.get(i);
 
diff --git a/datafari-webapp/src/main/webapp/admin/ajax/mcfSimplified.jsp b/datafari-webapp/src/main/webapp/admin/ajax/mcfSimplified.jsp
index cca82d715..bab8cb597 100755
--- a/datafari-webapp/src/main/webapp/admin/ajax/mcfSimplified.jsp
+++ b/datafari-webapp/src/main/webapp/admin/ajax/mcfSimplified.jsp
@@ -163,20 +163,38 @@
 	                      </div>
 	                    </div>                      
 	                  </div>
-                    <div class="form-group row">
-                      <div class="col-sm-3 control-label">
-                      <span class="fas fa-asterisk " style="color : red"></span>
-                        <label id="filerTimeZoneLabel" for="filerTimeZone" class="col-form-label"></label><span id="filerTimeZone-tip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="right" title=""></span>
+
+                      <div class="form-group row">
+                        <div class="col-sm-3 control-label">
+                          <span class="fas fa-asterisk " style="color : red"></span>
+                          <label id="filerTimeZoneLabel" for="filerTimeZone" class="col-form-label"></label><span id="filerTimeZone-tip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="right" title=""></span>
+                        </div>
+                        <div class="col-sm-4">
+                          <select id="filerTimeZone" name="filerTimeZone" class="form-control"  style="width: 100%">
+                            <OPTION value="" disabled selected>Select your TimeZone</OPTION>
+                          </select>
+                          <div class="invalid-feedback">
+                            Please select a timezone
+                          </div>
+                        </div>
                       </div>
-                      <div class="col-sm-4">
-                        <select id="filerTimeZone" name="filerTimeZone" class="form-control"  style="width: 100%">
-                          <OPTION value="" disabled selected>Select your TimeZone</OPTION>
-                        </select>
-                        <div class="invalid-feedback">
-                          Please select a timezone
+
+                      <div class="form-group row">
+                        <div class="col-sm-3 control-label">
+                          <span class="fas fa-asterisk " style="color : red"></span>
+                          <label id="filerModeLabel" for="filerMode" class="col-form-label"></label><span id="filerMode-tip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="right" title=""></span>
+                        </div>
+                        <div class="col-sm-4">
+                          <select id="filerMode" name="filerMode" class="form-control" style="width: 100%">
+                            <OPTION value="extended" selected>Extended mode</OPTION>
+                            <OPTION value="office">Office mode</OPTION>
+                          </select>
+                          <div class="invalid-feedback">
+                            Please select a mode
+                          </div>
                         </div>
                       </div>
-                    </div>
+
                     <div class="form-group row" id="div15">
                       <div class="col-sm-3 control-label">
                         <label id="securityLabel" for="security" class="col-form-label"></label><span id="security-tip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="right" title=""></span> <span class="alert-danger">(This feature is only available in the Enterprise Edition)</span>
@@ -733,6 +751,21 @@
                         </div>
                       </div>
                     </div>
+                    <div class="form-group row">
+                      <div class="col-sm-3 control-label">
+                        <span class="fas fa-asterisk " style="color : red"></span>
+                        <label id="webModeLabel" for="webMode" class="col-form-label"></label><span id="webMode-tip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="right" title=""></span>
+                      </div>
+                      <div class="col-sm-4">
+                        <select id="webMode" name="webMode" class="form-control" style="width: 100%">
+                          <OPTION value="extended" selected>Extended mode</OPTION>
+                          <OPTION value="office">Office mode</OPTION>
+                        </select>
+                        <div class="invalid-feedback">
+                           Please select a mode
+                        </div>
+                      </div>
+                    </div>
                     <div class="form-group row">
                       <div class="col-sm-3 control-label">
                         <label id="webDuplicatesDetectionLabel" for="dbDuplicatesDetection" class="col-form-label"></label><span id="webDuplicatesDetection-tip" class="fas fa-info-circle" data-toggle="tooltip" data-placement="right" title=""></span>
diff --git a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/de.json b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/de.json
index 300c8a936..49213aba8 100644
--- a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/de.json
+++ b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/de.json
@@ -464,6 +464,8 @@
     "fieldWeight": "Feldwertigkeit",
     "fieldWeightExpert": "Field weight (Expert mode)",
     "filerUser": "User",
+    "mode-selection": "Mode",
+    "mode-selection-tip": "In 'Office mode', job will filter any document that does not have an extension related to an Office software (doc, xlsx, pdf, odf...)",
     "filter": "Filter",
     "for": "für",
     "forcerestart-tip": "use this option to force a restart of Datafari even if all the crawling jobs are not stopped",
diff --git a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/en.json b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/en.json
index 7bff3e9fb..6445de234 100644
--- a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/en.json
+++ b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/en.json
@@ -487,6 +487,8 @@
     "fieldWeight": "Field weight",
     "fieldWeightExpert": "Field weight (Expert mode)",
     "filerUser": "User",
+    "mode-selection": "Mode",
+    "mode-selection-tip": "In 'Office mode', job will filter any document that does not have an extension related to an Office software (doc, xlsx, pdf, odf...)",
     "filter": "filter",
     "for": "for",
     "forcerestart-tip": "use this option to force a restart of Datafari even if all the crawling jobs are not stopped",
diff --git a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/es.json b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/es.json
index 2d5467209..4df28dfec 100644
--- a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/es.json
+++ b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/es.json
@@ -434,6 +434,8 @@
     "fieldWeight": "Field weight",
     "fieldWeightExpert": "Field weight (Expert mode)",
     "filerUser": "User",
+    "mode-selection": "Mode",
+    "mode-selection-tip": "In 'Office mode', job will filter any document that does not have an extension related to an Office software (doc, xlsx, pdf, odf...)",
     "filter": "filter",
     "for": "for",
     "forcerestart-tip": "use this option to force a restart of Datafari even if all the crawling jobs are not stopped",
diff --git a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/fr.json b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/fr.json
index 352a5c48b..6795f8378 100644
--- a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/fr.json
+++ b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/fr.json
@@ -491,6 +491,8 @@
     "fieldWeight": "Pondération des champs",
     "fieldWeightExpert": "Pondération des champs (Mode Expert)",
     "filerUser": "Utilisateur",
+    "mode-selection": "Mode",
+    "mode-selection-tip": "En 'Office mode', le job filtrera tous les documents dont l'extension n'est pas associé à un logiciel Office (doc, xlsx, pdf, odf...)",
     "filter": "filtrer",
     "for": "pour",
     "forcerestart-tip": "use this option to force a restart of Datafari even if all the crawling jobs are not stopped",
diff --git a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/it.json b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/it.json
index ca6d654b9..ae908b11b 100644
--- a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/it.json
+++ b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/it.json
@@ -467,6 +467,8 @@
     "fieldWeight": "Peso del campo",
     "fieldWeightExpert": "Field weight (Expert mode)",
     "filerUser": "User",
+    "mode-selection": "Mode",
+    "mode-selection-tip": "In 'Office mode', job will filter any document that does not have an extension related to an Office software (doc, xlsx, pdf, odf...)",
     "filter": "Filtro",
     "for": "per",
     "forcerestart-tip": "use this option to force a restart of Datafari even if all the crawling jobs are not stopped",
diff --git a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/pt_br.json b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/pt_br.json
index 35e3cfa97..8d504ce90 100644
--- a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/pt_br.json
+++ b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/pt_br.json
@@ -467,6 +467,8 @@
     "fieldWeight": "Peso do campo",
     "fieldWeightExpert": "Field weight (Expert mode)",
     "filerUser": "User",
+    "mode-selection": "Mode",
+    "mode-selection-tip": "In 'Office mode', job will filter any document that does not have an extension related to an Office software (doc, xlsx, pdf, odf...)",
     "filter": "filtro",
     "for": "para",
     "forcerestart-tip": "use this option to force a restart of Datafari even if all the crawling jobs are not stopped",
diff --git a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/ru.json b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/ru.json
index fc54fe1d7..e32adf71a 100644
--- a/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/ru.json
+++ b/datafari-webapp/src/main/webapp/resources/js/AjaxFranceLabs/locale/ru.json
@@ -467,6 +467,8 @@
     "fieldWeight": "Вес поля",
     "fieldWeightExpert": "Field weight (Expert mode)",
     "filerUser": "User",
+    "mode-selection": "Mode",
+    "mode-selection-tip": "In 'Office mode', job will filter any document that does not have an extension related to an Office software (doc, xlsx, pdf, odf...)",
     "filter": "фильтр",
     "for": "для",
     "forcerestart-tip": "use this option to force a restart of Datafari even if all the crawling jobs are not stopped",
diff --git a/datafari-webapp/src/main/webapp/resources/js/admin/ajax/mcfSimplified.js b/datafari-webapp/src/main/webapp/resources/js/admin/ajax/mcfSimplified.js
index 0bb30f9bb..dde81a346 100755
--- a/datafari-webapp/src/main/webapp/resources/js/admin/ajax/mcfSimplified.js
+++ b/datafari-webapp/src/main/webapp/resources/js/admin/ajax/mcfSimplified.js
@@ -96,6 +96,8 @@ $(document)
           $("#newWebConfig").html(window.i18n.msgStore['confirm']);
           $("#newWebConfig").attr("data-loading-text", "<i class='fa fa-spinner fa-spin'></i> " + window.i18n.msgStore['confirm']);
           $("#webTimeZoneLabel").html(window.i18n.msgStore['timezone-selection']);
+          $("#filerModeLabel").html(window.i18n.msgStore['mode-selection']);
+
 
           $("#filerJobTitle").html(window.i18n.msgStore['adminUI-MCFSimplified-filerjobFormEdit']);
           $("#filerAddLegend").html(window.i18n.msgStore['param']);
@@ -120,6 +122,7 @@ $(document)
           $("#newFilerConfig").html(window.i18n.msgStore['confirm']);
           $("#newFilerConfig").attr("data-loading-text", "<i class='fa fa-spinner fa-spin'></i> " + window.i18n.msgStore['confirm']);
           $("#filerTimeZoneLabel").html(window.i18n.msgStore['timezone-selection']);
+          $("#filerModeLabel").html(window.i18n.msgStore['mode-selection']);
 
           // Set the tooltips
           $("#server-tip").attr("title", window.i18n.msgStore['server-tip']);
@@ -131,6 +134,7 @@ $(document)
           $("#security-tip").attr("title", window.i18n.msgStore['security-tip']);
           $("#duplicatesDetection-tip").attr("title", window.i18n.msgStore['duplicatesDetection-tip']);
           $("#filerTimeZone-tip").attr("title", window.i18n.msgStore['timezone-selection-tip']);
+          $("#filerMode-tip").attr("title", window.i18n.msgStore['mode-selection-tip']);
 
           $("#seeds-tip").attr("title", window.i18n.msgStore['seeds-tip']);
           $("#email-tip").attr("title", window.i18n.msgStore['email-tip']);
@@ -139,6 +143,8 @@ $(document)
           $("#webReponame-tip").attr("title", window.i18n.msgStore['reponame-tip']);
           $("#webDuplicatesDetection-tip").attr("title", window.i18n.msgStore['duplicatesDetection-tip']);
           $("#webTimeZone-tip").attr("title", window.i18n.msgStore['timezone-selection-tip']);
+          $("#filerMode-tip").attr("title", window.i18n.msgStore['mode-selection-tip']);
+
           
           // OCR filer
           $("#filerCreateOCRLabel").html(window.i18n.msgStore['createOCR']);
-- 
GitLab