diff --git a/lib/WebGUI/AdminConsole.pm b/lib/WebGUI/AdminConsole.pm index 519940360..bb0a77171 100644 --- a/lib/WebGUI/AdminConsole.pm +++ b/lib/WebGUI/AdminConsole.pm @@ -113,6 +113,43 @@ sub addSubmenuItem { #------------------------------------------------------------------- +=head2 addConfirmedSubmenuItem ( url, label, confirmation, extras ) + +Appends a link to the current AdminConsole submenu with a JavaScript confirmation showing the given message. + +=head3 url + +A string representing a URL. + +=head3 label + +A (hopefully informative) string. + +=head3 confirmation + +The message to use for the JavaScript confirmation before activating the link. + +=head3 extras + +Additional information. + +=cut + +sub addConfirmedSubmenuItem { + my $self = shift; + my $url = shift; + my $label = shift; + my $confirmation = shift; + my $extras = shift; + + # Buggo. We should really be using a proper JavaScript string escaping function here. + $confirmation =~ s/([\\\'])/\\$1/g; + $extras .= ' onclick="return confirm(\''.$confirmation.'\')"'; + $self->addSubmenuItem($url, $label, $extras); +} + +#------------------------------------------------------------------- + =head2 getAdminConsoleParams ( ) Returns a Hash of title, url, canUse, and icon. title is the Internationalization of "Admin Console". url is the page with op=adminConsole, canUse checks if is in group 12. icon is image located in extras/adminConsole/adminConsole.gif. diff --git a/lib/WebGUI/Asset.pm b/lib/WebGUI/Asset.pm index 3df9e9c77..e1b814225 100644 --- a/lib/WebGUI/Asset.pm +++ b/lib/WebGUI/Asset.pm @@ -1144,7 +1144,8 @@ sub manageAssets { my $locked; my $edit; if ($child->isLocked) { - $locked = 'locked'; + my $username_html = WebGUI::HTML::format($child->lockedBy->username, "text"); + $locked = 'locked by '.$username_html.''; $edit = "'getUrl("func=edit;proceed=manageAssets")."\">Edit | '+" if ($child->canEditIfLocked); } else { $edit = "'getUrl("func=edit;proceed=manageAssets")."\">Edit | '+"; diff --git a/lib/WebGUI/AssetVersioning.pm b/lib/WebGUI/AssetVersioning.pm index 14622084d..7bc673692 100644 --- a/lib/WebGUI/AssetVersioning.pm +++ b/lib/WebGUI/AssetVersioning.pm @@ -145,6 +145,22 @@ sub isLocked { } +#------------------------------------------------------------------- + +=head2 lockedBy ( ) + +Returns the user who locked this asset, or undef if the asset is unlocked. + +=cut + +sub lockedBy { + my $self = shift; + my $userId = $self->get("isLockedBy"); + return unless defined $userId; + return WebGUI::User->new($self->session, $userId); +} + + #------------------------------------------------------------------- =head2 purgeRevision ( ) diff --git a/lib/WebGUI/Operation.pm b/lib/WebGUI/Operation.pm index f6d60c02c..f0c77e920 100644 --- a/lib/WebGUI/Operation.pm +++ b/lib/WebGUI/Operation.pm @@ -143,7 +143,6 @@ sub getOperations { 'autoAddToGroup' => 'WebGUI::Operation::Group', 'autoDeleteFromGroup' => 'WebGUI::Operation::Group', 'deleteGroup' => 'WebGUI::Operation::Group', - 'deleteGroupConfirm' => 'WebGUI::Operation::Group', 'deleteGroupGrouping' => 'WebGUI::Operation::Group', 'deleteGrouping' => 'WebGUI::Operation::Group', 'editGroup' => 'WebGUI::Operation::Group', @@ -247,7 +246,6 @@ sub getOperations { 'becomeUser' => 'WebGUI::Operation::User', 'deleteUser' => 'WebGUI::Operation::User', - 'deleteUserConfirm' => 'WebGUI::Operation::User', 'editUser' => 'WebGUI::Operation::User', 'editUserSave' => 'WebGUI::Operation::User', 'editUserKarma' => 'WebGUI::Operation::User', diff --git a/lib/WebGUI/Operation/Group.pm b/lib/WebGUI/Operation/Group.pm index 907333863..9fe4fea8b 100644 --- a/lib/WebGUI/Operation/Group.pm +++ b/lib/WebGUI/Operation/Group.pm @@ -55,7 +55,7 @@ sub _submenu { $ac->addSubmenuItem($session->url->page("op=manageUsersInGroup;gid=".$session->form->process("gid")), $i18n->get(754)); $ac->addSubmenuItem($session->url->page("op=manageGroupsInGroup;gid=".$session->form->process("gid")), $i18n->get(807)); $ac->addSubmenuItem($session->url->page("op=emailGroup;gid=".$session->form->process("gid")), $i18n->get(808)); - $ac->addSubmenuItem($session->url->page("op=deleteGroup;gid=".$session->form->process("gid")), $i18n->get(806)); + $ac->addConfirmedSubmenuItem($session->url->page("op=deleteGroup;gid=".$session->form->process("gid")), $i18n->get(806), $i18n->get(86)); } $ac->addSubmenuItem($session->url->page("op=listGroups"), $i18n->get(756)); } @@ -199,21 +199,6 @@ sub www_autoDeleteFromGroup { #------------------------------------------------------------------- sub www_deleteGroup { - my $session = shift; - return $session->privilege->adminOnly() unless ($session->user->isInGroup(3) || _hasSecondaryPrivilege($session,$session->form->process("gid"))); - return $session->privilege->vitalComponent() if (isIn($session->form->process("gid"), qw(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17))); - my $i18n = WebGUI::International->new($session); - my ($output); - $output .= $i18n->get(86).'

'; - $output .= '

'.$i18n->get(44).''; - $output .= '    ' - .$i18n->get(45).'
'; - return _submenu($session,$output, '42',"group delete"); -} - -#------------------------------------------------------------------- -sub www_deleteGroupConfirm { my $session = shift; return $session->privilege->adminOnly() unless ($session->user->isInGroup(3) || _hasSecondaryPrivilege($session,$session->form->process("gid"))); return $session->privilege->vitalComponent() if (isIn($session->form->process("gid"), qw(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17))); diff --git a/lib/WebGUI/Operation/User.pm b/lib/WebGUI/Operation/User.pm index 175307cd8..af870bbd9 100644 --- a/lib/WebGUI/Operation/User.pm +++ b/lib/WebGUI/Operation/User.pm @@ -81,7 +81,7 @@ sub _submenu { || $session->stow->get("editUser_UID") eq "new") { $ac->addSubmenuItem($session->url->page("op=editUser;uid=".$session->stow->get("editUser_UID")), $i18n->get(457)); $ac->addSubmenuItem($session->url->page('op=becomeUser;uid='.$session->stow->get("editUser_UID")), $i18n->get(751)); - $ac->addSubmenuItem($session->url->page('op=deleteUser;uid='.$session->stow->get("editUser_UID")), $i18n->get(750)); + $ac->addConfirmedSubmenuItem($session->url->page('op=deleteUser;uid='.$session->stow->get("editUser_UID")), $i18n->get(750), $i18n->get(167)); if ($session->setting->get("useKarma")) { $ac->addSubmenuItem($session->url->page("op=editUserKarma;uid=".$session->stow->get("editUser_UID")), $i18n->get(555)); } @@ -261,41 +261,13 @@ sub www_becomeUser { =head2 www_deleteUser ( ) -Confirmation form for deleting a user. Only Admins are allowed to -delete users. The WebGUI uses Visitor and Admin may not be deleted. -If the Admin confirms, then www_deleteUserConfirm is called. The UID -of the user to delete is expected in a URL param names 'uid'. - -=cut - -sub www_deleteUser { - my $session = shift; - my ($output); - return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); - my $i18n = WebGUI::International->new($session); - if ($session->form->process("uid") eq '1' || $session->form->process("uid") eq '3') { - return _submenu($session,$session->privilege->vitalComponent()); - } else { - $output .= $i18n->get(167).'

'; - $output .= '

'.$i18n->get(44).''; - $output .= '    '. - $i18n->get(45).'
'; - return _submenu($session,$output,'42',"user delete"); - } -} - -#------------------------------------------------------------------- - -=head2 www_deleteUserConfirm ( ) - Deletes a user. Only Admins are allowed to delete users. The UID of the user to delete is expected in a URL param named 'uid'. www_listUsers is called after this. =cut -sub www_deleteUserConfirm { +sub www_deleteUser { my $session = shift; return $session->privilege->adminOnly() unless ($session->user->isInGroup(3)); my ($u);