TeacherControlPlugin - вылизывание входа
This commit is contained in:
parent
308da7ab5c
commit
e1ae47aee9
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
||||||
public const string Major = "3";
|
public const string Major = "3";
|
||||||
public const string Minor = "8";
|
public const string Minor = "8";
|
||||||
public const string Build = "3";
|
public const string Build = "3";
|
||||||
public const string Revision = "3150";
|
public const string Revision = "3152";
|
||||||
|
|
||||||
public const string MainVersion = Major + "." + Minor;
|
public const string MainVersion = Major + "." + Minor;
|
||||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
%COREVERSION%=3
|
%COREVERSION%=3
|
||||||
%REVISION%=3150
|
%REVISION%=3152
|
||||||
%MINOR%=8
|
%MINOR%=8
|
||||||
%MAJOR%=3
|
%MAJOR%=3
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -17,6 +17,9 @@ namespace VisualPascalABCPlugins
|
||||||
System.Windows.Forms.Keys shortcutKeys = System.Windows.Forms.Keys.None;
|
System.Windows.Forms.Keys shortcutKeys = System.Windows.Forms.Keys.None;
|
||||||
string shortcutKeyDisplayString = null;
|
string shortcutKeyDisplayString = null;
|
||||||
|
|
||||||
|
public object menuItem { get; set; }
|
||||||
|
public object toolStripButton { get; set; }
|
||||||
|
|
||||||
public PluginGUIItem(string text, string hint, Image image, Color imageTransparentColor, PluginGUIItemExecuteDelegate executeDelegate)
|
public PluginGUIItem(string text, string hint, Image image, Color imageTransparentColor, PluginGUIItemExecuteDelegate executeDelegate)
|
||||||
{
|
{
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,13 @@ namespace VisualPascalABCPlugins
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// SSM 07.08.22 кнопка пункта меню. В плагине преобразовать к ToolStripMenuItem
|
||||||
|
object menuItem { get; set; }
|
||||||
|
|
||||||
|
/// SSM 07.08.22 кнопка панели инструментов. В плагине преобразовать к ToolStripButton
|
||||||
|
object toolStripButton { get; set; }
|
||||||
|
|
||||||
void Execute();
|
void Execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,9 @@ namespace VisualPascalABCPlugins
|
||||||
System.Windows.Forms.Keys shortcutKeys = System.Windows.Forms.Keys.None;
|
System.Windows.Forms.Keys shortcutKeys = System.Windows.Forms.Keys.None;
|
||||||
string shortcutKeyDisplayString = null;
|
string shortcutKeyDisplayString = null;
|
||||||
|
|
||||||
|
public object menuItem { get; set; }
|
||||||
|
public object toolStripButton { get; set; }
|
||||||
|
|
||||||
public PluginGUIItem(string text, string hint, Image image, Color imageTransparentColor, PluginGUIItemExecuteDelegate executeDelegate)
|
public PluginGUIItem(string text, string hint, Image image, Color imageTransparentColor, PluginGUIItemExecuteDelegate executeDelegate)
|
||||||
{
|
{
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,13 @@ namespace VisualPascalABCPlugins
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// SSM 07.08.22 кнопка пункта меню. В плагине преобразовать к ToolStripMenuItem
|
||||||
|
object menuItem { get; set; }
|
||||||
|
|
||||||
|
/// SSM 07.08.22 кнопка панели инструментов. В плагине преобразовать к ToolStripButton
|
||||||
|
object toolStripButton { get; set; }
|
||||||
|
|
||||||
void Execute();
|
void Execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
3.8.3.3150
|
3.8.3.3152
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
!define VERSION '3.8.3.3150'
|
!define VERSION '3.8.3.3152'
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,8 @@ type
|
||||||
property Parent: Node read getParent write SetParent;
|
property Parent: Node read getParent write SetParent;
|
||||||
property Data: integer read getData write SetData;
|
property Data: integer read getData write SetData;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
var TaskName: string;
|
||||||
|
|
||||||
/// Вывести формулировку задания
|
/// Вывести формулировку задания
|
||||||
procedure Task(name: string);
|
procedure Task(name: string);
|
||||||
|
|
@ -833,7 +835,7 @@ procedure StartPT(options: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
||||||
procedure FreePT; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'freept';
|
procedure FreePT; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'freept';
|
||||||
function CheckPT(var res: integer):string;external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'checkptf';
|
function CheckPT(var res: integer):string;external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'checkptf';
|
||||||
procedure RaisePT(s1,s2: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'raisept';
|
procedure RaisePT(s1,s2: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'raisept';
|
||||||
procedure Task(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
procedure Task__(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
||||||
procedure GetR(var param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getr';
|
procedure GetR(var param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getr';
|
||||||
procedure PutR(param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'putr';
|
procedure PutR(param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'putr';
|
||||||
procedure GetN(var param: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getn';
|
procedure GetN(var param: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getn';
|
||||||
|
|
@ -850,6 +852,12 @@ procedure DisposeP(sNode: IntPtr); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
||||||
function FinishPT(): integer; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'finishpt'; // == 4.13 ==
|
function FinishPT(): integer; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'finishpt'; // == 4.13 ==
|
||||||
procedure _GetSolutionInfo(info: System.Text.StringBuilder);external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getsolutioninfo';
|
procedure _GetSolutionInfo(info: System.Text.StringBuilder);external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getsolutioninfo';
|
||||||
|
|
||||||
|
procedure Task(name: string);
|
||||||
|
begin
|
||||||
|
Task__(name);
|
||||||
|
TaskName := name;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure Dispose(p: pointer);
|
procedure Dispose(p: pointer);
|
||||||
begin
|
begin
|
||||||
DisposeP(IntPtr(p));
|
DisposeP(IntPtr(p));
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
}
|
}
|
||||||
|
|
||||||
// SSM 29.07.16 - если in_what - одномерный массив, то заменить код foreach на for
|
// SSM 29.07.16 - если in_what - одномерный массив, то заменить код foreach на for
|
||||||
|
// Лямбды обходят старое дерево, поэтому не работает. Кстати, почему? SSM 04/08/22
|
||||||
// if (OptimizeForeachInCase1DArray(_foreach_stmt, foreachCollection)) return;
|
// if (OptimizeForeachInCase1DArray(_foreach_stmt, foreachCollection)) return;
|
||||||
|
|
||||||
statements_list sl = new statements_list(get_location(_foreach_stmt.stmt));
|
statements_list sl = new statements_list(get_location(_foreach_stmt.stmt));
|
||||||
|
|
|
||||||
|
|
@ -76,8 +76,9 @@ namespace VisualPascalABCPlugins
|
||||||
menuItem.Image = Item.Image;
|
menuItem.Image = Item.Image;
|
||||||
menuItem.ImageTransparentColor = Item.ImageTransparentColor;
|
menuItem.ImageTransparentColor = Item.ImageTransparentColor;
|
||||||
menuItem.Text = Item.Text;
|
menuItem.Text = Item.Text;
|
||||||
menuItem.ToolTipText = Item.Hint;
|
//menuItem.ToolTipText = Item.Hint;
|
||||||
menuItem.Tag = Item;
|
menuItem.Tag = Item;
|
||||||
|
Item.menuItem = menuItem;
|
||||||
menuItem.ShortcutKeys = Item.ShortcutKeys;
|
menuItem.ShortcutKeys = Item.ShortcutKeys;
|
||||||
if (Item.ShortcutKeyDisplayString != null)
|
if (Item.ShortcutKeyDisplayString != null)
|
||||||
menuItem.ShortcutKeyDisplayString = Item.ShortcutKeyDisplayString;
|
menuItem.ShortcutKeyDisplayString = Item.ShortcutKeyDisplayString;
|
||||||
|
|
@ -110,6 +111,7 @@ namespace VisualPascalABCPlugins
|
||||||
button.ToolTipText = Item.Hint;
|
button.ToolTipText = Item.Hint;
|
||||||
button.Click += new EventHandler(button_Click);
|
button.Click += new EventHandler(button_Click);
|
||||||
button.Tag = Item;
|
button.Tag = Item;
|
||||||
|
Item.toolStripButton = button;
|
||||||
ToolStrip.Items.Add(button);
|
ToolStrip.Items.Add(button);
|
||||||
PascalABCCompiler.StringResources.SetTextForObject(button, "");
|
PascalABCCompiler.StringResources.SetTextForObject(button, "");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ namespace VisualPascalABCPlugins
|
||||||
menuItem.Text = Item.Text;
|
menuItem.Text = Item.Text;
|
||||||
//menuItem.ToolTipText = Item.Hint;
|
//menuItem.ToolTipText = Item.Hint;
|
||||||
menuItem.Tag = Item;
|
menuItem.Tag = Item;
|
||||||
|
Item.menuItem = menuItem;
|
||||||
menuItem.ShortcutKeys = Item.ShortcutKeys;
|
menuItem.ShortcutKeys = Item.ShortcutKeys;
|
||||||
if (Item.ShortcutKeyDisplayString != null)
|
if (Item.ShortcutKeyDisplayString != null)
|
||||||
menuItem.ShortcutKeyDisplayString = Item.ShortcutKeyDisplayString;
|
menuItem.ShortcutKeyDisplayString = Item.ShortcutKeyDisplayString;
|
||||||
|
|
@ -110,6 +111,7 @@ namespace VisualPascalABCPlugins
|
||||||
button.ToolTipText = Item.Hint;
|
button.ToolTipText = Item.Hint;
|
||||||
button.Click += new EventHandler(button_Click);
|
button.Click += new EventHandler(button_Click);
|
||||||
button.Tag = Item;
|
button.Tag = Item;
|
||||||
|
Item.toolStripButton = button;
|
||||||
ToolStrip.Items.Add(button);
|
ToolStrip.Items.Add(button);
|
||||||
PascalABCCompiler.StringResources.SetTextForObject(button, "");
|
PascalABCCompiler.StringResources.SetTextForObject(button, "");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.bmp
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.bmp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.ico
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.png
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized1.ico
Normal file
BIN
VisualPlugins/TraningControlPlugin/IconAuthorized1.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
214
VisualPlugins/TraningControlPlugin/LoginForm.Designer.cs
generated
Normal file
214
VisualPlugins/TraningControlPlugin/LoginForm.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,214 @@
|
||||||
|
namespace DBAccessPluginNamespace
|
||||||
|
{
|
||||||
|
partial class LoginForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
|
||||||
|
this.groupNamesBox = new System.Windows.Forms.ComboBox();
|
||||||
|
this.usersNamesBox = new System.Windows.Forms.ComboBox();
|
||||||
|
this.labelGroup = new System.Windows.Forms.Label();
|
||||||
|
this.labelUser = new System.Windows.Forms.Label();
|
||||||
|
this.passwordBox = new System.Windows.Forms.TextBox();
|
||||||
|
this.labelPassword = new System.Windows.Forms.Label();
|
||||||
|
this.enterButton = new System.Windows.Forms.Button();
|
||||||
|
this.closeButton = new System.Windows.Forms.Button();
|
||||||
|
this.userImage = new System.Windows.Forms.PictureBox();
|
||||||
|
this.groupImage = new System.Windows.Forms.PictureBox();
|
||||||
|
this.PluginImage = new System.Windows.Forms.PictureBox();
|
||||||
|
this.PluginImageAuthorized = new System.Windows.Forms.PictureBox();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.userImage)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.groupImage)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.PluginImage)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.PluginImageAuthorized)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// groupNamesBox
|
||||||
|
//
|
||||||
|
this.groupNamesBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.groupNamesBox.FormattingEnabled = true;
|
||||||
|
this.groupNamesBox.Location = new System.Drawing.Point(114, 12);
|
||||||
|
this.groupNamesBox.Name = "groupNamesBox";
|
||||||
|
this.groupNamesBox.Size = new System.Drawing.Size(258, 21);
|
||||||
|
this.groupNamesBox.TabIndex = 1;
|
||||||
|
this.groupNamesBox.SelectedIndexChanged += new System.EventHandler(this.GroupNamesBox_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// usersNamesBox
|
||||||
|
//
|
||||||
|
this.usersNamesBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.usersNamesBox.FormattingEnabled = true;
|
||||||
|
this.usersNamesBox.Location = new System.Drawing.Point(114, 50);
|
||||||
|
this.usersNamesBox.Name = "usersNamesBox";
|
||||||
|
this.usersNamesBox.Size = new System.Drawing.Size(258, 21);
|
||||||
|
this.usersNamesBox.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// labelGroup
|
||||||
|
//
|
||||||
|
this.labelGroup.AutoSize = true;
|
||||||
|
this.labelGroup.Location = new System.Drawing.Point(63, 15);
|
||||||
|
this.labelGroup.Name = "labelGroup";
|
||||||
|
this.labelGroup.Size = new System.Drawing.Size(45, 13);
|
||||||
|
this.labelGroup.TabIndex = 3;
|
||||||
|
this.labelGroup.Text = "Группа:";
|
||||||
|
//
|
||||||
|
// labelUser
|
||||||
|
//
|
||||||
|
this.labelUser.AutoSize = true;
|
||||||
|
this.labelUser.Location = new System.Drawing.Point(25, 53);
|
||||||
|
this.labelUser.Name = "labelUser";
|
||||||
|
this.labelUser.Size = new System.Drawing.Size(83, 13);
|
||||||
|
this.labelUser.TabIndex = 4;
|
||||||
|
this.labelUser.Text = "Пользователь:";
|
||||||
|
//
|
||||||
|
// passwordBox
|
||||||
|
//
|
||||||
|
this.passwordBox.Location = new System.Drawing.Point(114, 92);
|
||||||
|
this.passwordBox.Name = "passwordBox";
|
||||||
|
this.passwordBox.Size = new System.Drawing.Size(258, 20);
|
||||||
|
this.passwordBox.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// labelPassword
|
||||||
|
//
|
||||||
|
this.labelPassword.AutoSize = true;
|
||||||
|
this.labelPassword.Location = new System.Drawing.Point(60, 95);
|
||||||
|
this.labelPassword.Name = "labelPassword";
|
||||||
|
this.labelPassword.Size = new System.Drawing.Size(48, 13);
|
||||||
|
this.labelPassword.TabIndex = 6;
|
||||||
|
this.labelPassword.Text = "Пароль:";
|
||||||
|
//
|
||||||
|
// enterButton
|
||||||
|
//
|
||||||
|
this.enterButton.Location = new System.Drawing.Point(87, 131);
|
||||||
|
this.enterButton.Name = "enterButton";
|
||||||
|
this.enterButton.Size = new System.Drawing.Size(118, 34);
|
||||||
|
this.enterButton.TabIndex = 8;
|
||||||
|
this.enterButton.Text = "Вход";
|
||||||
|
this.enterButton.UseVisualStyleBackColor = true;
|
||||||
|
this.enterButton.Click += new System.EventHandler(this.enterButton_Click);
|
||||||
|
//
|
||||||
|
// closeButton
|
||||||
|
//
|
||||||
|
this.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||||
|
this.closeButton.Location = new System.Drawing.Point(225, 131);
|
||||||
|
this.closeButton.Name = "closeButton";
|
||||||
|
this.closeButton.Size = new System.Drawing.Size(118, 34);
|
||||||
|
this.closeButton.TabIndex = 7;
|
||||||
|
this.closeButton.Text = "Закрыть";
|
||||||
|
this.closeButton.UseVisualStyleBackColor = true;
|
||||||
|
this.closeButton.Click += new System.EventHandler(this.cancelButton_Click);
|
||||||
|
//
|
||||||
|
// userImage
|
||||||
|
//
|
||||||
|
this.userImage.InitialImage = null;
|
||||||
|
this.userImage.Location = new System.Drawing.Point(378, 45);
|
||||||
|
this.userImage.Name = "userImage";
|
||||||
|
this.userImage.Size = new System.Drawing.Size(32, 32);
|
||||||
|
this.userImage.TabIndex = 10;
|
||||||
|
this.userImage.TabStop = false;
|
||||||
|
//
|
||||||
|
// groupImage
|
||||||
|
//
|
||||||
|
this.groupImage.InitialImage = null;
|
||||||
|
this.groupImage.Location = new System.Drawing.Point(378, 7);
|
||||||
|
this.groupImage.Name = "groupImage";
|
||||||
|
this.groupImage.Size = new System.Drawing.Size(32, 32);
|
||||||
|
this.groupImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||||
|
this.groupImage.TabIndex = 9;
|
||||||
|
this.groupImage.TabStop = false;
|
||||||
|
//
|
||||||
|
// PluginImage
|
||||||
|
//
|
||||||
|
this.PluginImage.BackColor = System.Drawing.Color.Magenta;
|
||||||
|
this.PluginImage.Image = ((System.Drawing.Image)(resources.GetObject("PluginImage.Image")));
|
||||||
|
this.PluginImage.Location = new System.Drawing.Point(379, 95);
|
||||||
|
this.PluginImage.Margin = new System.Windows.Forms.Padding(6);
|
||||||
|
this.PluginImage.Name = "PluginImage";
|
||||||
|
this.PluginImage.Size = new System.Drawing.Size(25, 26);
|
||||||
|
this.PluginImage.TabIndex = 11;
|
||||||
|
this.PluginImage.TabStop = false;
|
||||||
|
this.PluginImage.Visible = false;
|
||||||
|
//
|
||||||
|
// PluginImageAuthorized
|
||||||
|
//
|
||||||
|
this.PluginImageAuthorized.BackColor = System.Drawing.Color.Magenta;
|
||||||
|
this.PluginImageAuthorized.Image = ((System.Drawing.Image)(resources.GetObject("PluginImageAuthorized.Image")));
|
||||||
|
this.PluginImageAuthorized.InitialImage = null;
|
||||||
|
this.PluginImageAuthorized.Location = new System.Drawing.Point(379, 131);
|
||||||
|
this.PluginImageAuthorized.Name = "PluginImageAuthorized";
|
||||||
|
this.PluginImageAuthorized.Size = new System.Drawing.Size(25, 26);
|
||||||
|
this.PluginImageAuthorized.TabIndex = 12;
|
||||||
|
this.PluginImageAuthorized.TabStop = false;
|
||||||
|
this.PluginImageAuthorized.Visible = false;
|
||||||
|
//
|
||||||
|
// LoginForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.CancelButton = this.closeButton;
|
||||||
|
this.ClientSize = new System.Drawing.Size(422, 175);
|
||||||
|
this.Controls.Add(this.PluginImageAuthorized);
|
||||||
|
this.Controls.Add(this.PluginImage);
|
||||||
|
this.Controls.Add(this.userImage);
|
||||||
|
this.Controls.Add(this.groupImage);
|
||||||
|
this.Controls.Add(this.closeButton);
|
||||||
|
this.Controls.Add(this.enterButton);
|
||||||
|
this.Controls.Add(this.labelPassword);
|
||||||
|
this.Controls.Add(this.passwordBox);
|
||||||
|
this.Controls.Add(this.labelUser);
|
||||||
|
this.Controls.Add(this.labelGroup);
|
||||||
|
this.Controls.Add(this.usersNamesBox);
|
||||||
|
this.Controls.Add(this.groupNamesBox);
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.Name = "LoginForm";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "Авторизация";
|
||||||
|
this.Load += new System.EventHandler(this.LoginForm_Load);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.userImage)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.groupImage)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.PluginImage)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.PluginImageAuthorized)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.ComboBox groupNamesBox;
|
||||||
|
private System.Windows.Forms.ComboBox usersNamesBox;
|
||||||
|
private System.Windows.Forms.Label labelGroup;
|
||||||
|
private System.Windows.Forms.Label labelUser;
|
||||||
|
private System.Windows.Forms.TextBox passwordBox;
|
||||||
|
private System.Windows.Forms.Label labelPassword;
|
||||||
|
private System.Windows.Forms.Button enterButton;
|
||||||
|
private System.Windows.Forms.Button closeButton;
|
||||||
|
private System.Windows.Forms.PictureBox groupImage;
|
||||||
|
private System.Windows.Forms.PictureBox userImage;
|
||||||
|
public System.Windows.Forms.PictureBox PluginImage;
|
||||||
|
public System.Windows.Forms.PictureBox PluginImageAuthorized;
|
||||||
|
}
|
||||||
|
}
|
||||||
111
VisualPlugins/TraningControlPlugin/LoginForm.cs
Normal file
111
VisualPlugins/TraningControlPlugin/LoginForm.cs
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using VisualPascalABCPlugins;
|
||||||
|
|
||||||
|
namespace DBAccessPluginNamespace
|
||||||
|
{
|
||||||
|
public partial class LoginForm : Form
|
||||||
|
{
|
||||||
|
public SiteAccessProvider SiteProvider = null;
|
||||||
|
public VisualPascalABCPlugin_TeacherControlPlugin Plugin = null;
|
||||||
|
|
||||||
|
public LoginForm(VisualPascalABCPlugin_TeacherControlPlugin Plugin)
|
||||||
|
{
|
||||||
|
this.Plugin = Plugin;
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Authorized = false;
|
||||||
|
private async void enterButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (SiteProvider == null)
|
||||||
|
throw new Exception("Error in Login form! Site credentials cannot be empty!");
|
||||||
|
|
||||||
|
if (!Authorized)
|
||||||
|
{
|
||||||
|
var answer = await SiteProvider.Login("", usersNamesBox.Text, passwordBox.Text);
|
||||||
|
if(answer == "Success")
|
||||||
|
{
|
||||||
|
//DialogResult = DialogResult.OK;
|
||||||
|
//Close();
|
||||||
|
Text = "Авторизация: вход выполнен";
|
||||||
|
passwordBox.Text = "";
|
||||||
|
enterButton.Text = "Выход";
|
||||||
|
passwordBox.Visible = false;
|
||||||
|
labelPassword.Visible = false;
|
||||||
|
groupNamesBox.Enabled = false;
|
||||||
|
usersNamesBox.Enabled = false;
|
||||||
|
Authorized = true;
|
||||||
|
Plugin.toolStripButton.ToolTipText = "Авторизация выполнена: " + SiteProvider.FullFIO;
|
||||||
|
Plugin.toolStripButton.Image = PluginImageAuthorized.Image;
|
||||||
|
Plugin.menuItem.Image = PluginImageAuthorized.Image;
|
||||||
|
this.Icon = VisualPascalABCPlugins.Properties.Resources.IconAuthorized;
|
||||||
|
closeButton.Focus();
|
||||||
|
}
|
||||||
|
else MessageBox.Show(answer,"Ошибка");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SiteProvider.Logout();
|
||||||
|
Text = "Авторизация";
|
||||||
|
passwordBox.Text = "";
|
||||||
|
enterButton.Text = "Вход";
|
||||||
|
groupNamesBox.SelectedIndex = -1;
|
||||||
|
usersNamesBox.Items.Clear();
|
||||||
|
usersNamesBox.SelectedIndex = -1;
|
||||||
|
groupNamesBox.Enabled = true;
|
||||||
|
usersNamesBox.Enabled = true;
|
||||||
|
passwordBox.Visible = true;
|
||||||
|
labelPassword.Visible = true;
|
||||||
|
Authorized = false;
|
||||||
|
Plugin.toolStripButton.ToolTipText = "Авторизация: вход не выполнен";
|
||||||
|
Plugin.toolStripButton.Image = PluginImage.Image;
|
||||||
|
Plugin.menuItem.Image = PluginImage.Image;
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void LoginForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Получить список групп и заполнить выпадающий список значениями
|
||||||
|
if (SiteProvider == null)
|
||||||
|
throw new Exception("Error in Login form! Site credentials cannot be empty!");
|
||||||
|
if (groupNamesBox.Items.Count > 0) // Группы уже загружены
|
||||||
|
return;
|
||||||
|
//groupImage.Image = Properties.Resources.LoadingImg;
|
||||||
|
var groups = await SiteProvider.GetGroupsNames();
|
||||||
|
groupNamesBox.Items.Clear();
|
||||||
|
groupNamesBox.Items.AddRange(groups.Split(';').Where(Item => Item != "").ToArray());
|
||||||
|
//groupImage.Image = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void GroupNamesBox_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Получить список участников группы
|
||||||
|
if (groupNamesBox.Text == "") return;
|
||||||
|
|
||||||
|
if (SiteProvider == null)
|
||||||
|
throw new Exception("Error in Login form! Site credentials cannot be empty!");
|
||||||
|
//userImage.Image = Properties.Resources.LoadingImg;
|
||||||
|
var users = await SiteProvider.GetUsersNames(groupNamesBox.Text);
|
||||||
|
usersNamesBox.Items.Clear();
|
||||||
|
usersNamesBox.Items.AddRange(users.Split(';').Where(Item => Item != "").ToArray());
|
||||||
|
//userImage.Image = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cancelButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
passwordBox.Text = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
347
VisualPlugins/TraningControlPlugin/LoginForm.resx
Normal file
347
VisualPlugins/TraningControlPlugin/LoginForm.resx
Normal file
|
|
@ -0,0 +1,347 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="PluginImage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
Qk02DAAAAAAAADYAAAAoAAAAIAAAACAAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wD/d3Z2
|
||||||
|
RUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUNDRUND
|
||||||
|
RUNDRUNDUlBQeXh4/wD//wD//wD//wD//wD//wD//wD/W1paR0VFWVdXW1paW1paW1paW1paW1paW1pa
|
||||||
|
W1paW1paW1paW1paW1paW1paW1paWlhYSkhIRUNDRUNDRkREUU9PWFdXU1FRR0VFSUdHdXNz/wD//wD/
|
||||||
|
/wD//wD//wD/W1paWFdX09HR5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bm5+bmu7q6
|
||||||
|
U1FRRUNDaGZmrq2t19fX4ODg2tnZsbGxa2lpRkREY2Fh/wD//wD//wD//wD/W1paW1pa5+bm////////
|
||||||
|
////////////////////////////////////////7OzscnFxRkREgH9/5OTk/v7+1dXViYeH1dXV/v7+
|
||||||
|
5+bmhIKCRkREdXNz/wD//wD//wD/W1paW1pa5+bm////////////////////////////////////////
|
||||||
|
////////s7OzSEdHaGZm5eTk////////pKOjRUNDpKOj////////5+fna2lpSUdH/wD//wD//wD/XVxc
|
||||||
|
WVdX5OPj////////////////////////////////////////////9/f3fHt7R0VFrq2t/v7+////////
|
||||||
|
oaCgRUNDoaCg/////////v7+sbGxR0VFf35+/wD//wD/ZmRkUlBQ2tnZ////////////////////////
|
||||||
|
////////////////////7OzsYmBgUU9P19fX1dXVpKOjoaCgcnFxRUNDcnFxoaCgpKOj1dXV2dnZUlFR
|
||||||
|
ZGJi/wD//wD/fHp6SEZGvby8////////////////////////////////////////////5+bmW1paWFdX
|
||||||
|
4ODgiYeHRUNDRUNDRUNDRUNDRUNDRUNDRUNDiYeH4uLiWlhYXVtb/wD//wD/pqWlRkREi4qK+/n5////
|
||||||
|
////////////////////////////////////6+vrYV9fUlBQ2NjY1dXVpKOjoaCgcnFxRUNDcnFxoaCg
|
||||||
|
pKOj1dXV2dnZUlFRZGJi/wD//wD//wD/VVNTWFdX2tra////////////////////////////////////
|
||||||
|
////9/f3e3p6R0VFrq2t/v7+////////oaCgRUNDoaCg/////////v7+sbGxR0VFf35+/wD//wD//wD/
|
||||||
|
iYiIRUNDiomJ9fX1////////////////////////////////////////s7KySUdHaGdn5eXl////////
|
||||||
|
pKOjRUNDpKOj////////5+bmamhoSUdH/wD//wD//wD//wD//wD/W1lZTEpKrKys+/v7////////////
|
||||||
|
////////////////////////7ezscXBwRkREgX9/5eXl/v7+1dXViYeH1dXV/v7+5+bmg4GBRkREdXNz
|
||||||
|
/wD//wD//wD//wD//wD/tLOzTkxMUU9PrKys9fX1/////////v7+9PT06enp6enp9PT0/v7+/v7+0tHR
|
||||||
|
Xl1dRkREaGdnsbGx2tra4uHh2trasrGxa2lpRkREY2Fh/wD//wD//wD//wD//wD//wD//wD/p6WlTkxM
|
||||||
|
TEpKiomJ2dnZ5OTkp6amcnBwXVxcXVxccnBwp6am5OTk2trac3FxRUNDRUNDR0VFU1JSWlhYU1FRR0VF
|
||||||
|
SUdHdXNz/wD//wD//wD//wD//wD//wD//wD//wD//wD/tbS0XFpaRUNDWFZWYF5eR0VFSEZGVlRUVlRU
|
||||||
|
SEZGRkREYF5eWFZWRUNDXFtbl5aW/wD/ZGNjXVtbZGJif35+/wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD/cG5uRUNDR0VFb21turm5397e397eurm5cG5uR0VFRUNDb21t/wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/YmBgSEZGjYyM
|
||||||
|
6urq/v7+////////////6urqjYyMSEZGYmBg/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD/hYSERkREgYCA7+/v////////////////////////7+/vgYCA
|
||||||
|
RkREhoSE/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
TkxMXlxc3Nzc////////////////////////////////3NzcXlxcTkxM/wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/hIODRkREoaCg/f39////////////////////
|
||||||
|
/////////////f39oaCgRkREhYSE/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD/W1lZV1VV3Nzc////////////////////////////////////////3dzcVlRUW1lZ/wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/xcXFSkhIdnV19vb2////////
|
||||||
|
////////////////////////////////9vb2d3V1SkhIxcTE/wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD/rKurRUNDk5KS/f39////////////////////////////////////////
|
||||||
|
/f39k5KSRUNDrKur/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/o6KiRUND
|
||||||
|
n52d////////////////////////////////////////////////n56eRUNDo6Ki/wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/rq2tRUNDkpCQ/f39////////////////////////
|
||||||
|
/////////////////f39kY+PRUNDrq2t/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD/S0lJb21t8/Ly////////////////////////////////////////8/Lyb21tS0lJ/wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/ZGJiTUtLxcXF////////
|
||||||
|
////////////////////////////////xcXFTUtLZGJi/wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD/o6KiR0VFbm1t5eTk////////////////////////////////5OTk
|
||||||
|
bm1tR0VFo6Ki/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
c3JyRkREeXd329vb/f39/////////////////f393NvbeXd3RkREc3Jy/wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/a2lpRkREXVxcnpyc0NDQ4+Pj4+Pj
|
||||||
|
0dDQn56eXlxcRkREbGpq/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD/hYSETkxMRUNDTkxMWFdXWFdXTkxMRURETkxMhoWF/wD//wD//wD//wD/
|
||||||
|
/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
jYyMYF5eSUdHSUdHYF5ejIuL/wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD//wD/
|
||||||
|
/wD//wD/
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="PluginImageAuthorized.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
Qk02EAAAAAAAADYAAAAoAAAAIAAAACAAAAABACAAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAAPz8/EERD
|
||||||
|
Q7lFQ0P+RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VD
|
||||||
|
Q/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUJC7ERDQ7ZGQ0Ni/wD///8A////AP///wD///8A
|
||||||
|
//9HPz8gREND30VDQ/tFQ0PjREND30RDQ99EQ0PfREND30RDQ99EQ0PfREND30RDQ99EQ0PfREND30RD
|
||||||
|
Q99EQ0PfREND30VCQuFFQ0P3RUND/0VDQ/9EQkL8REJC7URDQ+NFQ0PrRUND+0RCQvhFQkK8REREOP8A
|
||||||
|
////AP///wD//0c/PyBEQ0PfREND40LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/RUJCXERCQupEQkL9RUJCzkVDQ25CyFP/QshT/0LIU/9DQ0NpRUJCykRC
|
||||||
|
QvxFQ0PVREREOP8A////AP//Rz8/IERDQ99EQ0PfQshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9FQ0PAREJC/EVDQ61CyFP/QshT/0LIU/9FQkKhQshT/0LI
|
||||||
|
U/9CyFP/RUJCqERCQvxFQkK8RUVFFv8A//9HPz8gREND30RDQ99CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/Q0NDZkRDQ/lFQkLOQshT/0LIU/9CyFP/RUNDfEVD
|
||||||
|
Q/5FQ0N8QshT/0LIU/9CyFP/RUJCykRCQvhERERh/wD//0ZGRh1EQ0PcREJC4kLIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9EQ0OyRUND+0VDQ25CyFP/QshT/0LI
|
||||||
|
U/9FQ0OARUND/0VDQ4BCyFP/QshT/0LIU/9DQ0NpRUND+0RDQ67/AP//SDw8FURCQtBFQkLsQshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0VCQtZEQkLtQshT/0LI
|
||||||
|
U/9FQ0N8RUNDgEVDQ8BFQ0P/RUNDwEVDQ4BFQ0N8QshT/0LIU/9EQ0PrREJC0/8A////AP//REFBskVD
|
||||||
|
Q/pEQUFZQshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/REND30RD
|
||||||
|
Q+NCyFP/RUJCoUVDQ/5FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/5FQkKhQshT/0VCQuFFQkLd/wD///8A
|
||||||
|
//9FQ0N5RUND/UVDQ55CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9EQkLXRUJC7ELIU/9CyFP/RUNDfEVDQ4BFQ0PARUND/0VDQ8BFQ0OARUNDfELIU/9CyFP/REND60RC
|
||||||
|
QtP/AP///wD//0RERDRFQ0PoREND40LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0RCQrNFQ0P7Q0FBbULIU/9CyFP/QshT/0VDQ4BFQ0P/RUNDgELIU/9CyFP/QshT/0ND
|
||||||
|
Q2lFQ0P7RENDrv8A////AP///wD//0RCQqBEQkL9RENDn0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/RUJCZ0VDQ/lEQ0PNQshT/0LIU/9CyFP/RUNDfEVDQ/5FQ0N8QshT/0LI
|
||||||
|
U/9CyFP/RUJCy0RCQvhEQUFh/wD///8A////AP//RkFBM0RCQt9EQkL0REREcELIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/RENDwURCQvxFQkKsQshT/0LIU/9CyFP/RUJCoULI
|
||||||
|
U/9CyFP/QshT/0VCQqlEQkL8RUJCvP8A////AP///wD///8A////AP//REFBZURCQvFEQkLtREREcELI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/REND20RCQvxEQ0PNQ0NDaULI
|
||||||
|
U/9CyFP/QshT/0ZDQ2lFQkLKREJC/EVDQ9VEREQ4/wD///8A////AP///wD///8A////AP//RkFBeERC
|
||||||
|
QvFEQkL0RENDn0LIU/9CyFP/REJCd0VCQsBEQ0PcREND3EVCQsBEQkJ3QshT/0LIU/9FQkK/RUND/0VD
|
||||||
|
Q/9FQ0P7REND6kVCQuFFQ0PrRUND+0RCQvhFQkK8REREOP8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP//REJCZERCQt5EQkL9RUND5EVCQtlFQ0P7REJC+UVDQ+dFQ0PnREJC+URCQvxFQkLZRUND5ERC
|
||||||
|
Qv1EQ0PeREJCjURDQ65EQ0PTRUJC3URCQtNEQ0OuREFBYf8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD//0VCQsNFQ0P/RUND+0RCQsREQUFdQshT/0LIU/9EQUFdRUJCw0VD
|
||||||
|
Q/tFQ0P/REJCxP8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP//RUJC1kVDQ/pFQ0ObQshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/RUNDm0VDQ/pFQkLW/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD//0VDQ6ZEQkL8RENDq0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/RENDq0RCQvxFQkKl/wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A//9DQ0NLREJC8UVDQ9xCyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/RUND3ERCQvFDQ0NL/wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD//0RDQ6dEQkL8REJCf0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9EQkJ/REJC/EVDQ6b/AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//9EREQlRUND4EVC
|
||||||
|
QuVCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9EQkLmRUND4P8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD//0RE
|
||||||
|
RE5FQ0P3RENDukLIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0VD
|
||||||
|
Q7pFQ0P3REFBTv8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP//REJCcEVDQ/5FQ0OTQshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/RUNDk0VDQ/5EQkJw/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A//9FQ0N9RUND/0ZCQoNCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9GRESDRUND/0VDQ33/AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD//0VDQ25FQ0P+RkJClULIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0VCQpZFQ0P+RUNDbv8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP//RkNDSERCQvVEQkLEQshT/0LIU/9CyFP/QshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/REJCxERCQvVGQ0NI/wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A//9IPz8cREJC00RCQvJEREROQshT/0LI
|
||||||
|
U/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0RERE5EQkLyREJC0/8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//9DQUF8RUND+0RD
|
||||||
|
Q8VCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/RENDxUVDQ/tDQUF8/wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD//0JC
|
||||||
|
QhtEQ0O+REJC/EVCQrdCyFP/QshT/0LIU/9CyFP/QshT/0LIU/9CyFP/QshT/0VCQrdEQkL8RENDvv8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD//0dCQjJFQkLKREJC/ERDQ9xFQUGEQshT/0LIU/9CyFP/QshT/0ZERINFQ0PcREJC/EVD
|
||||||
|
Q8lCQkIy/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD//0RERClDQkKlREJC8URCQv1EQkLxREND40RDQ+NEQkLxREND/URC
|
||||||
|
QvFFQ0OlREREKf8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD///8A////AP///wD///8A////AP///wD///8A//9GQ0NIRUNDm0VCQtlEQkL4REJC+EVC
|
||||||
|
QtlEQ0OcRUJCSf8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A
|
||||||
|
////AP///wD//w==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
AAABAAIAICAAAAEAIACoEAAAJgAAABAQAAABACAAaAQAAM4QAAAoAAAAIAAAAEAAAAABACAAAAAAAIAQ
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAPz8/EERDQ7lFQ0P+RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VD
|
||||||
|
Q/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUND/0VDQ/9FQ0P/RUJC7ERD
|
||||||
|
Q7ZGQ0NiRUVFFgAAAAAAAAAAAAAAAAAAAABHPz8gREND30VDQ/tFQ0PjREND30RDQ99EQ0PfREND30RD
|
||||||
|
Q99EQ0PfREND30RDQ99EQ0PfREND30RDQ99EQ0PfREND30VCQuFFQ0P3RUND/0VDQ/9EQkL8REJC7URD
|
||||||
|
Q+NFQ0PrRUND+0RCQvhFQkK8REREOAAAAAIAAAAAAAAAAEc/PyBEQ0PfREND40g/PzxHPz8gRz8/IEc/
|
||||||
|
PyBHPz8gRz8/IEc/PyBHPz8gRz8/IEc/PyBHPz8gRz8/IEc/PyBHPz8gRUJCXERCQupEQkL9RUJCzkVD
|
||||||
|
Q25DQ0M1REREKUdCQjJDQ0NpRUJCykRCQvxFQ0PVREREOAAAAAAAAAAARz8/IERDQ99EQ0PfRz8/IAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/PxhFQ0PAREJC/EVD
|
||||||
|
Q61BQUEjAAAAAURERDhFQkKhREREOAAAAAFHPz8gRUJCqERCQvxFQkK8RUVFFgAAAABHPz8gREND30RD
|
||||||
|
Q99HPz8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0NDZkRD
|
||||||
|
Q/lFQkLOSEFBIwAAAAAAAAAARUNDfEVDQ/5FQ0N8AAAAAAAAAABHR0cgRUJCykRCQvhERERhAAAAAEZG
|
||||||
|
Rh1EQ0PcREJC4kY/PyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4
|
||||||
|
OAlEQ0OyRUND+0VDQ24AAAABAAAAAAAAAABFQ0OARUND/0VDQ4AAAAAAAAAAAAAAAAFDQ0NpRUND+0RD
|
||||||
|
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
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// Этот код создан программой.
|
// Этот код создан программой.
|
||||||
// Исполняемая версия:4.0.30319.1
|
// Исполняемая версия:4.0.30319.42000
|
||||||
//
|
//
|
||||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||||
// повторной генерации кода.
|
// повторной генерации кода.
|
||||||
|
|
@ -19,7 +19,7 @@ namespace VisualPascalABCPlugins.Properties {
|
||||||
// с помощью такого средства, как ResGen или Visual Studio.
|
// с помощью такого средства, как ResGen или Visual Studio.
|
||||||
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
||||||
// с параметром /str или перестройте свой проект VS.
|
// с параметром /str или перестройте свой проект VS.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
internal class Resources {
|
||||||
|
|
@ -59,5 +59,15 @@ namespace VisualPascalABCPlugins.Properties {
|
||||||
resourceCulture = value;
|
resourceCulture = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Поиск локализованного ресурса типа System.Drawing.Icon, аналогичного (Значок).
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Icon IconAuthorized {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("IconAuthorized", resourceCulture);
|
||||||
|
return ((System.Drawing.Icon)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,9 +112,13 @@
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="IconAuthorized" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\IconAuthorized.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
207
VisualPlugins/TraningControlPlugin/SiteAccessInfo.cs
Normal file
207
VisualPlugins/TraningControlPlugin/SiteAccessInfo.cs
Normal file
|
|
@ -0,0 +1,207 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DBAccessPluginNamespace
|
||||||
|
{
|
||||||
|
public enum UserTypeEnum {None, Student, Teacher, Admin };
|
||||||
|
|
||||||
|
// Информация о пользователе для доступа к сайту, а также для работы с сайтом
|
||||||
|
// Это можно сохранять между запусками программы
|
||||||
|
public class SiteAccessProvider
|
||||||
|
{
|
||||||
|
// Данные о пользователе
|
||||||
|
public string ShortFIO { get; set; } = "";
|
||||||
|
public string FullFIO { get; set; } = "";
|
||||||
|
public string Password { get; set; } = "";
|
||||||
|
public string Group { get; set; } = "";
|
||||||
|
public UserTypeEnum UserType { get; set; } = UserTypeEnum.None;
|
||||||
|
|
||||||
|
// Базовый адрес папки со скриптами (адрес сервера)
|
||||||
|
public string ServAddr = "";
|
||||||
|
|
||||||
|
// Клиент для обработки запросов http
|
||||||
|
private HttpClient client = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Запрос на добавление информации об активности в БДИм
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="TaskName">Имя задания</param>
|
||||||
|
/// <param name="LessonName">Имя урока</param>
|
||||||
|
/// <param name="TypeString">Тип записи - например, выполнено или нет задание</param>
|
||||||
|
/// <param name="ContentInfo">Дополнительные данные - например, текст программы</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
async public Task<string> SendPostRequest(string TaskName, string LessonName, string TypeString, string ContentInfo)
|
||||||
|
{
|
||||||
|
// Если не выполнен вход, то выход с ошибкой
|
||||||
|
if (UserType == UserTypeEnum.None) return "Error";
|
||||||
|
|
||||||
|
// Если не выполнен вход, то выход с ошибкой
|
||||||
|
if (UserType != UserTypeEnum.Student) return "Cannot write activity, because you're teacher!";
|
||||||
|
|
||||||
|
// Если клиент ещё не создан был, пересоздаём
|
||||||
|
if (client == null) client = new HttpClient();
|
||||||
|
// Словарик для параметров запроса
|
||||||
|
var values = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
//`id`, `pupilId`, `taskName`, `lessonName`, `type`, `content`, `time`, `IP`
|
||||||
|
{ "shortFIO", ShortFIO }, // shortFIO или FIO, и они должны совпадать с такими же в базе
|
||||||
|
{"FIO", FullFIO },
|
||||||
|
{ "taskName", TaskName },
|
||||||
|
{ "lessonName", LessonName },
|
||||||
|
{ "type", TypeString },
|
||||||
|
{ "content", ContentInfo },
|
||||||
|
{ "password", Password }
|
||||||
|
};
|
||||||
|
// Отправка запроса на сервер
|
||||||
|
var content = new FormUrlEncodedContent(values);
|
||||||
|
var response = await client.PostAsync(ServAddr + "//add.php", content);
|
||||||
|
return await response.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
ShortFIO = "";
|
||||||
|
FullFIO = "";
|
||||||
|
Password = "";
|
||||||
|
Group = "";
|
||||||
|
UserType = UserTypeEnum.None;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получение начальной информации (начальная страница)
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
async public Task<string> GetContents()
|
||||||
|
{
|
||||||
|
// Если клиент ещё не создан был, пересоздаём
|
||||||
|
if (client == null) client = new HttpClient();
|
||||||
|
// Тут не столь важно что отправлять, можно и пустой список параметров
|
||||||
|
var values = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
{ "password", "123" },
|
||||||
|
};
|
||||||
|
|
||||||
|
var content = new FormUrlEncodedContent(values);
|
||||||
|
var response = await client.PostAsync(ServAddr + "/index.php", content);
|
||||||
|
return await response.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Получить из БД список групп
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
async public Task<string> GetGroupsNames(string ServerAddr = "")
|
||||||
|
{
|
||||||
|
// Этот метод может быть вызван без предварительного входа
|
||||||
|
if (ServerAddr != "")
|
||||||
|
ServAddr = ServerAddr;
|
||||||
|
if (ServAddr == "") return "Error";
|
||||||
|
|
||||||
|
// Если клиент ещё не создан был, пересоздаём
|
||||||
|
if (client == null) client = new HttpClient();
|
||||||
|
var values = new Dictionary<string, string>();
|
||||||
|
var content = new FormUrlEncodedContent(values);
|
||||||
|
var response = await client.PostAsync(ServAddr + "/groupslist.php", content);
|
||||||
|
return await response.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получить из БД список учеников определенной группы
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
async public Task<string> GetUsersNames(string GroupName, string ServerAddr = "")
|
||||||
|
{
|
||||||
|
// Этот метод может быть вызван без предварительного входа
|
||||||
|
if (ServerAddr != "" || GroupName == "")
|
||||||
|
ServAddr = ServerAddr;
|
||||||
|
if (ServAddr == "") return "Error";
|
||||||
|
// Если клиент ещё не создан был, пересоздаём
|
||||||
|
if (client == null) client = new HttpClient();
|
||||||
|
Group = GroupName;
|
||||||
|
var values = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
//`id`, `pupilId`, `taskName`, `lessonName`, `type`, `content`, `time`, `IP`
|
||||||
|
{ "userGroup", Group } // shortFIO или FIO, и они должны совпадать с такими же в базе
|
||||||
|
};
|
||||||
|
|
||||||
|
var content = new FormUrlEncodedContent(values);
|
||||||
|
var response = await client.PostAsync(ServAddr + "/userslist.php", content);
|
||||||
|
return await response.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
async public Task<string> Login(string shortFIO, string fullFIO, string password, string ServerAddr = "")
|
||||||
|
{
|
||||||
|
// Если передана строка адреса - то и хорошо, а если нет, то используем предыдущее значение
|
||||||
|
Clear();
|
||||||
|
if (ServerAddr != "")
|
||||||
|
ServAddr = ServerAddr;
|
||||||
|
if (ServAddr == "" && ServerAddr == "") return "Error";
|
||||||
|
|
||||||
|
if (shortFIO == "" && fullFIO == "") return "Error";
|
||||||
|
ShortFIO = shortFIO;
|
||||||
|
FullFIO = fullFIO;
|
||||||
|
Password = password;
|
||||||
|
if (client == null) client = new HttpClient();
|
||||||
|
|
||||||
|
// Словарик для параметров запроса
|
||||||
|
var values = new Dictionary<string, string>
|
||||||
|
{
|
||||||
|
//`id`, `pupilId`, `taskName`, `lessonName`, `type`, `content`, `time`, `IP`
|
||||||
|
{ "shortFIO", ShortFIO }, // shortFIO или FIO, и они должны совпадать с такими же в базе
|
||||||
|
{ "FIO", FullFIO },
|
||||||
|
{ "password", Password}
|
||||||
|
};
|
||||||
|
// Отправка запроса на сервер
|
||||||
|
var content = new FormUrlEncodedContent(values);
|
||||||
|
var response = await client.PostAsync(ServAddr + "/login.php", content);
|
||||||
|
string responseText = await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
// Разобрать ответ от сервера - как пары key:value;
|
||||||
|
// Это сложно, т.к. тут могут быть сообщения об ошибках
|
||||||
|
|
||||||
|
|
||||||
|
//return responseText;
|
||||||
|
var pieces = responseText.Split(';');
|
||||||
|
|
||||||
|
// Сбрасываем тип пользователя, по нему и будем проверять успешность ответа
|
||||||
|
// В сообщениях об ошибках его не должно быть
|
||||||
|
|
||||||
|
foreach(var s in pieces)
|
||||||
|
{
|
||||||
|
if (s.IndexOf(':') < 1) continue;
|
||||||
|
var pair = s.Split(':');
|
||||||
|
switch(pair[0])
|
||||||
|
{
|
||||||
|
case "FIO" : FullFIO = pair[1]; break;
|
||||||
|
case "ShortFIO": ShortFIO = pair[1]; break;
|
||||||
|
case "type" : {
|
||||||
|
if (pair[1] == "prepod") UserType = UserTypeEnum.Teacher;
|
||||||
|
else if (pair[1] == "student") UserType = UserTypeEnum.Student;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(UserType == UserTypeEnum.None)
|
||||||
|
{
|
||||||
|
Clear();
|
||||||
|
return responseText;
|
||||||
|
}
|
||||||
|
return "Success";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Так как мы на сервере пока ничего не запоминаем, то процесс выхода - просто стереть всё
|
||||||
|
public void Logout()
|
||||||
|
{
|
||||||
|
// Данные о пользователе
|
||||||
|
Clear();
|
||||||
|
|
||||||
|
if (client != null)
|
||||||
|
client.Dispose();
|
||||||
|
client = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,43 +5,24 @@ using System.Text;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using PascalABCCompiler.SyntaxTreeConverters;
|
using PascalABCCompiler.SyntaxTreeConverters;
|
||||||
using PascalABCCompiler.SyntaxTree;
|
using PascalABCCompiler.SyntaxTree;
|
||||||
|
using DBAccessPluginNamespace;
|
||||||
|
|
||||||
namespace VisualPascalABCPlugins
|
namespace VisualPascalABCPlugins
|
||||||
{
|
{
|
||||||
/*public class TeacherContolConverter: ISyntaxTreeConverter
|
|
||||||
{
|
|
||||||
public string Name { get => "TeacherContolConverter"; }
|
|
||||||
public syntax_tree_node Convert(syntax_tree_node root)
|
|
||||||
{
|
|
||||||
var program = root as program_module;
|
|
||||||
if (program == null) // если это не главная программа, то не преобразовывать
|
|
||||||
return root;
|
|
||||||
var FileName = program.file_name;
|
|
||||||
var fi = new System.IO.FileInfo(FileName);
|
|
||||||
var SourceFileDirectory = fi.DirectoryName;
|
|
||||||
|
|
||||||
var FullLightPTName = System.IO.Path.Combine(SourceFileDirectory, "lightpt.dat");
|
|
||||||
if (!System.IO.File.Exists(FullLightPTName))
|
|
||||||
return root;
|
|
||||||
|
|
||||||
if (program.used_units == null)
|
|
||||||
program.used_units = new uses_list();
|
|
||||||
program.used_units.Add(new unit_or_namespace("LightPT", null));
|
|
||||||
program.used_units.Add(new unit_or_namespace("Tasks", null));
|
|
||||||
return root;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//имя класса *_VisualPascalABCPlugin
|
//имя класса *_VisualPascalABCPlugin
|
||||||
public class VisualPascalABCPlugin_TeacherControlPlugin : IVisualPascalABCPlugin
|
public class VisualPascalABCPlugin_TeacherControlPlugin : IVisualPascalABCPlugin
|
||||||
{
|
{
|
||||||
private const string LabelEntered = "Личный кабинет: ";
|
private const string LabelEntered = "Авторизация: ";
|
||||||
private const string LabelNotEntered = "Личный кабинет: вход не выполнен";
|
private const string LabelNotEntered = "Авторизация: вход не выполнен";
|
||||||
public static string StringsPrefix = "VPP_REGISTER_AND_CONTROL_PLUGIN_";
|
public static string StringsPrefix = "VPP_REGISTER_AND_CONTROL_PLUGIN_";
|
||||||
IVisualEnvironmentCompiler VisualEnvironmentCompiler;
|
IVisualEnvironmentCompiler VisualEnvironmentCompiler;
|
||||||
|
|
||||||
IWorkbench Workbench;
|
IWorkbench Workbench;
|
||||||
private TeacherControlForm RegisterForm = new TeacherControlForm();
|
//private TeacherControlForm RegisterForm = new TeacherControlForm(); // старая форма авторизации
|
||||||
|
//private LoginForm RegisterFormNew = new LoginForm(); // новая форма авторизации
|
||||||
|
// User
|
||||||
|
SiteAccessProvider User = new SiteAccessProvider();
|
||||||
|
|
||||||
private PluginGUIItem Item;
|
private PluginGUIItem Item;
|
||||||
public string Name { get => "Teacher Control Plugin"; }
|
public string Name { get => "Teacher Control Plugin"; }
|
||||||
public string Version { get => "0.1"; }
|
public string Version { get => "0.1"; }
|
||||||
|
|
@ -49,27 +30,53 @@ namespace VisualPascalABCPlugins
|
||||||
|
|
||||||
public string Login = null;
|
public string Login = null;
|
||||||
public string Password = null;
|
public string Password = null;
|
||||||
public void Execute()
|
|
||||||
{
|
public LoginForm loginForm;
|
||||||
var dr = RegisterForm.ShowDialog();
|
|
||||||
if (RegisterForm.Registered)
|
bool firstTime = true;
|
||||||
Item.Hint = LabelEntered + RegisterForm.Login;
|
public ToolStripMenuItem menuItem = null;
|
||||||
else Item.Hint = LabelNotEntered;
|
public ToolStripButton toolStripButton = null;
|
||||||
}
|
|
||||||
|
|
||||||
public VisualPascalABCPlugin_TeacherControlPlugin(IWorkbench Workbench)
|
public VisualPascalABCPlugin_TeacherControlPlugin(IWorkbench Workbench)
|
||||||
{
|
{
|
||||||
|
loginForm = new LoginForm(this);
|
||||||
this.Workbench = Workbench;
|
this.Workbench = Workbench;
|
||||||
VisualEnvironmentCompiler = Workbench.VisualEnvironmentCompiler;
|
VisualEnvironmentCompiler = Workbench.VisualEnvironmentCompiler;
|
||||||
RegisterForm.VisualEnvironmentCompiler = VisualEnvironmentCompiler;
|
//var tbitem = Workbench.MainForm.Controls.Find("", true);
|
||||||
|
// RegisterForm.VisualEnvironmentCompiler = VisualEnvironmentCompiler; // Пока форма регистрации никак не связана с компилятором
|
||||||
|
|
||||||
// Регистрация обработчика
|
// Регистрация обработчика
|
||||||
this.Workbench.ServiceContainer.RunService.Starting += RunStartingHandler;
|
this.Workbench.ServiceContainer.RunService.Starting += RunStartingHandler;
|
||||||
//Workbench.ServiceContainer.BuildService.BeforeCompile += BeforeCompileHandler;
|
//Workbench.ServiceContainer.BuildService.BeforeCompile += BeforeCompileHandler;
|
||||||
}
|
}
|
||||||
|
public void Execute()
|
||||||
|
{
|
||||||
|
if (firstTime)
|
||||||
|
{
|
||||||
|
firstTime = false;
|
||||||
|
menuItem = (ToolStripMenuItem)Item.menuItem;
|
||||||
|
toolStripButton = (ToolStripButton)Item.toolStripButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
User.ServAddr = "https://air.mmcs.sfedu.ru/pascalabc";
|
||||||
|
loginForm.SiteProvider = User;
|
||||||
|
|
||||||
|
loginForm.ShowDialog(); // OK никогда не будет
|
||||||
|
/*if (loginForm.Authorized)
|
||||||
|
{
|
||||||
|
toolStripButton.ToolTipText = "Авторизация выполнена";
|
||||||
|
toolStripButton.Image = loginForm.PluginImageAuthorized.Image;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
toolStripButton.ToolTipText = "Авторизация: вход не выполнен";
|
||||||
|
toolStripButton.Image = loginForm.PluginImage.Image;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
public void GetGUI(List<IPluginGUIItem> MenuItems, List<IPluginGUIItem> ToolBarItems)
|
public void GetGUI(List<IPluginGUIItem> MenuItems, List<IPluginGUIItem> ToolBarItems)
|
||||||
{
|
{
|
||||||
Item = new PluginGUIItem(StringsPrefix + "NAME", StringsPrefix + "DESCRIPTION", RegisterForm.PluginImage.Image, RegisterForm.PluginImage.BackColor, Execute);
|
Item = new PluginGUIItem(StringsPrefix + "NAME", StringsPrefix + "DESCRIPTION", loginForm.PluginImage.Image, loginForm.PluginImage.BackColor, Execute);
|
||||||
MenuItems.Add(Item);
|
MenuItems.Add(Item);
|
||||||
ToolBarItems.Add(Item);
|
ToolBarItems.Add(Item);
|
||||||
}
|
}
|
||||||
|
|
@ -99,10 +106,10 @@ namespace VisualPascalABCPlugins
|
||||||
private void RunStartingHandler(string filename)
|
private void RunStartingHandler(string filename)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (RegisterForm.Registered)
|
/*if (RegisterForm.Registered)
|
||||||
{
|
{
|
||||||
System.IO.File.AppendAllText("d:\\runs.txt", filename + " " + DateTime.Now + '\n');
|
System.IO.File.AppendAllText("d:\\runs.txt", filename + " " + DateTime.Now + '\n');
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="12.0">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
|
@ -15,7 +15,7 @@
|
||||||
<OldToolsVersion>4.0</OldToolsVersion>
|
<OldToolsVersion>4.0</OldToolsVersion>
|
||||||
<UpgradeBackupLocation>
|
<UpgradeBackupLocation>
|
||||||
</UpgradeBackupLocation>
|
</UpgradeBackupLocation>
|
||||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
<PublishUrl>publish\</PublishUrl>
|
<PublishUrl>publish\</PublishUrl>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
|
|
@ -43,6 +43,7 @@
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||||
<UseVSHostingProcess>true</UseVSHostingProcess>
|
<UseVSHostingProcess>true</UseVSHostingProcess>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
|
|
@ -52,20 +53,29 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
<Reference Include="System.Windows.Forms" />
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="LoginForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="LoginForm.designer.cs">
|
||||||
|
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="SiteAccessInfo.cs" />
|
||||||
<Compile Include="TeacherControlForm.cs">
|
<Compile Include="TeacherControlForm.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
@ -76,6 +86,9 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Include="LoginForm.resx">
|
||||||
|
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
|
@ -137,6 +150,15 @@
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="IconAuthorized1.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\IconAuthorized.ico" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="IconAuthorized.ico" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|
|
||||||
|
|
@ -119,8 +119,6 @@ type
|
||||||
function AddGeom(n: integer; a0,step: real): ObjectList; begin lst.AddRange(ArrGen(n,a0,x->x*step).Select(x -> object(x))); Result := Self end;
|
function AddGeom(n: integer; a0,step: real): ObjectList; begin lst.AddRange(ArrGen(n,a0,x->x*step).Select(x -> object(x))); Result := Self end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var
|
var
|
||||||
OutputString := new StringBuilder;
|
OutputString := new StringBuilder;
|
||||||
OutputList := new List<object>;
|
OutputList := new List<object>;
|
||||||
|
|
@ -132,7 +130,7 @@ var
|
||||||
|
|
||||||
Cur := 0;
|
Cur := 0;
|
||||||
|
|
||||||
function TaskName := ExtractFileName(System.Environment.GetCommandLineArgs[0]).Replace('.exe', '');
|
var TaskName := ExtractFileName(System.Environment.GetCommandLineArgs[0]).Replace('.exe', '');
|
||||||
|
|
||||||
function IsPT := System.Type.GetType('PT4.PT4') <> nil;
|
function IsPT := System.Type.GetType('PT4.PT4') <> nil;
|
||||||
|
|
||||||
|
|
@ -687,6 +685,13 @@ begin
|
||||||
var bool := IsSol.Invoke(f.GetValue(nil),nil);
|
var bool := IsSol.Invoke(f.GetValue(nil),nil);
|
||||||
if boolean(bool) then
|
if boolean(bool) then
|
||||||
TaskResult := Solved;
|
TaskResult := Solved;
|
||||||
|
// RobField.TaskName
|
||||||
|
var RBTaskNameInfo := f.FieldType.GetField('TaskName');
|
||||||
|
var v := string(RBTaskNameInfo.GetValue(f.GetValue(nil)));
|
||||||
|
// Добавлять RB к имени задания если его там нет
|
||||||
|
if not v.ToLower.StartsWith('rb') then
|
||||||
|
v := v.Insert(0,'RB');
|
||||||
|
TaskName := v;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -702,11 +707,18 @@ begin
|
||||||
var bool := IsSol.Invoke(f.GetValue(nil),nil);
|
var bool := IsSol.Invoke(f.GetValue(nil),nil);
|
||||||
if boolean(bool) then
|
if boolean(bool) then
|
||||||
TaskResult := Solved;
|
TaskResult := Solved;
|
||||||
|
// DMField.TaskName
|
||||||
|
var DMTaskNameInfo := f.FieldType.GetField('TaskName');
|
||||||
|
var v := string(DMTaskNameInfo.GetValue(f.GetValue(nil)));
|
||||||
|
// Добавлять DM к имени задания если его там нет
|
||||||
|
if not v.ToLower.StartsWith('dm') then
|
||||||
|
v := v.Insert(0,'DM');
|
||||||
|
TaskName := v;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Вызов PT4.PT4.__FinalizeModule__ отражением
|
// Вызов PT4.PT4.__FinalizeModule__ отражением
|
||||||
procedure FinalizeModulePT4;
|
procedure PT4CheckSolution;
|
||||||
begin
|
begin
|
||||||
var t := System.Type.GetType('PT4.PT4');
|
var t := System.Type.GetType('PT4.PT4');
|
||||||
if t<>nil then
|
if t<>nil then
|
||||||
|
|
@ -714,6 +726,9 @@ begin
|
||||||
var meth := t.GetMethod('__FinalizeModule__',System.Reflection.BindingFlags.Public or System.Reflection.BindingFlags.Static);
|
var meth := t.GetMethod('__FinalizeModule__',System.Reflection.BindingFlags.Public or System.Reflection.BindingFlags.Static);
|
||||||
if meth <> nil then
|
if meth <> nil then
|
||||||
meth.Invoke(nil,nil);
|
meth.Invoke(nil,nil);
|
||||||
|
//
|
||||||
|
var f := t.GetField('TaskName',System.Reflection.BindingFlags.Public or System.Reflection.BindingFlags.Static);
|
||||||
|
TaskName := string(f.GetValue(nil));
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
@ -889,15 +904,27 @@ begin
|
||||||
ColoredMessage('PT4: '+info.Replace(#13#10, ' ').TrimStart().TrimEnd('.',' '));}
|
ColoredMessage('PT4: '+info.Replace(#13#10, ' ').TrimStart().TrimEnd('.',' '));}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function ConvertTaskName(tn: string): string;
|
||||||
|
begin
|
||||||
|
var TName := tn;
|
||||||
|
// Если есть номер с подчеркиванием в начале, то отбросить его
|
||||||
|
var ind := TName.IndexOf('_');
|
||||||
|
if (ind >= 0) and TName[1].IsDigit then // Значит, в начале - номер, он служит лишь для упорядочения файлов
|
||||||
|
TName := TName.Remove(0,ind + 1);
|
||||||
|
if TName.ToLower in TaskNamesMap then
|
||||||
|
TName := TaskNamesMap[TName.ToLower];
|
||||||
|
Result := TName;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure CheckMyPT;
|
procedure CheckMyPT;
|
||||||
begin
|
begin
|
||||||
if CheckTask = nil then
|
if CheckTask = nil then
|
||||||
exit;
|
exit;
|
||||||
|
var TName := TaskName;
|
||||||
try
|
try
|
||||||
var TName := TaskName;
|
TName := ConvertTaskName(TaskName);
|
||||||
if TName.ToLower in TaskNamesMap then
|
|
||||||
TName := TaskNamesMap[TName.ToLower];
|
|
||||||
CheckTask(TName);
|
CheckTask(TName);
|
||||||
// Если это задача из задачника, то результат будет NotUnderControl. И дальше необходимо это преобразовывать
|
// Если это задача из задачника, то результат будет NotUnderControl. И дальше необходимо это преобразовывать
|
||||||
case TaskResult of
|
case TaskResult of
|
||||||
|
|
@ -943,16 +970,24 @@ begin
|
||||||
// Теперь тщательно проверяем задачник и исполнителей
|
// Теперь тщательно проверяем задачник и исполнителей
|
||||||
if IsPT then
|
if IsPT then
|
||||||
begin
|
begin
|
||||||
FinalizeModulePT4;
|
PT4CheckSolution;
|
||||||
|
TName := TaskName;
|
||||||
var info := GetSolutionInfoPT4;
|
var info := GetSolutionInfoPT4;
|
||||||
CalcPT4Result(info,TaskResult,TaskResultInfo);
|
CalcPT4Result(info,TaskResult,TaskResultInfo);
|
||||||
end
|
end
|
||||||
else if IsRobot then
|
else if IsRobot then
|
||||||
RobotCheckSolution
|
begin
|
||||||
|
RobotCheckSolution;
|
||||||
|
TName := TaskName;
|
||||||
|
end
|
||||||
else if IsDrawman then
|
else if IsDrawman then
|
||||||
|
begin
|
||||||
DrawmanCheckSolution;
|
DrawmanCheckSolution;
|
||||||
|
TName := TaskName;
|
||||||
|
end;
|
||||||
|
// Хотелось бы писать в БД для Робота и др. имя задания в Task
|
||||||
if WriteInfoCallBack<>nil then
|
if WriteInfoCallBack<>nil then
|
||||||
WriteInfoCallBack(TaskName, TaskResult, TaskResultInfo);
|
WriteInfoCallBack(TName, TaskResult, TaskResultInfo);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure LoadLightPTInfo;
|
procedure LoadLightPTInfo;
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,8 @@ type
|
||||||
property Parent: Node read getParent write SetParent;
|
property Parent: Node read getParent write SetParent;
|
||||||
property Data: integer read getData write SetData;
|
property Data: integer read getData write SetData;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
var TaskName: string;
|
||||||
|
|
||||||
/// Вывести формулировку задания
|
/// Вывести формулировку задания
|
||||||
procedure Task(name: string);
|
procedure Task(name: string);
|
||||||
|
|
@ -833,7 +835,7 @@ procedure StartPT(options: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
||||||
procedure FreePT; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'freept';
|
procedure FreePT; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'freept';
|
||||||
function CheckPT(var res: integer):string;external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'checkptf';
|
function CheckPT(var res: integer):string;external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'checkptf';
|
||||||
procedure RaisePT(s1,s2: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'raisept';
|
procedure RaisePT(s1,s2: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'raisept';
|
||||||
procedure Task(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
procedure Task__(name: string); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'task';
|
||||||
procedure GetR(var param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getr';
|
procedure GetR(var param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getr';
|
||||||
procedure PutR(param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'putr';
|
procedure PutR(param: real); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'putr';
|
||||||
procedure GetN(var param: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getn';
|
procedure GetN(var param: integer); external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getn';
|
||||||
|
|
@ -850,6 +852,12 @@ procedure DisposeP(sNode: IntPtr); external '%PABCSYSTEM%\PT4\PT4PABC.dll'
|
||||||
function FinishPT(): integer; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'finishpt'; // == 4.13 ==
|
function FinishPT(): integer; external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'finishpt'; // == 4.13 ==
|
||||||
procedure _GetSolutionInfo(info: System.Text.StringBuilder);external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getsolutioninfo';
|
procedure _GetSolutionInfo(info: System.Text.StringBuilder);external '%PABCSYSTEM%\PT4\PT4PABC.dll' name 'getsolutioninfo';
|
||||||
|
|
||||||
|
procedure Task(name: string);
|
||||||
|
begin
|
||||||
|
Task__(name);
|
||||||
|
TaskName := name;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure Dispose(p: pointer);
|
procedure Dispose(p: pointer);
|
||||||
begin
|
begin
|
||||||
DisposeP(IntPtr(p));
|
DisposeP(IntPtr(p));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue