aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngelo Naselli <anaselli@linux.it>2013-12-29 22:14:32 +0100
committerAngelo Naselli <anaselli@linux.it>2013-12-29 22:14:32 +0100
commit151b7997ce94fa157240416aa6b1fa776535d91e (patch)
treeca0579888f00d5720774ed768818e830007611e5
parent9377fd5767519608661617d29093cd32b7f1e5ea (diff)
downloadcolin-keep-151b7997ce94fa157240416aa6b1fa776535d91e.tar
colin-keep-151b7997ce94fa157240416aa6b1fa776535d91e.tar.gz
colin-keep-151b7997ce94fa157240416aa6b1fa776535d91e.tar.bz2
colin-keep-151b7997ce94fa157240416aa6b1fa776535d91e.tar.xz
colin-keep-151b7997ce94fa157240416aa6b1fa776535d91e.zip
- Added GroupAdd function
- Added a question more if GID is already in (not in userdrake) to be sure a non unique gid is really wanted
-rw-r--r--AdminPanel/Users/GUsers.pm128
-rw-r--r--AdminPanel/Users/users.pm8
2 files changed, 127 insertions, 9 deletions
diff --git a/AdminPanel/Users/GUsers.pm b/AdminPanel/Users/GUsers.pm
index 20808c6..a87401a 100644
--- a/AdminPanel/Users/GUsers.pm
+++ b/AdminPanel/Users/GUsers.pm
@@ -304,6 +304,116 @@ sub _deleteUserDialog {
}
+sub _addGroupDialog {
+ my $self = shift;
+
+ my $is_system = 0;
+
+ ## push application title
+ my $appTitle = yui::YUI::app()->applicationTitle();
+ ## set new title to get it in dialog
+ yui::YUI::app()->setApplicationTitle(N("Create New Group"));
+ my $factory = yui::YUI::widgetFactory;
+ my $optional = yui::YUI::optionalWidgetFactory;
+
+ my $dlg = $factory->createPopupDialog();
+ my $layout = $factory->createVBox($dlg);
+
+ ## 'group name'
+ my $align = $factory->createRight($layout);
+ my $hbox = $factory->createHBox($align);
+ my $label = $factory->createLabel($hbox, N("Group Name:") );
+ my $groupName = $factory->createInputField($hbox, "", 0);
+ $label->setWeight($yui::YD_HORIZ, 1);
+ $groupName->setWeight($yui::YD_HORIZ, 2);
+
+ $factory->createVSpacing($layout, 1);
+
+ # Specify group id manually
+ $align = $factory->createLeft($layout);
+ $hbox = $factory->createHBox($align);
+ my $gidManually = $factory->createCheckBox($hbox, N("Specify group ID manually"), 0);
+ $factory->createHSpacing($hbox, 2);
+ my $GID = $factory->createIntField($hbox, N("GID"), 1, 65000, 500);
+ $GID->setEnabled($gidManually->value());
+ $gidManually->setNotify(1);
+
+ $hbox = $factory->createHBox($layout);
+ $align = $factory->createRight($hbox);
+ my $cancelButton = $factory->createPushButton($align, N("Cancel"));
+ my $okButton = $factory->createPushButton($hbox, N("Ok"));
+ while(1) {
+ my $event = $dlg->waitForEvent();
+ my $eventType = $event->eventType();
+
+ #event type checking
+ if ($eventType == $yui::YEvent::CancelEvent) {
+ last;
+ }
+ elsif ($eventType == $yui::YEvent::WidgetEvent) {
+ # widget selected
+ my $widget = $event->widget();
+ if ($widget == $cancelButton) {
+ last;
+ }
+ elsif ($widget == $gidManually) {
+ # GID inserction enabled?
+ $GID->setEnabled($gidManually->value());
+ }
+ elsif ($widget == $okButton) {
+ ## check data
+ my $groupname = $groupName->value();
+ my ($continue, $errorString) = valid_groupname($groupname);
+ my $nm = $continue && $self->ctx->LookupGroupByName($groupname);
+ if ($nm) {
+ $groupName->setValue("");
+ $errorString = N("Group already exists, please choose another Group Name");
+ $continue = 0;
+ }
+ my $groupEnt = $self->ctx->InitGroup($groupname, $is_system);
+
+ my $gid = 0;
+ if ($continue && $gidManually->value()) {
+ if (($gid = $GID->value()) < 500) {
+ $errorString = "";
+ my $gidchoice = AdminPanel::Shared::ask_YesOrNo(N(" Group Gid is < 500"),
+ N("Creating a group with a GID less than 500 is not recommended.\n Are you sure you want to do this?\n\n"));
+ $continue = $gidchoice and $groupEnt->Gid($gid);
+ } else {
+ my $g = $self->ctx->LookupGroupById($gid);
+ if ($g) {
+ $errorString = "";
+ my $gidchoice = AdminPanel::Shared::ask_YesOrNo(N(" Group ID is already used "),
+ N("Creating a group with a non unique GID?\n\n"));
+ $continue = $gidchoice and $groupEnt->Gid($gid);
+ }
+ else {
+ $groupEnt and $groupEnt->Gid($gid);
+ }
+ }
+ }
+
+
+ if (!$continue) {
+ #---rasie error
+ AdminPanel::Shared::msgBox($errorString) if ($errorString);
+ }
+ else {
+ log::explanations(N("Adding group: %s ", $groupname));
+ $self->ctx->GroupAdd($groupEnt);
+ $self->_refresh();
+ last;
+ }
+ }
+ }
+ }
+ destroy $dlg;
+
+ #restore old application title
+ yui::YUI::app()->setApplicationTitle($appTitle);
+}
+
+
sub addUserDialog {
my $self = shift;
@@ -729,7 +839,7 @@ sub _refreshUsers {
}
$self->get_widget('table')->addItems($itemColl);
my $item = $self->get_widget('table')->selectedItem();
- $self->get_widget('table')->selectItem($item, 0);
+ $self->get_widget('table')->selectItem($item, 0) if $item;
$self->_refreshActions();
$self->dialog->recalcLayout();
$self->dialog->doneMultipleChanges();
@@ -786,7 +896,7 @@ sub _refreshGroups {
$self->get_widget('table')->addItems($itemColl);
my $item = $self->get_widget('table')->selectedItem();
- $self->get_widget('table')->selectItem($item, 0);
+ $self->get_widget('table')->selectItem($item, 0) if $item;
$self->_refreshActions();
$self->dialog->recalcLayout();
$self->dialog->doneMultipleChanges();
@@ -842,8 +952,8 @@ sub _refreshActions {
$self->set_action_menu(
add_user => new yui::YMenuItem(N("Add User")),
add_group => new yui::YMenuItem(N("Add Group")),
- edit => new yui::YMenuItem(N("Edit")),
- del => new yui::YMenuItem(N("Delete")),
+ edit => new yui::YMenuItem(N("&Edit")),
+ del => new yui::YMenuItem(N("&Delete")),
inst => new yui::YMenuItem(N("Install guest account")),
);
@@ -901,7 +1011,7 @@ sub manageUsersDialog {
my %fileMenu = (
widget => $factory->createMenuButton($headbar,N("File")),
refresh => new yui::YMenuItem(N("Refresh")),
- quit => new yui::YMenuItem(N("Quit")),
+ quit => new yui::YMenuItem(N("&Quit")),
);
$fileMenu{ widget }->addItem($fileMenu{ refresh });
@@ -991,6 +1101,10 @@ sub manageUsersDialog {
$self->addUserDialog();
$self->_refresh();
}
+ elsif ($item->label() eq $self->get_action_menu('add_group')->label()) {
+ $self->_addGroupDialog();
+ $self->_refresh();
+ }
elsif ($item->label() eq $self->get_action_menu('del')->label()) {
$self->_deleteUserOrGroup();
}
@@ -1017,6 +1131,10 @@ sub manageUsersDialog {
elsif ($widget == $self->get_widget('table')) {
$self->_refreshActions();
}
+ elsif ($widget == $self->get_widget('add_group')) {
+ $self->_addGroupDialog();
+ $self->_refresh();
+ }
elsif ( $widget == $self->get_widget('filter_system') ||
$widget == $self->get_widget('refresh') ||
$widget == $self->get_widget('apply_filter') ) {
diff --git a/AdminPanel/Users/users.pm b/AdminPanel/Users/users.pm
index a94aa05..2c06f78 100644
--- a/AdminPanel/Users/users.pm
+++ b/AdminPanel/Users/users.pm
@@ -44,13 +44,13 @@ sub addKdmIcon {
sub valid {
- return (0, "Name field is empty please provide a name") if (!$_[0] );
+ return (0, N("Name field is empty please provide a name")) if (!$_[0] );
$_[0] =~ /^[a-z]+?[a-z0-9_\-\.]*?$/ or do {
- return (0, "The name must contain only lower cased latin letters, numbers, `.', `-' and `_'");
+ return (0, N("The name must contain only lower cased latin letters, numbers, `.', `-' and `_'"));
};
- return (0, "Name is too long") if (! (length($_[0]) <= $_[1]));
- return (1, "Ok");
+ return (0, N("Name is too long")) if (! (length($_[0]) <= $_[1]));
+ return (1, N("Ok"));
}
sub valid_username {