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

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

adding project files

File size: 13.4 KB
Line 
1
2using System;
3
4namespace llum
5{
6
7
8        [System.ComponentModel.ToolboxItem(true)]
9        public partial class SearchUser : Gtk.Bin
10        {
11               
12                public System.Collections.Generic.List<LdapUser> user_list;
13                public System.Collections.Generic.List<LdapUser> selected_user_list;
14               
15
16               
17               
18                public void populate_treeview(string filter)
19                {
20               
21                        string def_filter;
22                        string main_group;
23                       
24                        if(filter.Contains("*"))
25                           def_filter=filter.Replace("*","");
26                        else
27                                def_filter=filter.ToLower();
28                       
29                        if(def_filter.Length>0 || (filter.Contains("*")))
30                               
31                                foreach(LdapUser user in user_list)
32                                {
33                               
34                                        main_group=user.main_group;
35                               
36                                        //Console.WriteLine (user.main_group);
37                               
38                                        if(user.main_group=="teachers")
39                                                if(user.is_admin)
40                                                        main_group="promoted-teachers";
41                                       
42                                       
43                                               
44                                        if(user.name.Contains(def_filter) || user.name.ToLower().Contains(def_filter) || user.surname.Contains(def_filter) || user.surname.ToLower().Contains(def_filter) || user.uid.Contains(def_filter))
45                                                if(user.is_admin)
46                                                {
47                                                        store.AppendValues(user.uid,main_group,user.name,user.surname,"#a72700");
48                                                       
49                                                }
50                                                else
51                                                {
52                                                        store.AppendValues(user.uid,main_group,user.name,user.surname,"#000000");
53                                                       
54                                                }
55
56                                       
57                                }
58                       
59                       
60                       
61                }
62               
63               
64                protected virtual void OnSearchEntryChanged (object sender, System.EventArgs e)
65                {
66                        store.Clear();
67                       
68                        // old uid-filter only                 
69                        /*
70                        if(searchEntry.Text!="")
71                        {
72                                llum.Core core=llum.Core.getCore();
73                                System.Array array;
74                                if(!searchEntry.Text.Contains("*"))
75                                        array=core.xmlrpc.client.get_user_list(core.user_info,"Golem",searchEntry.Text+"*");
76                                else
77                                {
78                                        string query=searchEntry.Text.Replace("*","");
79                                        query=query+"*";
80                                        array=core.xmlrpc.client.get_user_list(core.user_info,"Golem",query);
81                                       
82                                }
83                               
84                               
85                                user_list=new System.Collections.Generic.List<llum.LdapUser>();
86                                foreach(object a in array)
87                                {
88                                        //Console.WriteLine(a.GetType());
89                                        store.AppendValues(((CookComputing.XmlRpc.XmlRpcStruct)a)["uid"]);
90                                        Object[] groups_object=(Object[])((CookComputing.XmlRpc.XmlRpcStruct)a)["groups"];
91                                        string[] groups=new string[groups_object.Length];
92                                        int i=0;
93                                        foreach(Object a2 in groups_object)
94                                        {
95                                                groups[i]=Convert.ToString(a2);
96                                                Console.WriteLine(a2);
97                                                i++;
98                                        }
99                                       
100                                       
101                                       
102                                        foreach(Object tmp in ((CookComputing.XmlRpc.XmlRpcStruct)a).Keys)
103                                        {
104                                       
105                                                Console.WriteLine(tmp);
106                                        }
107                                       
108                                        Console.WriteLine("---------------------");
109                                       
110                                       
111                                        LdapUser user=new LdapUser(Convert.ToString(((CookComputing.XmlRpc.XmlRpcStruct)a)["path"]),
112                                                                  Convert.ToString(((CookComputing.XmlRpc.XmlRpcStruct)a)["uid"]),
113                                                                   Convert.ToString(((CookComputing.XmlRpc.XmlRpcStruct)a)["uidNumber"]),
114                                                                  Convert.ToString(((CookComputing.XmlRpc.XmlRpcStruct)a)["cn"]),
115                                                                   Convert.ToString(((CookComputing.XmlRpc.XmlRpcStruct)a)["sn"]),
116                                                                   groups,
117                                                                   Convert.ToString(((CookComputing.XmlRpc.XmlRpcStruct)a)["profile"]));
118                                                                   
119                                       
120                                       
121                                       
122                                       
123                                        user_list.Add(user);
124                                       
125                                       
126                                       
127                                       
128                                       
129                                }
130                                //Console.WriteLine("////// END ///////");
131                                Console.WriteLine(user_list.Capacity);
132                        }
133                                */
134                       
135                        //llum.Core core=llum.Core.getCore();
136                        /*
137                        user_list=new System.Collections.Generic.List<llum.LdapUser>();
138                       
139                       
140                        System.Array array=core.xmlrpc.client.get_user_list(core.user_info,"Golem","*");
141                        foreach(CookComputing.XmlRpc.XmlRpcStruct item in array)
142                        {
143                               
144                       
145                               
146                                LdapUser user=new LdapUser(
147                                                           Convert.ToString(item["path"]),
148                                                           Convert.ToString(item["uid"]),
149                                                           Convert.ToString(item["uidNumber"]),
150                                                           Convert.ToString(item["cn"]),
151                                                           Convert.ToString(item["sn"]),
152                                                           get_groups(item),
153                                                           Convert.ToString(item["profile"]));
154                               
155                               
156                                                           
157                                 user_list.Add(user);
158         
159                               
160                               
161                        }
162                       
163                       
164                        */
165                       
166                       
167                        if(!thread.IsAlive)
168                        {
169                                populate_treeview(searchEntry.Text);
170                               
171                        }
172                       
173                       
174                       
175                       
176                       
177                       
178                       
179                       
180                }
181
182                public void OnMenuButtonClicked(object sender, System.EventArgs e)
183                {
184                        llum.Core.getCore().search_user=new SearchUser(false);
185                       
186                        llum.Core.getCore().mw.setCurrentWidget(llum.Core.getCore().search_user);
187                }               
188               
189               
190                public Gtk.Label label;
191                public Gtk.Image image;
192               
193               
194               
195                public Gtk.TreeViewColumn user_id_column;
196                public Gtk.CellRendererText user_id_cell_renderer;
197                public Gtk.ListStore store;
198                public System.Threading.Thread thread;
199               
200                public Gtk.TreeViewColumn user_group_column;
201               
202                public SearchUser (bool from_core)
203                {
204                        this.Build ();
205                       
206                        searchImage.Animation=new Gdk.PixbufAnimation(null,"llum.watch.gif");
207                       
208                        searchEntry.Sensitive=false;
209                       
210                       
211                       
212                        System.Threading.ThreadStart tstart=delegate{
213                       
214                        //user_list=llum.Core.getCore().xmlrpc.light_get_user_list();
215                               
216                                user_list=llum.Core.getCore().xmlrpc.get_user_list();
217
218                       
219                                Gtk.Application.Invoke(delegate{
220                                        if (user_list==null)
221                                                msgLabel.Markup="<span foreground='red'>" + Mono.Unix.Catalog.GetString("There was an error connecting to the n4d(XMLRPC) server") + "</span>";
222                                        else
223                                                msgLabel.Text="";
224                                        searchEntry.Sensitive=true;
225                                        searchImage.Visible=false;
226                                       
227                                });
228                               
229                               
230                               
231                        };
232                       
233                        thread=new System.Threading.Thread(tstart);
234                       
235                        if(!from_core)
236                                thread.Start();
237                       
238                       
239                        editButton.Sensitive=false;
240                        promoteButton.Sensitive=false;
241                       
242                       
243                       
244                        userTreeview.Selection.Mode=Gtk.SelectionMode.Multiple;
245                        image=new Gtk.Image();
246                        image.SetFromIconName("gtk-find",Gtk.IconSize.Dnd);
247                       
248                        label=new Gtk.Label(Mono.Unix.Catalog.GetString("Search User"));
249                        label.Show();                   
250
251                        store=new Gtk.ListStore(typeof(string),typeof(string),typeof(string),typeof(string),typeof(string));
252                        store.SetSortFunc(0,sort_users);
253                        store.SetSortFunc(1,sort_groups);
254                        userTreeview.Model=store;
255                       
256                        user_group_column=new Gtk.TreeViewColumn();
257                        user_group_column.Title=Mono.Unix.Catalog.GetString("User ID");
258                        user_group_column.Clickable=true;
259                        user_group_column.SortIndicator = true;
260                        user_group_column.Clicked+=user_id_column_clicked;
261                       
262                       
263                       
264                        Gtk.CellRendererText user_group_cell_renderer=new Gtk.CellRendererText();
265                        user_group_column.PackStart(user_group_cell_renderer,true);
266                        user_group_column.AddAttribute(user_group_cell_renderer,"text",0);
267                        user_group_column.AddAttribute(user_group_cell_renderer,"foreground",4);
268                        userTreeview.AppendColumn(user_group_column);                                   
269                       
270                        user_id_column=new Gtk.TreeViewColumn();
271                        user_id_column.Title=Mono.Unix.Catalog.GetString("Group");
272                        user_id_cell_renderer=new Gtk.CellRendererText();
273                        user_id_column.PackStart(user_id_cell_renderer,true);
274                        user_id_column.AddAttribute(user_id_cell_renderer,"text",1);
275                        userTreeview.AppendColumn(user_id_column);
276                        user_id_column.Clickable=true;
277                        user_id_column.SortIndicator=true;
278                        user_id_column.Clicked+=user_group_column_clicked;
279                       
280                       
281                       
282                        Gtk.TreeViewColumn user_name_column=new Gtk.TreeViewColumn();
283                        user_name_column.Title=Mono.Unix.Catalog.GetString("Name");
284                        Gtk.CellRendererText user_name_cell_renderer=new Gtk.CellRendererText();
285                        user_name_column.PackStart(user_name_cell_renderer,true);
286                        user_name_column.AddAttribute(user_name_cell_renderer,"text",2);
287                        userTreeview.AppendColumn(user_name_column);
288                       
289                        Gtk.TreeViewColumn user_surname_column=new Gtk.TreeViewColumn();
290                        user_surname_column.Title=Mono.Unix.Catalog.GetString("Surname");
291                        Gtk.CellRendererText user_surname_cell_renderer=new Gtk.CellRendererText();
292                        user_surname_column.PackEnd(user_surname_cell_renderer,true);
293                        user_surname_column.AddAttribute(user_surname_cell_renderer,"text",3);
294                        userTreeview.AppendColumn(user_surname_column);
295                       
296                       
297                       
298                       
299                        userTreeview.ShowAll();
300
301                       
302                       
303                       
304                       
305                }
306               
307                private void user_id_column_clicked(object o, EventArgs args)
308                {
309                       
310                        if(user_group_column.SortOrder==Gtk.SortType.Ascending)
311                                user_group_column.SortOrder=Gtk.SortType.Descending;
312                        else
313                                user_group_column.SortOrder=Gtk.SortType.Ascending;
314                       
315                        store.SetSortColumnId(0, user_group_column.SortOrder);
316                }
317               
318               
319                private int sort_users(Gtk.TreeModel model,Gtk.TreeIter a,Gtk.TreeIter b)
320                {
321                       
322                        return String.Compare ((string) model.GetValue (a, 0),(string) model.GetValue (b, 0));
323                       
324                }
325               
326                private void user_group_column_clicked(object o, EventArgs args)
327                {
328                       
329                        if(user_id_column.SortOrder==Gtk.SortType.Ascending)
330                                user_id_column.SortOrder=Gtk.SortType.Descending;
331                        else
332                                user_id_column.SortOrder=Gtk.SortType.Ascending;
333                       
334                        store.SetSortColumnId(1, user_id_column.SortOrder);
335                }
336               
337                private int sort_groups(Gtk.TreeModel model,Gtk.TreeIter a, Gtk.TreeIter b)
338                {
339                        return String.Compare ((string) model.GetValue (a, 1),(string) model.GetValue (b, 1));
340                }
341               
342                protected virtual void OnEditButtonClicked (object sender, System.EventArgs e)
343                {
344                       
345                        //userTreeview.Selection.GetSelected(out iter);
346                       
347                        Gtk.TreePath[] path_array=userTreeview.Selection.GetSelectedRows();
348                       
349                        if(path_array.Length==1)
350                        {
351                                Gtk.TreeIter iter;
352                                store.GetIter(out iter,path_array[0]);
353                                //Console.WriteLine(store.GetValue(iter,0));
354                                LdapUser return_user=null;
355                                foreach(LdapUser user in user_list)
356                                {
357                                        if (user.uid==(string)store.GetValue(iter,0))
358                                        {
359                                                return_user=user;
360                                                break; 
361                                        }
362                                }
363                               
364                                llum.Core core=llum.Core.getCore();
365                               
366                                core.edit_user_wid=new EditUser(return_user);
367                                core.mw.setCurrentWidget(core.edit_user_wid);
368                               
369                        }
370                        else
371                                Console.WriteLine(":((");
372                       
373                }
374               
375                protected virtual void OnUserTreeviewRowActivated (object o, Gtk.RowActivatedArgs args)
376                {
377
378                }
379               
380                protected virtual void OnUserTreeviewCursorChanged (object sender, System.EventArgs e)
381                {
382
383                }
384               
385                protected virtual void OnUserTreeviewButtonPressEvent (object o, Gtk.ButtonPressEventArgs args)
386                {
387               
388
389                }
390
391                [GLib.ConnectBefore]
392                protected virtual void OnUserTreeviewButtonReleaseEvent (object o, Gtk.ButtonReleaseEventArgs args)
393                {
394                       
395                        Gtk.TreePath[] path_array=userTreeview.Selection.GetSelectedRows();
396                        //Console.WriteLine(path_array.Length);
397                        if(path_array.Length==1)
398                        {                       
399                       
400                                editButton.Sensitive=true;
401                               
402                       
403                        }
404                        else
405                        {
406                                editButton.Sensitive=false;
407                               
408                        }
409                       
410                        if(path_array.Length>0)
411                        {
412                                deleteUsersButton.Sensitive=true;
413                                promoteButton.Sensitive=true;
414                                demoteButton.Sensitive=true;
415                        }
416                        else
417                        {
418                                deleteUsersButton.Sensitive=false;
419                                promoteButton.Sensitive=false;
420                                demoteButton.Sensitive=false;
421                        }
422                }
423               
424                protected virtual void OnDeleteUsersButtonClicked (object sender, System.EventArgs e)
425                {
426                       
427                        Gtk.TreePath[] path_array=userTreeview.Selection.GetSelectedRows();
428                       
429                        selected_user_list=new System.Collections.Generic.List<llum.LdapUser>();
430                       
431                        foreach(Gtk.TreePath path in path_array)
432                        {
433                                Gtk.TreeIter iter;
434                                store.GetIter(out iter,path);   
435                               
436                                string uid=(string)store.GetValue(iter,0);
437                               
438                                foreach(llum.LdapUser u in user_list)
439                                {
440                                        if(u.uid==uid)
441                                        {
442                                                switch(u.main_group)
443                                                {
444                                                        case "students":       
445                                                                u.ok_to_delete=true;
446                                                               
447                                                                break;
448                                                        case "teachers":
449                                                                if(llum.Core.getCore().user_group=="admin" || llum.Core.getCore().user_group=="promoted-teacher" )
450                                                                        u.ok_to_delete=true;
451                                                                else
452                                                                        u.ok_to_delete=false;
453                                                                break;
454                                                       
455                                                        case "admin":
456                                                                u.ok_to_delete=false;
457                                                                break;
458                                                       
459                                                        case "others":
460                                                                u.ok_to_delete=true;
461                                                                break;
462                                                       
463                                                               
464                                                       
465                                                       
466                                                }
467                                                selected_user_list.Add(u);
468                                               
469                                        }
470                                }
471                               
472                               
473                               
474                        }
475                       
476                        llum.Core core=llum.Core.getCore();
477                       
478                        core.delete_users_wid=new DeleteUserWidget(selected_user_list,"users");
479                        core.mw.setCurrentWidget(core.delete_users_wid);
480                       
481                       
482                }
483               
484                protected virtual void OnPromoteButtonClicked (object sender, System.EventArgs e)
485                {
486                        Gtk.TreePath[] path_array=userTreeview.Selection.GetSelectedRows();
487                       
488                        selected_user_list=new System.Collections.Generic.List<llum.LdapUser>();
489                       
490                        foreach(Gtk.TreePath path in path_array)
491                        {
492                                Gtk.TreeIter iter;
493                                store.GetIter(out iter,path);   
494                               
495                                string uid=(string)store.GetValue(iter,0);
496                               
497                                foreach(llum.LdapUser u in user_list)
498                                {
499                                        if(u.uid==uid)
500                                        {
501                                                selected_user_list.Add(u);
502                                               
503                                        }
504                                }                       
505                        }
506                       
507                        llum.Core core=llum.Core.getCore();
508                       
509                       
510                       
511                        core.promote_users_wid=new PromoteUserWidget(selected_user_list,"users");
512                        core.mw.setCurrentWidget(core.promote_users_wid);
513                       
514                       
515                       
516                       
517                }
518               
519                protected virtual void OnDemoteButtonClicked (object sender, System.EventArgs e)
520                {
521                        Gtk.TreePath[] path_array=userTreeview.Selection.GetSelectedRows();
522                       
523                        selected_user_list=new System.Collections.Generic.List<llum.LdapUser>();
524                       
525                        foreach(Gtk.TreePath path in path_array)
526                        {
527                                Gtk.TreeIter iter;
528                                store.GetIter(out iter,path);   
529                               
530                                string uid=(string)store.GetValue(iter,0);
531                               
532                                foreach(llum.LdapUser u in user_list)
533                                {
534                                        if(u.uid==uid)
535                                        {
536                                                selected_user_list.Add(u);
537                                               
538                                        }
539                                }                       
540                        }
541                       
542                        llum.Core core=llum.Core.getCore();
543                       
544                        core.demote_users_wid=new DemoteUserWidget(selected_user_list,"users");
545                        core.mw.setCurrentWidget(core.demote_users_wid);
546                       
547                       
548                }
549               
550               
551               
552               
553               
554               
555               
556               
557               
558        }
559}
Note: See TracBrowser for help on using the repository browser.