using System;
namespace llum
{
[System.ComponentModel.ToolboxItem(true)]
public partial class LoginWidget : Gtk.Bin
{
public LoginWidget ()
{
this.Build ();
Gtk.ListStore store=new Gtk.ListStore(typeof(string));
label5.Text=Mono.Unix.Catalog.GetString("User");
label6.Text=Mono.Unix.Catalog.GetString("Password");
label3.Text=Mono.Unix.Catalog.GetString("Enter your user and password");
store.AppendValues(Mono.Unix.Catalog.GetString("Classroom Server"));
store.AppendValues(Mono.Unix.Catalog.GetString("Center Server"));
serverListcombobox.Model=store;
serverListcombobox.Active=0;
}
protected virtual void OnConnectButtonClicked (object sender, System.EventArgs e)
{
llum.Core core=llum.Core.getCore();
string[] user_info={userEntry.Text,passwordEntry.Text};
try
{
string ret=core.xmlrpc.client.login(user_info,"Golem",user_info);
if(ret.Contains("true"))
{
core.mw.statusText=Mono.Unix.Catalog.GetString("Connected to LDAP as: ") + userEntry.Text;
//core.function_list=core.xmlrpc.client.get_students_function_list(user_info,"Golem");
//Console.WriteLine(core.xmlrpc.client.get_students_function_list(user_info,"Golem"));
string[] tmp=ret.Split(' '); // tmp[1] contains group type [ students, teachers, admin, others ]
core.user_info=user_info;
switch(tmp[1])
{
case "students":
core.function_list=core.xmlrpc.client.get_students_function_list(user_info,"Golem");
core.set_function_list("students");
core.user_group="students";
break;
case "teachers":
core.function_list=core.xmlrpc.client.get_teachers_function_list(user_info,"Golem");
core.set_function_list("teachers");
core.user_group="teachers";
break;
case "admin":
core.function_list=core.xmlrpc.client.get_admin_function_list(user_info,"Golem");
core.set_function_list("admin");
core.user_group="admin";
break;
case "others":
core.function_list=core.xmlrpc.client.get_others_function_list(user_info,"Golem");
core.set_function_list("others");
core.user_group="others";
break;
case "promoted-teacher":
core.function_list=core.xmlrpc.client.get_teachers_function_list(user_info,"Golem");
core.set_function_list("admin");
core.user_group="promoted-teacher";
break;
default:
break;
}
/*
Console.WriteLine("[LoginWidget] Available functions:");
foreach(string str in core.function_list)
{
Console.WriteLine("\t*Function " + str);
}
Console.WriteLine();
*/
}
else
core.mw.statusText="" + Mono.Unix.Catalog.GetString("User and/or password are incorrect.") + "\n" + "RET: " + ret + "";
}
catch(Exception excp)
{
Console.WriteLine(core.server);
Console.WriteLine(excp);
core.mw.statusText="" + Mono.Unix.Catalog.GetString("There was an error trying to connect to the n4d(XMLRPC) server") +"";
}
}
[GLib.ConnectBefore]
protected virtual void OnPasswordEntryKeyPressEvent (object o, Gtk.KeyPressEventArgs args)
{
if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter)
{
OnConnectButtonClicked(null,null);
}
}
}
}