Browse Source

feat(config): restore to history version

Jacky 2 months ago
parent
commit
5864185615

+ 5 - 4
app/src/components/ConfigHistory/ConfigHistory.vue

@@ -11,11 +11,11 @@ import DiffViewer from './DiffViewer.vue'
 // Define props for the component
 const props = defineProps<{
   filepath: string
-  currentContent?: string
 }>()
 
 // Define modal props using defineModel with boolean type
 const visible = defineModel<boolean>('visible')
+const currentContent = defineModel<string>('currentContent')
 
 const loading = ref(false)
 const records = ref<ConfigBackup[]>([])
@@ -39,9 +39,8 @@ watch(() => [visible.value, props.filepath], ([newVisible, newPath]) => {
 // Table column definitions
 const columns = [
   {
-    title: () => $gettext('Created At'),
+    title: () => $gettext('Modified At'),
     dataIndex: 'created_at',
-    key: 'created_at',
     customRender: datetime,
   },
 ]
@@ -80,6 +79,7 @@ function changePage(page: number, pageSize: number) {
 // Row selection handler
 const rowSelection = computed(() => ({
   selectedRowKeys: selectedRowKeys.value,
+  hideSelectAll: true,
   onChange: (keys: Key[], selectedRows: ConfigBackup[]) => {
     // Limit to maximum of two records
     if (keys.length > 2) {
@@ -161,8 +161,9 @@ const compareButtonText = computed(() => {
     </AModal>
     <DiffViewer
       v-model:visible="showDiffViewer"
+      v-model:current-content="currentContent"
       :records="selectedRecords"
-      :current-content="currentContent"
+      @restore="visible = false"
     />
   </div>
 </template>

+ 58 - 14
app/src/components/ConfigHistory/DiffViewer.vue

@@ -11,11 +11,16 @@ import 'ace-builds/src-min-noconflict/ext-language_tools'
 
 const props = defineProps<{
   records: ConfigBackup[]
-  currentContent?: string
+}>()
+
+const emit = defineEmits<{
+  (e: 'restore'): void
 }>()
 
 // Define modal visibility using defineModel with boolean type
 const visible = defineModel<boolean>('visible')
+// Define currentContent using defineModel
+const currentContent = defineModel<string>('currentContent')
 
 const originalText = ref('')
 const modifiedText = ref('')
@@ -42,7 +47,7 @@ function setContent() {
     if (props.records.length === 1) {
       // Single record - compare with current content
       originalText.value = props.records[0]?.content || ''
-      modifiedText.value = props.currentContent || ''
+      modifiedText.value = currentContent.value || ''
 
       // Ensure both sides have content for comparison
       if (!originalText.value || !modifiedText.value) {
@@ -341,6 +346,27 @@ function handleClose() {
   visible.value = false
   errorMessage.value = ''
 }
+
+// Add restore functionality
+function restoreContent() {
+  if (originalText.value) {
+    // Update current content with history version
+    currentContent.value = originalText.value
+    // Close dialog
+    handleClose()
+    emit('restore')
+  }
+}
+
+// Add restore functionality for modified content
+function restoreModifiedContent() {
+  if (modifiedText.value && props.records.length === 2) {
+    // Update current content with the modified version
+    currentContent.value = modifiedText.value
+    // Close dialog
+    handleClose()
+  }
+}
 </script>
 
 <template>
@@ -361,11 +387,30 @@ function handleClose() {
 
     <div v-else class="diff-container">
       <div class="diff-header">
-        <div class="diff-title">
-          {{ originalTitle }}
+        <div class="diff-title-container">
+          <div class="diff-title">
+            {{ originalTitle }}
+          </div>
+          <AButton
+            type="link"
+            size="small"
+            @click="restoreContent"
+          >
+            {{ $gettext('Restore this version') }}
+          </AButton>
         </div>
-        <div class="diff-title">
-          {{ modifiedTitle }}
+        <div class="diff-title-container">
+          <div class="diff-title">
+            {{ modifiedTitle }}
+          </div>
+          <AButton
+            v-if="props.records.length === 2"
+            type="link"
+            size="small"
+            @click="restoreModifiedContent"
+          >
+            {{ $gettext('Restore this version') }}
+          </AButton>
         </div>
       </div>
       <div
@@ -393,9 +438,14 @@ function handleClose() {
   margin-bottom: 8px;
 }
 
-.diff-title {
-  font-weight: bold;
+.diff-title-container {
+  display: flex;
+  align-items: center;
   width: 50%;
+  gap: 8px;
+}
+
+.diff-title {
   padding: 0 8px;
 }
 
@@ -406,10 +456,4 @@ function handleClose() {
   border-radius: 4px;
   overflow: hidden;
 }
-
-.diff-footer {
-  display: flex;
-  justify-content: flex-end;
-  margin-top: 16px;
-}
 </style>

+ 21 - 13
app/src/language/ar/app.po

@@ -394,8 +394,8 @@ msgstr "إلغاء"
 msgid "Cannot change initial user password in demo mode"
 msgstr "حظر تغيير كلمة مرور root في العرض التوضيحي"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -556,7 +556,7 @@ msgstr "تعليقات"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "التكوينات"
@@ -680,11 +680,6 @@ msgstr ""
 msgid "Created at"
 msgstr "تم الإنشاء في"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "تم الإنشاء في"
-
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgstr "تم الإنشاء بنجاح"
@@ -709,7 +704,7 @@ msgstr "TOTP مفعل للحساب الحالي."
 msgid "Current account is not enabled TOTP."
 msgstr "TOTP معطل للحساب الحالي."
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "الإصدار الحالي"
@@ -1171,7 +1166,7 @@ msgstr "البيئات"
 msgid "Error"
 msgstr "خطأ"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1184,7 +1179,7 @@ msgstr "سجلات الأخطاء"
 msgid "Error Logs"
 msgstr "سجلات الأخطاء"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1400,7 +1395,7 @@ msgstr "فشل في الحصول على معلومات الشهادة"
 msgid "Failed to get certificate information"
 msgstr "فشل في الحصول على معلومات الشهادة"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "فشل في التفعيل %{msg}"
@@ -1980,6 +1975,10 @@ msgstr "دقائق"
 msgid "Model"
 msgstr "نموذج"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2214,7 +2213,7 @@ msgstr "لا"
 msgid "No Action"
 msgstr "إجراء"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -2937,6 +2936,11 @@ msgstr "مجلد تكوينات Nginx"
 msgid "Restore Nginx UI Configuration"
 msgstr "مجلد تكوينات Nginx"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr "اسم العرض RP"
@@ -3962,6 +3966,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr "مفاتيح المرور الخاصة بك"
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "تم الإنشاء في"
+
 #~ msgid "Category"
 #~ msgstr "فئة"
 

+ 21 - 13
app/src/language/de_DE/app.po

@@ -412,8 +412,8 @@ msgstr "Abbrechen"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Verhindere das Ändern des Root-Passworts in der Demo"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -575,7 +575,7 @@ msgstr "Kom"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "Konfigurationen"
@@ -703,11 +703,6 @@ msgstr ""
 msgid "Created at"
 msgstr "Erstellt"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Erstellt"
-
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 msgid "Created successfully"
@@ -733,7 +728,7 @@ msgstr "Aktuelles Konto ist TOTP aktiviert."
 msgid "Current account is not enabled TOTP."
 msgstr "Aktuelles Konto ist nicht TOTP aktiviert."
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "Aktuelle Version"
@@ -1219,7 +1214,7 @@ msgstr "Kommentare"
 msgid "Error"
 msgstr "Fehler"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1232,7 +1227,7 @@ msgstr "Feherlogs"
 msgid "Error Logs"
 msgstr "Feherlogs"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1449,7 +1444,7 @@ msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 msgid "Failed to get certificate information"
 msgstr "Fehler beim Abrufen von Zertifikatsinformationen"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "Aktiviern von %{msg} fehlgeschlagen"
@@ -2050,6 +2045,10 @@ msgstr "Minuten"
 msgid "Model"
 msgstr "Erweiterter Modus"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2294,7 +2293,7 @@ msgstr "Nein"
 msgid "No Action"
 msgstr "Aktion"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -3057,6 +3056,11 @@ msgstr "Name der Konfiguration"
 msgid "Restore Nginx UI Configuration"
 msgstr "Name der Konfiguration"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr "RP-Anzeigename"
@@ -4111,6 +4115,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr "Deine Passkeys"
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Erstellt"
+
 #~ msgid "Category"
 #~ msgstr "Kategorie"
 

+ 21 - 13
app/src/language/en/app.po

@@ -407,8 +407,8 @@ msgstr "Cancel"
 msgid "Cannot change initial user password in demo mode"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -569,7 +569,7 @@ msgstr "Comments"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "Configurations"
@@ -695,11 +695,6 @@ msgstr ""
 msgid "Created at"
 msgstr "Created at"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Created at"
-
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 msgid "Created successfully"
@@ -725,7 +720,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "Content"
@@ -1205,7 +1200,7 @@ msgstr "Comments"
 msgid "Error"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1217,7 +1212,7 @@ msgstr ""
 msgid "Error Logs"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1436,7 +1431,7 @@ msgstr "Certificate is valid"
 msgid "Failed to get certificate information"
 msgstr "Certificate is valid"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "Failed to enable %{msg}"
@@ -2028,6 +2023,10 @@ msgstr ""
 msgid "Model"
 msgstr "Advance Mode"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2271,7 +2270,7 @@ msgstr "No"
 msgid "No Action"
 msgstr "Action"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -3009,6 +3008,11 @@ msgstr "Configuration Name"
 msgid "Restore Nginx UI Configuration"
 msgstr "Configuration Name"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr ""
@@ -4028,6 +4032,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr ""
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Created at"
+
 #, fuzzy
 #~ msgid "Deploy %{conf_name} to %{node_name} successfully"
 #~ msgstr "Saved successfully"

+ 21 - 13
app/src/language/es/app.po

@@ -401,8 +401,8 @@ msgstr "Cancelar"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Prohibir cambiar la contraseña de root en la demostración"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -555,7 +555,7 @@ msgstr "Comentarios"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "Configuraciones"
@@ -679,11 +679,6 @@ msgstr ""
 msgid "Created at"
 msgstr "Creado el"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Creado el"
-
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgstr "Creado con éxito"
@@ -708,7 +703,7 @@ msgstr "La cuenta actual tiene habilitada TOTP."
 msgid "Current account is not enabled TOTP."
 msgstr "La cuenta actual no tiene habilitada TOTP."
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "Versión actual"
@@ -1174,7 +1169,7 @@ msgstr "Entornos"
 msgid "Error"
 msgstr "Error"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1187,7 +1182,7 @@ msgstr "Logs de error"
 msgid "Error Logs"
 msgstr "Logs de error"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1402,7 +1397,7 @@ msgstr "No se pudo obtener la información del certificado"
 msgid "Failed to get certificate information"
 msgstr "No se pudo obtener la información del certificado"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "Error al habilitar %{msg}"
@@ -1983,6 +1978,10 @@ msgstr "Minutos"
 msgid "Model"
 msgstr "Modelo"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2220,7 +2219,7 @@ msgstr "No"
 msgid "No Action"
 msgstr "Acción"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -2965,6 +2964,11 @@ msgstr "Error de análisis de configuración de Nginx"
 msgid "Restore Nginx UI Configuration"
 msgstr "Error de análisis de configuración de Nginx"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr "Nombre RP"
@@ -4010,6 +4014,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr "Sus llaves de acceso"
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Creado el"
+
 #~ msgid "Category"
 #~ msgstr "Categoría"
 

+ 21 - 13
app/src/language/fr_FR/app.po

@@ -415,8 +415,8 @@ msgstr "Annuler"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Interdire la modification du mot de passe root dans la démo"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -581,7 +581,7 @@ msgstr "Commentaires"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "Configurations"
@@ -707,11 +707,6 @@ msgstr ""
 msgid "Created at"
 msgstr "Créé le"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Créé le"
-
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 msgid "Created successfully"
@@ -737,7 +732,7 @@ msgstr "Le compte actuel a le TOTP d'activé."
 msgid "Current account is not enabled TOTP."
 msgstr "Le compte actuel n'a pas le TOTP d'activé."
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "Version actuelle"
@@ -1224,7 +1219,7 @@ msgstr "Commentaires"
 msgid "Error"
 msgstr "Erreur"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1237,7 +1232,7 @@ msgstr "Journaux d'erreurs"
 msgid "Error Logs"
 msgstr "Journaux d'erreurs"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1455,7 +1450,7 @@ msgstr "Échec de l'obtention des informations sur le certificat"
 msgid "Failed to get certificate information"
 msgstr "Échec de l'obtention des informations sur le certificat"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "Impossible d'activer %{msg}"
@@ -2061,6 +2056,10 @@ msgstr ""
 msgid "Model"
 msgstr "Mode d'exécution"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2304,7 +2303,7 @@ msgstr "Non"
 msgid "No Action"
 msgstr "Action"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -3051,6 +3050,11 @@ msgstr "Erreur d'analyse de configuration Nginx"
 msgid "Restore Nginx UI Configuration"
 msgstr "Erreur d'analyse de configuration Nginx"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr ""
@@ -4073,6 +4077,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr ""
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Créé le"
+
 #~ msgid "Category"
 #~ msgstr "Catégorie"
 

+ 21 - 13
app/src/language/ko_KR/app.po

@@ -396,8 +396,8 @@ msgstr "취소"
 msgid "Cannot change initial user password in demo mode"
 msgstr "데모에서 루트 비밀번호 변경 금지"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -552,7 +552,7 @@ msgstr "댓글"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "구성들"
@@ -676,11 +676,6 @@ msgstr ""
 msgid "Created at"
 msgstr "생성 시간"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "생성 시간"
-
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 msgid "Created successfully"
@@ -706,7 +701,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "현재 버전"
@@ -1173,7 +1168,7 @@ msgstr "환경"
 msgid "Error"
 msgstr "오류"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1186,7 +1181,7 @@ msgstr "오류 로그"
 msgid "Error Logs"
 msgstr "오류 로그"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1403,7 +1398,7 @@ msgstr "인증서 정보 가져오기 실패"
 msgid "Failed to get certificate information"
 msgstr "인증서 정보 가져오기 실패"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "%{msg} 활성화 실패"
@@ -1990,6 +1985,10 @@ msgstr "분"
 msgid "Model"
 msgstr "실행 모드"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2235,7 +2234,7 @@ msgstr "아니요"
 msgid "No Action"
 msgstr "작업"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -2981,6 +2980,11 @@ msgstr "Nginx 구성 오류름"
 msgid "Restore Nginx UI Configuration"
 msgstr "Nginx 구성 오류름"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr ""
@@ -4000,6 +4004,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr ""
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "생성 시간"
+
 #, fuzzy
 #~ msgid "Restart Required"
 #~ msgstr "재시작 중"

+ 17 - 12
app/src/language/messages.pot

@@ -377,8 +377,8 @@ msgstr ""
 msgid "Cannot change initial user password in demo mode"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -521,7 +521,7 @@ msgstr ""
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 msgid "Compare Configurations"
 msgstr ""
 
@@ -638,10 +638,6 @@ msgstr ""
 msgid "Created at"
 msgstr ""
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-msgid "Created At"
-msgstr ""
-
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgstr ""
@@ -666,7 +662,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 msgid "Current Content"
 msgstr ""
 
@@ -1109,7 +1105,7 @@ msgstr ""
 msgid "Error"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1122,7 +1118,7 @@ msgstr ""
 msgid "Error Logs"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1313,7 +1309,7 @@ msgstr ""
 msgid "Failed to get certificate information"
 msgstr ""
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 msgid "Failed to load history records"
 msgstr ""
 
@@ -1845,6 +1841,10 @@ msgstr ""
 msgid "Model"
 msgstr ""
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2071,7 +2071,7 @@ msgstr ""
 msgid "No Action"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -2738,6 +2738,11 @@ msgstr ""
 msgid "Restore Nginx UI Configuration"
 msgstr ""
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr ""

+ 21 - 13
app/src/language/ru_RU/app.po

@@ -392,8 +392,8 @@ msgstr "Отмена"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Невозможно изменить пароль начального пользователя в демо-режиме"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -543,7 +543,7 @@ msgstr "Комментарии"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "Конфигурации"
@@ -666,11 +666,6 @@ msgstr ""
 msgid "Created at"
 msgstr "Создан в"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Создан в"
-
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgstr "Создано успешно"
@@ -695,7 +690,7 @@ msgstr "Текущая учетная запись имеет включенну
 msgid "Current account is not enabled TOTP."
 msgstr "Для текущей учетной записи TOTP не включен."
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "Текущяя версия"
@@ -1158,7 +1153,7 @@ msgstr "Окружения"
 msgid "Error"
 msgstr "Ошибка"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1171,7 +1166,7 @@ msgstr "Ошибка логирования"
 msgid "Error Logs"
 msgstr "Ошибка логирования"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1386,7 +1381,7 @@ msgstr "Не удалось получить информацию о серти
 msgid "Failed to get certificate information"
 msgstr "Не удалось получить информацию о сертификате"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "Не удалось включить %{msg}"
@@ -1963,6 +1958,10 @@ msgstr "Минуты"
 msgid "Model"
 msgstr "Модель"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2199,7 +2198,7 @@ msgstr "Нет"
 msgid "No Action"
 msgstr "Действие"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -2932,6 +2931,11 @@ msgstr "Ошибка разбора конфигурации Nginx"
 msgid "Restore Nginx UI Configuration"
 msgstr "Ошибка разбора конфигурации Nginx"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr ""
@@ -3954,6 +3958,10 @@ msgstr "Ваши старые коды больше не будут работа
 msgid "Your passkeys"
 msgstr ""
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Создан в"
+
 #~ msgid "Category"
 #~ msgstr "Категория"
 

+ 21 - 13
app/src/language/tr_TR/app.po

@@ -394,8 +394,8 @@ msgstr "İptal"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Demoda kök parolasını değiştirmeyi yasakla"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -548,7 +548,7 @@ msgstr "Yorumlar"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "Yapılandırmalar"
@@ -672,11 +672,6 @@ msgstr ""
 msgid "Created at"
 msgstr "Oluşturulma Tarihi"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Oluşturulma Tarihi"
-
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgstr "Başarıyla oluşturuldu"
@@ -701,7 +696,7 @@ msgstr "Mevcut hesap için TOTP etkinleştirildi."
 msgid "Current account is not enabled TOTP."
 msgstr "Mevcut hesap için TOTP etkin değil."
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "Mevcut sürüm"
@@ -1187,7 +1182,7 @@ msgstr "Ortamlar"
 msgid "Error"
 msgstr "Hata"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1200,7 +1195,7 @@ msgstr "Hata Günlükleri"
 msgid "Error Logs"
 msgstr "Hata Günlükleri"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1415,7 +1410,7 @@ msgstr "Sertifika bilgileri alınamadı"
 msgid "Failed to get certificate information"
 msgstr "Sertifika bilgileri alınamadı"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "Etkinleştirilemedi %{msg}"
@@ -2005,6 +2000,10 @@ msgstr "Dakika"
 msgid "Model"
 msgstr "Model"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2265,7 +2264,7 @@ msgstr "Hayır"
 msgid "No Action"
 msgstr "Eylem"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -3099,6 +3098,11 @@ msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 msgid "Restore Nginx UI Configuration"
 msgstr "Nginx Yapılandırma Ayrıştırma Hatası"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr ""
@@ -4237,6 +4241,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr "Geçiş anahtarlarınız"
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Oluşturulma Tarihi"
+
 #, fuzzy
 #~ msgid "Restart Required"
 #~ msgstr "Yeniden Başlatma"

+ 21 - 13
app/src/language/vi_VN/app.po

@@ -409,8 +409,8 @@ msgstr "Huỷ"
 msgid "Cannot change initial user password in demo mode"
 msgstr "Cấm thay đổi mật khẩu root trong demo"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -572,7 +572,7 @@ msgstr "Bình luận"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "Cấu hình"
@@ -698,11 +698,6 @@ msgstr ""
 msgid "Created at"
 msgstr "Ngày tạo"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "Ngày tạo"
-
 #: src/views/config/components/Mkdir.vue:35
 #, fuzzy
 msgid "Created successfully"
@@ -728,7 +723,7 @@ msgstr ""
 msgid "Current account is not enabled TOTP."
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "Phiên bản hiện tại"
@@ -1210,7 +1205,7 @@ msgstr "Environments"
 msgid "Error"
 msgstr "Lỗi"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1223,7 +1218,7 @@ msgstr "Log lỗi"
 msgid "Error Logs"
 msgstr "Log lỗi"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1440,7 +1435,7 @@ msgstr "Không thể truy xuất thông tin chứng chỉ"
 msgid "Failed to get certificate information"
 msgstr "Không thể truy xuất thông tin chứng chỉ"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "Không thể bật %{msg}"
@@ -2022,6 +2017,10 @@ msgstr ""
 msgid "Model"
 msgstr "Run Mode"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2265,7 +2264,7 @@ msgstr "Không"
 msgid "No Action"
 msgstr "Hành động"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -3009,6 +3008,11 @@ msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 msgid "Restore Nginx UI Configuration"
 msgstr "Lỗi phân tích cú pháp cấu hình Nginx"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr ""
@@ -4021,6 +4025,10 @@ msgstr ""
 msgid "Your passkeys"
 msgstr ""
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "Ngày tạo"
+
 #, fuzzy
 #~ msgid "Restart Required"
 #~ msgstr "Đang khởi động lại"

+ 21 - 13
app/src/language/zh_CN/app.po

@@ -3,7 +3,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "POT-Creation-Date: \n"
-"PO-Revision-Date: 2025-04-06 10:43+0800\n"
+"PO-Revision-Date: 2025-04-06 12:00+0800\n"
 "Last-Translator: 0xJacky <me@jackyu.cn>\n"
 "Language-Team: Chinese (Simplified Han script) <https://weblate.nginxui.com/"
 "projects/nginx-ui/frontend/zh_Hans/>\n"
@@ -382,8 +382,8 @@ msgstr "取消"
 msgid "Cannot change initial user password in demo mode"
 msgstr "不可在 Demo 中修改初始用户的密码"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr "无法比较:内容缺失"
 
@@ -533,7 +533,7 @@ msgstr "注释"
 msgid "Compare"
 msgstr "比较"
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 msgid "Compare Configurations"
 msgstr "配置比较"
 
@@ -652,10 +652,6 @@ msgstr ""
 msgid "Created at"
 msgstr "创建时间"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-msgid "Created At"
-msgstr "创建时间"
-
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgstr "创建成功"
@@ -680,7 +676,7 @@ msgstr "当前账户已启用 TOTP 验证。"
 msgid "Current account is not enabled TOTP."
 msgstr "当前用户未启用 TOTP 验证。"
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 msgid "Current Content"
 msgstr "当前内容"
 
@@ -1114,7 +1110,7 @@ msgstr "环境"
 msgid "Error"
 msgstr "错误"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr "差异查看器初始化出错"
 
@@ -1126,7 +1122,7 @@ msgstr "错误日志"
 msgid "Error Logs"
 msgstr "错误日志"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr "内容处理错误"
 
@@ -1317,7 +1313,7 @@ msgstr "生成初始化向量失败:{0}"
 msgid "Failed to get certificate information"
 msgstr "获取证书信息失败"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 msgid "Failed to load history records"
 msgstr "加载历史记录失败"
 
@@ -1868,6 +1864,10 @@ msgstr "分钟"
 msgid "Model"
 msgstr "模型"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr "修改时间"
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2093,7 +2093,7 @@ msgstr "取消"
 msgid "No Action"
 msgstr "无操作"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr "未选择记录"
 
@@ -2777,6 +2777,11 @@ msgstr "恢复 Nginx 配置"
 msgid "Restore Nginx UI Configuration"
 msgstr "恢复 Nginx UI 配置"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr "恢复此版本"
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr "依赖方显示名称"
@@ -3749,6 +3754,9 @@ msgstr "您的旧代码将不再有效。"
 msgid "Your passkeys"
 msgstr "你的 Passkeys"
 
+#~ msgid "Created At"
+#~ msgstr "创建时间"
+
 #~ msgid "Groups"
 #~ msgstr "组"
 

+ 21 - 13
app/src/language/zh_TW/app.po

@@ -393,8 +393,8 @@ msgstr "取消"
 msgid "Cannot change initial user password in demo mode"
 msgstr "無法在示範模式下更改初始使用者密碼"
 
-#: src/components/ConfigHistory/DiffViewer.vue:49
-#: src/components/ConfigHistory/DiffViewer.vue:66
+#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:71
 msgid "Cannot compare: Missing content"
 msgstr ""
 
@@ -544,7 +544,7 @@ msgstr "備註"
 msgid "Compare"
 msgstr ""
 
-#: src/components/ConfigHistory/DiffViewer.vue:349
+#: src/components/ConfigHistory/DiffViewer.vue:375
 #, fuzzy
 msgid "Compare Configurations"
 msgstr "設定"
@@ -667,11 +667,6 @@ msgstr ""
 msgid "Created at"
 msgstr "建立時間"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:42
-#, fuzzy
-msgid "Created At"
-msgstr "建立時間"
-
 #: src/views/config/components/Mkdir.vue:35
 msgid "Created successfully"
 msgstr "創建成功"
@@ -696,7 +691,7 @@ msgstr "當前帳戶已啟用 TOTP。"
 msgid "Current account is not enabled TOTP."
 msgstr "當前帳戶未啟用 TOTP。"
 
-#: src/components/ConfigHistory/DiffViewer.vue:54
+#: src/components/ConfigHistory/DiffViewer.vue:59
 #, fuzzy
 msgid "Current Content"
 msgstr "目前版本"
@@ -1142,7 +1137,7 @@ msgstr "環境"
 msgid "Error"
 msgstr "錯誤"
 
-#: src/components/ConfigHistory/DiffViewer.vue:127
+#: src/components/ConfigHistory/DiffViewer.vue:132
 msgid "Error initializing diff viewer"
 msgstr ""
 
@@ -1155,7 +1150,7 @@ msgstr "錯誤日誌"
 msgid "Error Logs"
 msgstr "錯誤日誌"
 
-#: src/components/ConfigHistory/DiffViewer.vue:79
+#: src/components/ConfigHistory/DiffViewer.vue:84
 msgid "Error processing content"
 msgstr ""
 
@@ -1370,7 +1365,7 @@ msgstr "取得憑證資訊失敗"
 msgid "Failed to get certificate information"
 msgstr "取得憑證資訊失敗"
 
-#: src/components/ConfigHistory/ConfigHistory.vue:65
+#: src/components/ConfigHistory/ConfigHistory.vue:64
 #, fuzzy
 msgid "Failed to load history records"
 msgstr "創建備份失敗"
@@ -1941,6 +1936,10 @@ msgstr "分鐘"
 msgid "Model"
 msgstr "模型"
 
+#: src/components/ConfigHistory/ConfigHistory.vue:42
+msgid "Modified At"
+msgstr ""
+
 #: src/components/ChatGPT/ChatGPT.vue:352
 #: src/components/StdDesign/StdDataDisplay/StdCurd.vue:151
 #: src/components/StdDesign/StdDataDisplay/StdTable.vue:498
@@ -2175,7 +2174,7 @@ msgstr "取消"
 msgid "No Action"
 msgstr "操作"
 
-#: src/components/ConfigHistory/DiffViewer.vue:36
+#: src/components/ConfigHistory/DiffViewer.vue:41
 msgid "No records selected"
 msgstr ""
 
@@ -2890,6 +2889,11 @@ msgstr "Nginx 配置目錄"
 msgid "Restore Nginx UI Configuration"
 msgstr "Nginx 配置目錄"
 
+#: src/components/ConfigHistory/DiffViewer.vue:399
+#: src/components/ConfigHistory/DiffViewer.vue:412
+msgid "Restore this version"
+msgstr ""
+
 #: src/views/preference/AuthSettings.vue:107
 msgid "RP Display Name"
 msgstr "RP 顯示名稱"
@@ -3885,6 +3889,10 @@ msgstr "您的舊代碼將不再有效。"
 msgid "Your passkeys"
 msgstr "您的通行密鑰"
 
+#, fuzzy
+#~ msgid "Created At"
+#~ msgstr "建立時間"
+
 #~ msgid "Category"
 #~ msgstr "類別"
 

+ 1 - 1
app/src/views/config/ConfigEditor.vue

@@ -337,8 +337,8 @@ function openHistory() {
 
     <ConfigHistory
       v-model:visible="showHistory"
+      v-model:current-content="data.content"
       :filepath="data.filepath"
-      :current-content="data.content"
     />
   </ARow>
 </template>

+ 1 - 1
app/src/views/site/site_edit/SiteEdit.vue

@@ -296,8 +296,8 @@ provide('data', data)
 
     <ConfigHistory
       v-model:visible="showHistory"
+      v-model:current-content="configText"
       :filepath="filepath"
-      :current-content="configText"
     />
   </ARow>
 </template>

+ 1 - 1
app/src/views/stream/StreamEdit.vue

@@ -279,8 +279,8 @@ provide('data', data)
 
     <ConfigHistory
       v-model:visible="showHistory"
+      v-model:current-content="configText"
       :filepath="filepath"
-      :current-content="configText"
     />
   </ARow>
 </template>