source: llum/trunk/fuentes/llum/EditUser.cs @ 376

Last change on this file since 376 was 376, checked in by hectorgh, 4 years ago

adding project files

File size: 10.5 KB
Line 
1
2using System;
3using System.Text;
4
5namespace llum
6{
7
8
9        [System.ComponentModel.ToolboxItem(true)]
10        public partial class EditUser : Gtk.Bin
11        {
12                public LdapUser user;
13                public Gtk.TreeStore available_store;
14                public Gtk.TreeStore belong_store;
15
16                public EditUser (LdapUser user)
17                {
18                        this.Build ();
19                       
20                       
21                       
22                        this.user=user;
23                       
24                        if ((llum.Core.getCore().user_group!="admin") && (llum.Core.getCore().user_group!="promoted-teacher") )
25                        {
26                                        //expander1.Sensitive=false;
27                                        nameEntry.Sensitive=false;
28                                        surnameEntry.Sensitive=false;
29                                        undoButton.Sensitive=false;
30                                        applyButton.Sensitive=false;
31                                        addGroupButton.Sensitive=false;
32                                        removeGroupButton.Sensitive=false;
33                                               
34                               
35                        }
36                       
37                        if(this.user.main_group=="admin")
38                                expander1.Sensitive=false;
39                       
40                       
41                        uidLabel.Text=user.uid;
42                        uidNumLabel.Text=user.uidn;
43                        groupLabel.Text=user.main_group;
44                       
45                        nameEntry.Text=user.name;
46                        surnameEntry.Text=user.surname;
47                        //changePasswordButton.Sensitive=false;
48
49                       
50                        niaEntry.Text=user.nia;
51                        dniEntry.Text=user.dni;
52                       
53                        llum.Core core=llum.Core.getCore();
54                       
55                        switch(user.main_group)
56                        {
57                                case "students":
58                                        dniEntry.Sensitive=false;
59                               
60                                        if(niaEntry.Text!="" && (core.user_group!="admin" || core.user_group!="promoted-teacher") )
61                                        {
62                                                niaButton.Hide();
63                                                niaEntry.Sensitive=false;
64                                        }
65                               
66                                        break;
67                                case "teachers":
68                                        niaEntry.Sensitive=false;
69                                        if(dniEntry.Text!="" && (core.user_group!="admin" || core.user_group!="promoted-teacher"))
70                                        {
71                                                niaButton.Hide();
72                                                dniEntry.Sensitive=false;
73                                        }
74                               
75                                        break;
76                               
77                                default:
78                                        niaButton.Sensitive=false;
79                                        niaEntry.Sensitive=false;
80                                        dniEntry.Sensitive=false;
81                                        niaButton.Hide();
82                                        break;
83                               
84                        }
85                       
86                       
87                        belongTreeview.Selection.Mode=Gtk.SelectionMode.Multiple;
88                        belong_store=new Gtk.TreeStore(typeof(string));
89                        Gtk.TreeViewColumn belong_column=new Gtk.TreeViewColumn();
90                        belong_column.Title=Mono.Unix.Catalog.GetString("Belongs to");
91                        Gtk.CellRendererText cell=new Gtk.CellRendererText();
92                        belong_column.PackStart(cell,true);
93                        belong_column.AddAttribute(cell,"text",0);
94                        belongTreeview.AppendColumn(belong_column);
95                        //Console.WriteLine(user.groups.Length);
96
97                        belongTreeview.Model=belong_store;
98                        belongTreeview.ShowAll();
99                       
100                        availableTreeview.Selection.Mode=Gtk.SelectionMode.Multiple;
101                        available_store=new Gtk.TreeStore(typeof(string));
102                        Gtk.TreeViewColumn available_column=new Gtk.TreeViewColumn();
103                        available_column.Title=Mono.Unix.Catalog.GetString("Available groups");
104                        Gtk.CellRendererText available_cell=new Gtk.CellRendererText();
105                        available_column.PackStart(available_cell,true);
106                        available_column.AddAttribute(available_cell,"text",0);
107                        availableTreeview.AppendColumn(available_column);
108                        availableTreeview.Model=available_store;
109                        availableTreeview.ShowAll();
110                       
111                        //llum.Core core=llum.Core.get
112                       
113                       
114                        populateTrees();
115                       
116                       
117                       
118                       
119                }
120               
121                private void populateTrees()
122                {
123                       
124                        belong_store.Clear();
125                       
126                        foreach(string group_ in user.groups)
127                        {
128                                belong_store.AppendValues((group_));
129                               
130                        }               
131                       
132                        available_store.Clear();
133                       
134                        foreach(string tmp in llum.Core.getCore().xmlrpc.get_available_groups())
135                        {
136                                if(!user.groups.Contains(tmp))
137                                        available_store.AppendValues((tmp));
138                               
139                        }                       
140                }
141               
142                protected virtual void OnAddGroupButtonClicked (object sender, System.EventArgs e)
143                {
144                        /*
145                        Gtk.TreeIter iter;
146                        bool ok=availableTreeview.Selection.GetSelected(out iter);
147                        if (ok)
148                        {
149                               
150                                belong_store.AppendValues(available_store.GetValue(iter,0));
151                                string ret=llum.Core.getCore().xmlrpc.add_to_group(user.uid,Convert.ToString(available_store.GetValue(iter,0)));
152                       
153                                if(ret=="true")
154                                {
155                                        msgLabel.Markup="<b>" + Mono.Unix.Catalog.GetString("Group modification successful") + "</b>";
156                                        user.groups.Add(Convert.ToString(available_store.GetValue(iter,0)));
157                                        available_store.Remove(ref iter);               
158                                }
159                                else
160                                {
161                                        msgLabel.Markup="<span foreground='red'> Error: " + ret + "</span>";                           
162                                }
163                       
164                               
165                        }
166                        */
167                       
168                        Gtk.TreeIter iter=new Gtk.TreeIter();
169                       
170                        Gtk.TreePath[] path_array=availableTreeview.Selection.GetSelectedRows();
171                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
172                       
173                        llum.Core core=llum.Core.getCore();
174                        bool error_found=false;
175                       
176                        if(path_array.Length>0)
177                        {
178                       
179                                foreach(Gtk.TreePath path in path_array)
180                                {
181                                        available_store.GetIter(out iter,path);
182                                        string ret=core.xmlrpc.add_to_group(user.uid,Convert.ToString(available_store.GetValue(iter,0)));
183                                        ret_list.Add(Convert.ToString(available_store.GetValue(iter,0)) + ": " + ret + "\n");
184                                       
185                                        if(ret=="true")
186                                        {
187                                                //belong_store.AppendValues(available_store.GetValue(iter,0)); 
188                                                user.groups.Add(Convert.ToString(available_store.GetValue(iter,0)));
189                                                //available_store.Remove(ref iter);     
190                                               
191                                        }
192                                        else
193                                                error_found=true;
194                                       
195                                }
196                               
197                                if(!error_found)
198                                {
199                                                msgLabel.Markup="<b>" + Mono.Unix.Catalog.GetString("Group modification successful") + "</b>";
200                       
201                                }
202                                else
203                                {
204                                        string msg="<span foreground='red'> Error:\n";
205                                        foreach(string str in ret_list)
206                                                msg+=str;
207                                       
208                                        msg+="</span>";
209                                       
210                                        msgLabel.Markup=msg;   
211                                }
212                               
213                                populateTrees();
214                        }
215                       
216                }               
217               
218                protected virtual void OnRemoveGroupButtonClicked (object sender, System.EventArgs e)
219                {
220                        /*
221                        Gtk.TreeIter iter;
222                        bool ok=belongTreeview.Selection.GetSelected(out iter);
223                        if (ok)
224                        {
225                               
226                                available_store.AppendValues(belong_store.GetValue(iter,0));
227                                string ret=llum.Core.getCore().xmlrpc.remove_from_group(user.uid,Convert.ToString(belong_store.GetValue(iter,0)));
228                       
229                               
230                                if(ret=="true")
231                                {
232                                        msgLabel.Markup="<b>" + Mono.Unix.Catalog.GetString("Group modification successful") + "</b>";
233                                        user.groups.Remove(Convert.ToString(belong_store.GetValue(iter,0)));
234                                        belong_store.Remove(ref iter);
235                                       
236                                }
237                                else
238                                {
239                                        msgLabel.Markup="<span foreground='red'> Error: " + ret + "</span>";                           
240                                }
241                               
242
243                               
244                        }       
245                        */
246
247                       
248                       
249                        Gtk.TreePath[] path_array=belongTreeview.Selection.GetSelectedRows();
250                        System.Collections.Generic.List<string>ret_list=new System.Collections.Generic.List<string>();
251                       
252                        llum.Core core=llum.Core.getCore();
253                        bool error_found=false;
254                       
255                        if(path_array.Length>0)
256                        {
257                                foreach(Gtk.TreePath path in path_array)
258                                {
259                                        Gtk.TreeIter iter=new Gtk.TreeIter();
260                                        belong_store.GetIter(out iter,path);
261                                       
262                                        string ret=core.xmlrpc.remove_from_group(user.uid,Convert.ToString(belong_store.GetValue(iter,0)));
263                                        ret_list.Add(Convert.ToString(belong_store.GetValue(iter,0)) + ": " + ret + "\n");
264                                       
265                                        if(ret=="true")
266                                        {
267                                                //available_store.AppendValues(belong_store.GetValue(iter,0));         
268                                                user.groups.Remove(Convert.ToString(belong_store.GetValue(iter,0)));
269                                                //belong_store.Remove(ref iter);       
270                                               
271                                               
272                                        }
273                                        else
274                                                error_found=true;
275                                       
276                                       
277                                       
278                                }
279                               
280                                if(!error_found)
281                                {
282                                                msgLabel.Markup="<b>" + Mono.Unix.Catalog.GetString("Group modification successful") + "</b>";
283                                }
284                                else
285                                {
286                                        string msg="<span foreground='red'> Error:\n";
287                                        foreach(string str in ret_list)
288                                                msg+=str;
289                                       
290                                        msg+="</span>";
291                                       
292                                        msgLabel.Markup=msg;           
293                                }                       
294                               
295                                populateTrees();
296                        }
297                       
298                }
299               
300                protected virtual void OnUndoButtonClicked (object sender, System.EventArgs e)
301                {
302                        nameEntry.Text=user.name;
303                        surnameEntry.Text=user.surname;
304                }
305               
306                protected virtual void OnApplyButtonClicked (object sender, System.EventArgs e)
307                {
308
309                       
310                //      string ret=llum.Core.getCore().xmlrpc.change_student_personal_data(user.uid,Convert.ToBase64String(Encoding.UTF8.GetBytes(new string(nameEntry.Text.ToCharArray()))),Convert.ToBase64String(Encoding.UTF8.GetBytes(new string(surnameEntry.Text.ToCharArray()))));
311                                string ret=llum.Core.getCore().xmlrpc.change_student_personal_data(user.uid,nameEntry.Text,surnameEntry.Text);
312                        if(ret=="true")
313                        {
314                                msgLabel.Markup="<b>" + Mono.Unix.Catalog.GetString("Personal data changed successfully") + "</b>";
315                                user.name=nameEntry.Text;
316                                user.surname=surnameEntry.Text;                 
317                               
318                        }
319                        else
320                                msgLabel.Markup="<span foreground='red'> Error: " + ret + "</span>";
321                }
322               
323                protected virtual void OnPassEntryChanged (object sender, System.EventArgs e)
324                {
325                        if((passEntry.Text==passEntry2.Text) && passEntry.Text!="")
326                        {
327                                changePasswordButton.Sensitive=true;   
328                        }
329                        else
330                                changePasswordButton.Sensitive=false;
331                }
332               
333                protected virtual void OnPass2EntryChanged (object sender, System.EventArgs e)
334                {
335                       
336                        if((passEntry.Text==passEntry2.Text) && passEntry.Text!="")
337                        {
338                                changePasswordButton.Sensitive=true;   
339                        }
340                        else
341                                changePasswordButton.Sensitive=false;                   
342                }
343               
344                protected virtual void OnChangePasswordButtonClicked (object sender, System.EventArgs e)
345                {
346                        string ret="";
347                        if(passEntry.Text!="")
348                        {
349                                if(user.main_group=="students")
350                                {
351                                        ret=llum.Core.getCore().xmlrpc.change_student_password(user.uid,passEntry.Text);
352                                       
353                                }
354                                else
355                                        ret=llum.Core.getCore().xmlrpc.change_password(user.path,passEntry.Text,false);
356                               
357                                if(ret=="true")
358                                        msgLabel.Markup="<b>" + Mono.Unix.Catalog.GetString("User password changed successfully") + "</b>";
359                                else
360                                        msgLabel.Markup="<span foreground='red'> Error: " + ret + "</span>";
361                        }
362                        else
363                                msgLabel.Markup="<span foreground='red'>" + Mono.Unix.Catalog.GetString("Password cannot be empty") +"</span>";
364                       
365                }
366               
367                protected virtual void OnNiaButtonClicked (object sender, System.EventArgs e)
368                {
369                        string ret="";
370                        switch(user.main_group)
371                        {
372                                case "students":
373                               
374                                        ret=llum.Core.getCore().xmlrpc.generic_student_to_itaca(user.uid,niaEntry.Text);
375                                        if(ret.Contains("true"))
376                                        {
377                                       
378                                                msgLabel.Markup="<b>"  + Mono.Unix.Catalog.GetString("NIA edited succesfully") + "</b>";
379                                               
380                                        }
381                                        else
382                                        {
383                                                msgLabel.Markup="<span foreground='red'>" + Mono.Unix.Catalog.GetString("There was an error trying to edit this user") + ":\n" + ret + "</span>";
384                                        }
385                               
386                                break;
387                               
388                                case "teachers":
389                               
390                                        ret=llum.Core.getCore().xmlrpc.generic_teacher_to_itaca(user.uid,dniEntry.Text);
391                                        if(ret.Contains("true"))
392                                        {
393                                       
394                                                msgLabel.Markup="<b>"  + Mono.Unix.Catalog.GetString("NIF edited successfully ") + "</b>";
395                                               
396                                        }
397                                        else
398                                        {
399                                                msgLabel.Markup="<span foreground='red'>" + Mono.Unix.Catalog.GetString("There was an error trying to edit this user") + ":\n" + ret + "</span>";
400                                        }                               
401                                break;
402                        }
403                       
404                        niaButton.Hide();
405                        niaEntry.Sensitive=false;
406                        dniEntry.Sensitive=false;
407                       
408                }
409               
410               
411               
412               
413               
414               
415               
416               
417               
418        }
419}
Note: See TracBrowser for help on using the repository browser.