diff --git a/SafeExamBrowser.I18n.Contracts/TextKey.cs b/SafeExamBrowser.I18n.Contracts/TextKey.cs
index 505822cc..dd53c550 100644
--- a/SafeExamBrowser.I18n.Contracts/TextKey.cs
+++ b/SafeExamBrowser.I18n.Contracts/TextKey.cs
@@ -161,6 +161,7 @@ namespace SafeExamBrowser.I18n.Contracts
OperationStatus_TerminateShell,
OperationStatus_ValidateRemoteSessionPolicy,
OperationStatus_ValidateVirtualMachinePolicy,
+ OperationStatus_WaitDisclaimerConfirmation,
OperationStatus_WaitExplorerStartup,
OperationStatus_WaitExplorerTermination,
OperationStatus_WaitRuntimeDisconnection,
diff --git a/SafeExamBrowser.I18n/Data/de.xml b/SafeExamBrowser.I18n/Data/de.xml
index 759018c7..27654188 100644
--- a/SafeExamBrowser.I18n/Data/de.xml
+++ b/SafeExamBrowser.I18n/Data/de.xml
@@ -252,6 +252,12 @@
OK
+
+ Die aktuelle Sitzung wird mithilfe eines Live-Video- und Audiostreams fernüberwacht, der an einen individuell konfigurierten Server gesendet wird. Fragen Sie Ihren Prüfer nach dessen Datenschutzbestimmungen. SEB selbst stellt keine Verbindung zu einem zentralen SEB-Überwachungsserver her. Ihr Prüfungsanbieter entscheidet, welcher Überwachungsdienst/-server verwendet werden soll.
+
+
+ Starte Fernüberwachung
+
Möchten Sie SEB beenden?
@@ -435,6 +441,9 @@
Validiere Richtlinie für virtuelle Maschinen
+
+ Warte auf die Bestätigung des Hinweises zur Fernüberwachung
+
Warte bis Windows Explorer gestartet ist
diff --git a/SafeExamBrowser.I18n/Data/en.xml b/SafeExamBrowser.I18n/Data/en.xml
index b6f7ab89..c6891505 100644
--- a/SafeExamBrowser.I18n/Data/en.xml
+++ b/SafeExamBrowser.I18n/Data/en.xml
@@ -441,6 +441,9 @@
Validating virtual machine policy
+
+ Waiting for confirmation of the disclaimer
+
Waiting for Windows explorer to start up
diff --git a/SafeExamBrowser.I18n/Data/fr.xml b/SafeExamBrowser.I18n/Data/fr.xml
index 424fc883..2b793dc9 100644
--- a/SafeExamBrowser.I18n/Data/fr.xml
+++ b/SafeExamBrowser.I18n/Data/fr.xml
@@ -252,6 +252,12 @@
OK
+
+ La session en cours sera surveillée à distance à l'aide d'un flux vidéo et audio en direct, qui est envoyé à un serveur configuré individuellement. Demandez à votre examinateur sa politique de confidentialité. SEB lui-même ne se connecte à aucun serveur de surveillance SEB centralisé, votre fournisseur d'examen décide du service / serveur de surveillance à utiliser.
+
+
+ Démarrage de la surveillance à distance
+
Voulez-vous quitter SEB ?
@@ -435,6 +441,9 @@
Validation de la directive sur les machines virtuelles
+
+ En attente de confirmation de la clause de non-responsabilité
+
Attente du démarrage de l’explorateur Windows
diff --git a/SafeExamBrowser.I18n/Data/it.xml b/SafeExamBrowser.I18n/Data/it.xml
index d809ccc7..c79c7486 100644
--- a/SafeExamBrowser.I18n/Data/it.xml
+++ b/SafeExamBrowser.I18n/Data/it.xml
@@ -252,6 +252,12 @@
OK
+
+ La sessione corrente verrà controllata in remoto utilizzando un flusso video e audio dal vivo, che viene inviato a un server configurato individualmente. Chiedi al tuo esaminatore la sua politica sulla privacy. SEB stesso non si connette a nessun server di proctoring SEB centralizzato, il fornitore dell'esame decide quale servizio / server di proctoring utilizzare.
+
+
+ Avvio del proctoring remoto
+
Vuoi uscire da SEB?
@@ -435,6 +441,9 @@
Convalida dei criteri della macchina virtuale
+
+ In attesa di conferma del disclaimer
+
In attesa dell'avvio di Esplora risorse di Windows
diff --git a/SafeExamBrowser.I18n/Data/zh.xml b/SafeExamBrowser.I18n/Data/zh.xml
index 58a58e42..0ee60868 100644
--- a/SafeExamBrowser.I18n/Data/zh.xml
+++ b/SafeExamBrowser.I18n/Data/zh.xml
@@ -216,6 +216,12 @@
确定
+
+ 当前会话将使用实时视频和音频流进行远程管理,并将其发送到单独配置的服务器。 向考官询问他们的隐私政策。 SEB本身不连接到任何集中式SEB代理服务器,您的考试提供商决定要使用哪个代理服务/服务器。
+
+
+ 启动远程代理
+
您想要退出防作弊考试专用浏览器吗?
@@ -387,6 +393,9 @@
验证虚拟机策略
+
+ 等待确认免责声明
+
等待Windows资源管理器启动
diff --git a/SafeExamBrowser.Runtime.UnitTests/RuntimeControllerTests.cs b/SafeExamBrowser.Runtime.UnitTests/RuntimeControllerTests.cs
index f029bcff..4160a4ad 100644
--- a/SafeExamBrowser.Runtime.UnitTests/RuntimeControllerTests.cs
+++ b/SafeExamBrowser.Runtime.UnitTests/RuntimeControllerTests.cs
@@ -306,7 +306,7 @@ namespace SafeExamBrowser.Runtime.UnitTests
messageBox.Verify(m => m.Show(
It.IsAny(),
It.IsAny(),
- It.Is(a => a == MessageBoxAction.Confirm),
+ It.Is(a => a == MessageBoxAction.Ok),
It.Is(i => i == args.Icon),
It.IsAny()), Times.Once);
clientProxy.VerifyAdd(p => p.ConnectionLost += It.IsAny());
@@ -330,7 +330,7 @@ namespace SafeExamBrowser.Runtime.UnitTests
clientProxy.Setup(c => c.ShowMessage(
It.IsAny(),
It.IsAny(),
- It.Is(a => a == (int) MessageBoxAction.Confirm),
+ It.Is(a => a == (int) MessageBoxAction.Ok),
It.IsAny(),
It.IsAny()))
.Callback((m, t, a, i, id) =>
@@ -345,7 +345,7 @@ namespace SafeExamBrowser.Runtime.UnitTests
clientProxy.Verify(c => c.ShowMessage(
It.IsAny(),
It.IsAny(),
- It.Is(a => a == (int) MessageBoxAction.Confirm),
+ It.Is(a => a == (int) MessageBoxAction.Ok),
It.Is(i => i == (int) args.Icon),
It.IsAny()), Times.Once);
}
diff --git a/SafeExamBrowser.Runtime/Operations/DisclaimerOperation.cs b/SafeExamBrowser.Runtime/Operations/DisclaimerOperation.cs
index 91c6ee6a..77c84f4a 100644
--- a/SafeExamBrowser.Runtime/Operations/DisclaimerOperation.cs
+++ b/SafeExamBrowser.Runtime/Operations/DisclaimerOperation.cs
@@ -46,11 +46,13 @@ namespace SafeExamBrowser.Runtime.Operations
{
var args = new MessageEventArgs
{
- Icon = MessageBoxIcon.Question,
+ Action = MessageBoxAction.OkCancel,
+ Icon = MessageBoxIcon.Information,
Message = TextKey.MessageBox_ProctoringDisclaimer,
Title = TextKey.MessageBox_ProctoringDisclaimerTitle
};
+ StatusChanged?.Invoke(TextKey.OperationStatus_WaitDisclaimerConfirmation);
ActionRequired?.Invoke(args);
if (args.Result == MessageBoxResult.Ok)
diff --git a/SafeExamBrowser.Runtime/Operations/Events/MessageEventArgs.cs b/SafeExamBrowser.Runtime/Operations/Events/MessageEventArgs.cs
index b80ac8e3..bea6a1b8 100644
--- a/SafeExamBrowser.Runtime/Operations/Events/MessageEventArgs.cs
+++ b/SafeExamBrowser.Runtime/Operations/Events/MessageEventArgs.cs
@@ -25,7 +25,7 @@ namespace SafeExamBrowser.Runtime.Operations.Events
public MessageEventArgs()
{
- Action = MessageBoxAction.Confirm;
+ Action = MessageBoxAction.Ok;
MessagePlaceholders = new Dictionary();
TitlePlaceholders = new Dictionary();
}
diff --git a/SafeExamBrowser.Runtime/RuntimeController.cs b/SafeExamBrowser.Runtime/RuntimeController.cs
index 3c4ee1bc..3776d02c 100644
--- a/SafeExamBrowser.Runtime/RuntimeController.cs
+++ b/SafeExamBrowser.Runtime/RuntimeController.cs
@@ -468,11 +468,11 @@ namespace SafeExamBrowser.Runtime
if (isStartup || isRunningOnDefaultDesktop)
{
- args.Result = messageBox.Show(message, title, MessageBoxAction.Confirm, args.Icon, runtimeWindow);
+ args.Result = messageBox.Show(message, title, args.Action, args.Icon, runtimeWindow);
}
else
{
- args.Result = ShowMessageBoxViaClient(message, title, MessageBoxAction.Confirm, args.Icon);
+ args.Result = ShowMessageBoxViaClient(message, title, args.Action, args.Icon);
}
}
diff --git a/SafeExamBrowser.UserInterface.Contracts/MessageBox/IMessageBox.cs b/SafeExamBrowser.UserInterface.Contracts/MessageBox/IMessageBox.cs
index e57ba547..74da9962 100644
--- a/SafeExamBrowser.UserInterface.Contracts/MessageBox/IMessageBox.cs
+++ b/SafeExamBrowser.UserInterface.Contracts/MessageBox/IMessageBox.cs
@@ -19,11 +19,11 @@ namespace SafeExamBrowser.UserInterface.Contracts.MessageBox
///
/// Shows a message box according to the specified parameters and returns the result chosen by the user.
///
- MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null);
+ MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Ok, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null);
///
/// Shows a message box according to the specified parameters and returns the result chosen by the user.
///
- MessageBoxResult Show(TextKey message, TextKey title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null);
+ MessageBoxResult Show(TextKey message, TextKey title, MessageBoxAction action = MessageBoxAction.Ok, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null);
}
}
diff --git a/SafeExamBrowser.UserInterface.Contracts/MessageBox/MessageBoxAction.cs b/SafeExamBrowser.UserInterface.Contracts/MessageBox/MessageBoxAction.cs
index 49cd3f05..cb22aa1f 100644
--- a/SafeExamBrowser.UserInterface.Contracts/MessageBox/MessageBoxAction.cs
+++ b/SafeExamBrowser.UserInterface.Contracts/MessageBox/MessageBoxAction.cs
@@ -13,8 +13,8 @@ namespace SafeExamBrowser.UserInterface.Contracts.MessageBox
///
public enum MessageBoxAction
{
- Confirm,
- ConfirmAbort,
+ Ok,
+ OkCancel,
YesNo
}
}
diff --git a/SafeExamBrowser.UserInterface.Desktop/MessageBoxFactory.cs b/SafeExamBrowser.UserInterface.Desktop/MessageBoxFactory.cs
index cc2b20a0..28284cb4 100644
--- a/SafeExamBrowser.UserInterface.Desktop/MessageBoxFactory.cs
+++ b/SafeExamBrowser.UserInterface.Desktop/MessageBoxFactory.cs
@@ -23,9 +23,9 @@ namespace SafeExamBrowser.UserInterface.Desktop
this.text = text;
}
- public MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
+ public MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Ok, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
{
- var result = System.Windows.MessageBoxResult.None;
+ var result = default(System.Windows.MessageBoxResult);
if (parent is Window window)
{
@@ -39,7 +39,7 @@ namespace SafeExamBrowser.UserInterface.Desktop
return ToResult(result);
}
- public MessageBoxResult Show(TextKey message, TextKey title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
+ public MessageBoxResult Show(TextKey message, TextKey title, MessageBoxAction action = MessageBoxAction.Ok, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
{
return Show(text.Get(message), text.Get(title), action, icon, parent);
}
@@ -48,6 +48,8 @@ namespace SafeExamBrowser.UserInterface.Desktop
{
switch (action)
{
+ case MessageBoxAction.OkCancel:
+ return MessageBoxButton.OKCancel;
case MessageBoxAction.YesNo:
return MessageBoxButton.YesNo;
default:
diff --git a/SafeExamBrowser.UserInterface.Mobile/MessageBoxFactory.cs b/SafeExamBrowser.UserInterface.Mobile/MessageBoxFactory.cs
index 8f83d187..551d079e 100644
--- a/SafeExamBrowser.UserInterface.Mobile/MessageBoxFactory.cs
+++ b/SafeExamBrowser.UserInterface.Mobile/MessageBoxFactory.cs
@@ -24,9 +24,9 @@ namespace SafeExamBrowser.UserInterface.Mobile
this.text = text;
}
- public MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
+ public MessageBoxResult Show(string message, string title, MessageBoxAction action = MessageBoxAction.Ok, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
{
- var result = MessageBoxResult.None;
+ var result = default(MessageBoxResult);
if (parent is Window window)
{
@@ -40,7 +40,7 @@ namespace SafeExamBrowser.UserInterface.Mobile
return result;
}
- public MessageBoxResult Show(TextKey message, TextKey title, MessageBoxAction action = MessageBoxAction.Confirm, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
+ public MessageBoxResult Show(TextKey message, TextKey title, MessageBoxAction action = MessageBoxAction.Ok, MessageBoxIcon icon = MessageBoxIcon.Information, IWindow parent = null)
{
return Show(text.Get(message), text.Get(title), action, icon, parent);
}
diff --git a/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml b/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml
index ecc292d5..fe03ac80 100644
--- a/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml
+++ b/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml
@@ -34,6 +34,7 @@
+
diff --git a/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml.cs b/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml.cs
index e95cec8f..b42e80ef 100644
--- a/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml.cs
+++ b/SafeExamBrowser.UserInterface.Mobile/Windows/MessageBoxDialog.xaml.cs
@@ -53,13 +53,22 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
{
switch (action)
{
- case MessageBoxAction.Confirm:
+ case MessageBoxAction.Ok:
+ CancelButton.Visibility = Visibility.Collapsed;
OkButton.Visibility = Visibility.Visible;
OkButton.Focus();
YesButton.Visibility = Visibility.Collapsed;
NoButton.Visibility = Visibility.Collapsed;
break;
+ case MessageBoxAction.OkCancel:
+ CancelButton.Visibility = Visibility.Visible;
+ CancelButton.Focus();
+ OkButton.Visibility = Visibility.Visible;
+ YesButton.Visibility = Visibility.Collapsed;
+ NoButton.Visibility = Visibility.Collapsed;
+ break;
case MessageBoxAction.YesNo:
+ CancelButton.Visibility = Visibility.Collapsed;
OkButton.Visibility = Visibility.Collapsed;
YesButton.Visibility = Visibility.Visible;
NoButton.Visibility = Visibility.Visible;
@@ -109,6 +118,9 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
{
InitializeBounds();
+ CancelButton.Content = text.Get(TextKey.MessageBox_CancelButton);
+ CancelButton.Click += CancelButton_Click;
+
NoButton.Content = text.Get(TextKey.MessageBox_NoButton);
NoButton.Click += NoButton_Click;
@@ -125,8 +137,10 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
{
switch (action)
{
- case MessageBoxAction.Confirm:
+ case MessageBoxAction.Ok:
return DialogResult == true ? MessageBoxResult.Ok : MessageBoxResult.None;
+ case MessageBoxAction.OkCancel:
+ return DialogResult == true ? MessageBoxResult.Ok : MessageBoxResult.Cancel;
case MessageBoxAction.YesNo:
return DialogResult == true ? MessageBoxResult.Yes : MessageBoxResult.No;
default:
@@ -134,6 +148,12 @@ namespace SafeExamBrowser.UserInterface.Mobile.Windows
}
}
+ private void CancelButton_Click(object sender, RoutedEventArgs e)
+ {
+ DialogResult = false;
+ Close();
+ }
+
private void NoButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;