siteuser.pl now flashes all success messages from the messages table
authorTony Cook <tony@develop-help.com>
Fri, 27 Jan 2012 11:22:23 +0000 (22:22 +1100)
committerTony Cook <tony@develop-help.com>
Fri, 27 Jan 2012 11:22:23 +0000 (22:22 +1100)
MANIFEST
site/cgi-bin/modules/BSE/AdminSiteUsers.pm
site/cgi-bin/modules/BSE/Message.pm
site/data/db/bse_msg_base.data
site/data/db/bse_msg_defaults.data
site/templates/admin/include/message.tmpl [new file with mode: 0644]
site/templates/admin/users/groupadd.tmpl

index 12cfe09..34298ef 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -531,6 +531,7 @@ site/templates/admin/include/article_menu.tmpl
 site/templates/admin/include/auditentry.tmpl
 site/templates/admin/include/audithead.tmpl
 site/templates/admin/include/edit_common.tmpl
+site/templates/admin/include/message.tmpl
 site/templates/admin/include/order_list_filter.tmpl
 site/templates/admin/include/order_list_pages.tmpl
 site/templates/admin/include/site_menu.tmpl
index b0b717d..09d7bda 100644 (file)
@@ -13,7 +13,7 @@ use constant SITEUSER_GROUP_SECT => 'BSE Siteuser groups validation';
 use BSE::Template;
 use DevHelp::Date qw(dh_parse_date_sql dh_parse_time_sql);
 
-our $VERSION = "1.006";
+our $VERSION = "1.007";
 
 my %actions =
   (
@@ -81,12 +81,8 @@ sub req_list {
   my ($class, $req, $msg) = @_;
   
   my $cgi = $req->cgi;
-  if ($msg) {
-    $msg = escape_html($msg);
-  }
-  else {
-    $msg = join("<br />", map escape_html($_), $cgi->param('m'));
-  }
+  $msg = $req->message($msg);
+
   my @users = SiteUsers->all;
   my $id = $cgi->param('id');
   defined $id or $id = '';
@@ -533,8 +529,9 @@ sub req_save {
   }
   
   my $r = $cgi->param('r');
+  $req->flash("msg:bse/admin/siteusers/usersaved", [ $user ]);
   unless ($r) {
-    $r = $req->url('siteusers', { list => 1, m => "User saved" });
+    $r = $req->cfg->admin_url2('siteusers', 'list');
   }
   $r .= "&m=".escape_uri($_) for @msgs;
 
@@ -565,16 +562,15 @@ sub req_delete {
      msg => "Member " . $user->userId . " (" . $user->id . ") deleted",
     );
 
-  my $desc = $user->describe;
+  my $logon = $user->userId;
 
   $user->remove($req->cfg);
 
-  my @msgs = "Deleted $desc";
+  $req->flash("msg:bse/admin/siteusers/userdeleted", [ $logon ]);
   my $r = $cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { list => 1 });
+    $r = $req->cfg->admin_url2('siteusers', 'list');
   }
-  $r .= "&m=".escape_uri($_) for @msgs;
 
   return $req->get_refresh($r);
 }
@@ -759,6 +755,8 @@ sub req_add {
        level => "info",
       );
 
+    $req->flash("msg:bse/admin/siteusers/usercreated", [ $user ]);
+
     my $msg;
     if ($nopassword) {
       my $code;
@@ -787,8 +785,7 @@ sub req_add {
 
     my $r = $cgi->param('r');
     unless ($r) {
-      $r = $req->url('siteusers', { list => 1, 
-                                   'm' => "User $user->{userId} added" });
+      $r = $req->cfg->admin_url2('siteusers', 'list');
     }
     $r .= "&m=".escape_uri($msg) if $msg;
     return BSE::Template->get_refresh($r, $cfg);
@@ -915,6 +912,7 @@ sub req_addgroupform {
      $req->admin_tags,
      msg=>$msg,
      message=>$msg,
+     ifError => 1,
      error_img => [ \&tag_error_img, $req->cfg, $errors ],
     );
 
@@ -932,16 +930,22 @@ sub req_addgroup {
   $req->validate(errors=>\%errors,
                 fields=>\%fields,
                 rules=>\%rules,
-                section=>SITEUSER_GROUP_SECT)
-    or return $class->req_addgroupform($req, \%errors);
-
+                section=>SITEUSER_GROUP_SECT);
   my $cgi = $req->cgi;
   my $name = $cgi->param('name');
+  unless ($errors{name}) {
+    my ($other) = BSE::TB::SiteUserGroups->getBy(name => $name);
+    $other and $errors{name} = "Group '$name' already exists";
+  }
+  keys %errors
+    and return $class->req_addgroupform($req, \%errors);
+
   my $group = BSE::TB::SiteUserGroups->add($name);
 
+  $req->flash("msg:bse/admin/siteusers/groupcreated", [ $group ]);
   my $r = $cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { a_grouplist => 1, m => "Group created" });
+    $r = $req->cfg->admin_url2('siteusers', "grouplist");
   }
   return BSE::Template->get_refresh($r, $req->cfg);
 }
@@ -973,9 +977,10 @@ sub req_savegroup {
   $group->{name} = $cgi->param('name');
   $group->save;
 
+  $req->flash("msg:bse/admin/siteusers/groupsaved", [ $group ]);
   my $r = $cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { a_grouplist => 1, m => "Group saved" });
+    $r = $req->cfg->admin_url2('siteusers', 'grouplist');
   }
   return BSE::Template->get_refresh($r, $req->cfg);
 }
@@ -1023,11 +1028,13 @@ sub req_deletegroup {
   my $group = _get_group($req, \$msg)
     or return $class->req_grouplist($req, { id=>$msg });
 
+  my $name = $group->name;
   $group->remove;
 
   my $r = $req->cgi->param('r');
+  $req->flash("msg:bse/admin/siteusers/groupdeleted", [ $name ]);
   unless ($r) {
-    $r = $req->url('siteusers', { a_grouplist => 1, m => "Group deleted" });
+    $r = $req->cfg->admin_url2('siteusers', "grouplist");
   }
   return BSE::Template->get_refresh($r, $req->cfg);
 }
@@ -1100,9 +1107,10 @@ sub req_savegroupmembers {
     }
   }
 
+  $req->flash("msg:bse/admin/siteusers/membershipsaved", [ $group ]);
   my $r = $cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { a_grouplist => 1, m => "Membership saved" });
+    $r = $req->cfg->admin_url2('siteusers', 'grouplist');
   }
   return BSE::Template->get_refresh($r, $req->cfg);
 }
@@ -1124,9 +1132,10 @@ sub req_confirm {
   $siteuser->{confirmed} = 1;
   $siteuser->save;
 
+  $req->flash("msg:bse/admin/siteusers/confirmed", [ $siteuser ]);
   my $r = $cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { list => 1, m => "User confirmed" });
+    $r = $req->cfg->admin_url2('siteusers', 'list');
   }
 
   return BSE::Template->get_refresh($r, $req->cfg);
@@ -1290,8 +1299,9 @@ sub req_adduserfile {
   }
 
   my $r = $cgi->param('r');
+  $req->flash("msg:bse/admin/siteusers/userfilecreated", [ $user, $owned_file ]);
   unless ($r) {
-    $r = $req->url('siteusers', { a_edit => 1, _t => "files", id => $user->id, m => "File created" });
+    $r = $req->cfg->admin_url2('siteusers', 'edit', { _t => "files", id => $user->id });
   }
 
   return BSE::Template->get_refresh($r, $req->cfg);
@@ -1431,9 +1441,10 @@ sub req_saveuserfile {
   $good
     or return $self->req_edituserfile($req, { _ => $@ });
   
+  $req->flash("msg:bse/admin/siteusers/userfilesaved", [ $siteuser, $file ]);
   my $r = $cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { a_edit => 1, _t => "files", id => $siteuser->id, m => "File saved" });
+    $r = $req->cfg->admin_url2('siteusers', 'edit', { _t => "files", id => $siteuser->id });
   }
 
   return BSE::Template->get_refresh($r, $req->cfg);
@@ -1452,6 +1463,7 @@ sub req_deluserfile {
   my $file = _get_user_file($req, $siteuser, \$msg)
     or return $self->req_list($req, $msg);
 
+  my $display_name = $file->display_name;
   require BSE::API;
   BSE::API->import("bse_delete_owned_file");
   my $good = eval { bse_delete_owned_file($req->cfg, $file); };
@@ -1459,9 +1471,10 @@ sub req_deluserfile {
   $good
     or return $self->req_deluserfileform($req, { _ => $@ });
 
+  $req->flash("msg:bse/admin/siteusers/userfiledeleted", [ $siteuser, $display_name ]);
   my $r = $req->cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { a_edit => 1, _t => "files", id => $siteuser->id, m => "File removed" });
+    $r = $req->cfg->admin_url2('siteusers', 'edit', { _t => "files", id => $siteuser->id });
   }
 
   return BSE::Template->get_refresh($r, $req->cfg);
@@ -1554,8 +1567,9 @@ sub req_addgroupfile {
   }
 
   my $r = $cgi->param('r');
+  $req->flash("msg:bse/admin/siteusers/groupfilecreated", [ $group, $owned_file ]);
   unless ($r) {
-    $r = $req->url('siteusers', { a_editgroup => 1, _t => "files", id => $group->id, m => "File created" });
+    $r = $req->cfg->admin_url2('siteusers', 'editgroup', { _t => "files", id => $group->id });
   }
 
   return BSE::Template->get_refresh($r, $req->cfg);
@@ -1695,9 +1709,10 @@ sub req_savegroupfile {
   $good
     or return $self->req_editgroupfile($req, { _ => $@ });
   
+  $req->flash("msg:bse/admin/siteusers/groupfilesaved", [ $group, $file ]);
   my $r = $cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { a_editgroup => 1, _t => "files", id => $group->id, m => "File saved" });
+    $r = $req->cfg->admin_url2('siteusers', 'editgroup', { _t => "files", id => $group->id });
   }
 
   return BSE::Template->get_refresh($r, $req->cfg);
@@ -1716,6 +1731,8 @@ sub req_delgroupfile {
   my $file = _get_group_file($req, $group, \$msg)
     or return $self->req_list($req, $msg);
 
+  my $display_name = $file->display_name;
+
   require BSE::API;
   BSE::API->import("bse_delete_owned_file");
   my $good = eval { bse_delete_owned_file($req->cfg, $file); };
@@ -1723,9 +1740,10 @@ sub req_delgroupfile {
   $good
     or return $self->req_delgroupfileform($req, { _ => $@ });
 
+  $req->flash("msg:bse/admin/siteusers/groupfiledeleted", [ $group, $display_name ]);
   my $r = $req->cgi->param('r');
   unless ($r) {
-    $r = $req->url('siteusers', { a_editgroup => 1, _t => "files", id => $group->id, m => "File removed" });
+    $r = $req->cfg->admin_url2('siteusers', 'editgroup', { _t => "files", id => $group->id });
   }
 
   return BSE::Template->get_refresh($r, $req->cfg);
index 497fcbb..2c2b731 100644 (file)
@@ -9,7 +9,7 @@ use overload
   "&{}" => sub { my $self = $_[0]; return sub { $self->_old_msg(@_) } },
   "bool" => sub { 1 };
 
-our $VERSION = "1.003";
+our $VERSION = "1.004";
 
 my $single;
 
@@ -134,7 +134,7 @@ sub _get_replaced {
     or return;
 
   $parms ||= [];
-  $msg->{message} =~ s/%(%|[0-9]+:[-+ #0]?[0-9]*(?:\.[0-9]+)?[duoxXfFeEgGs])/
+  $msg->{message} =~ s/%(%|[0-9]+:(?:\{\w+\})?[-+ #0]?[0-9]*(?:\.[0-9]+)?[duoxXfFeEgGs])/
     $1 eq "%" ? "%" : $self->_value($msg, $1, $parms)/ge;
 
   return $msg;
@@ -147,12 +147,20 @@ sub _value {
   $index >= 1 && $index <= @$parms
     or return "(bad index $index in %$code)";
 
+  my $method = "describe";
+  if ($format =~ s/^\{(\w+)\}//) {
+    my $work = $1;
+    unless ($work =~ /^(remove|save|new)$/) {
+      $method = $work;
+    }
+  }
+
   my $value = $parms->[$index-1];
-  if (ref $index) {
+  if (ref $value) {
     local $@;
-    my $good = eval { $value = $value->describe; 1; };
+    my $good = eval { $value = $value->$method; 1; };
     unless ($good) {
-      return "(Bad parameter $index - ref but no describe)";
+      return "(Bad parameter $index - ref but no $method)";
     }
   }
 
index 7baac5f..8b01bf7 100644 (file)
@@ -1,5 +1,5 @@
 --
-# VERSION=1.001
+# VERSION=1.002
 id: bse/
 description: BSE messages
 
@@ -143,7 +143,7 @@ description: name field error if you try to rename a tag to match another
 id: bse/admin/edit/tags/nochange
 description: name field error if no change is saved
 
-id: bse/admin/edit/category
+id: bse/admin/edit/category/
 description: Category field errors
 
 id: bse/admin/edit/category/unknown
@@ -167,7 +167,7 @@ description: Invalid shipping method, $1 is the supplied method id
 id: bse/admin/shop/saveorder/badstage
 description: Invalid order stage, $1 is the supplied stage id
 
-id: bse/admin/logon
+id: bse/admin/logon/
 description: Logon tool messages
 
 id: bse/admin/logon/logoff
@@ -176,6 +176,51 @@ description: Flashed when the admin user logs off, $1 is the logon name
 id: bse/admin/logon/needlogon
 description: Generic message when the user attempts something without being logged on
 
+id: bse/admin/siteusers/
+description: Siteuser administration messages
+
+id: bse/admin/siteusers/usersaved
+description: User saved (%1 is the user object)
+
+id: bse/admin/siteusers/userdeleted
+description: User deleted (%1 is the user logon)
+
+id: bse/admin/siteusers/usercreated
+description: User created (%1 is the user)
+
+id: bse/admin/siteusers/groupcreated
+description: Group created (%1 is the group object)
+
+id: bse/admin/siteusers/groupsaved
+description: Group created (%1 is the group object)
+
+id: bse/admin/siteusers/groupdeleted
+description: Group deleted (%1 is the group name)
+
+id: bse/admin/siteusers/userfilecreated
+description: User file added (%1 is the user object, %2 is the file object)
+
+id: bse/admin/siteusers/userfilesaved
+description: User file saved (%1 is the user object, %2 is the file object)
+
+id: bse/admin/siteusers/userfiledeleted
+description: User file deleted (%1 is the user object, %2 is the file display name)
+
+id: bse/admin/siteusers/groupfilecreated
+description: Group file added (%1 is the group object, %2 is the file object)
+
+id: bse/admin/siteusers/groupfilesaved
+description: Group file saved (%1 is the group object, %2 is the file object)
+
+id: bse/admin/siteusers/groupfiledeleted
+description: Group file deleted (%1 is the group object, %2 is the file display name)
+
+id: bse/admin/siteusers/confirmed
+description: User email confirmed (%1 is the user object)
+
+id: bse/admin/siteusers/membershipsaved
+description: Group membership saved (%1 is the group object)
+
 id: test/
 description: <<TEXT
 Test category
index 3087617..f01815e 100644 (file)
@@ -113,7 +113,7 @@ id: bse/admin/message/unknownlang
 message: Unknown language code - no entry found in [languages]
 
 id: bse/admin/message/badmultiline
-message: Message $1:s may contain only a single line of text
+message: Message %1:s may contain only a single line of text
 
 id: bse/admin/shop/saveorder/saved
 message: Order saved successfully
@@ -122,10 +122,10 @@ id: bse/admin/shop/saveorder/nochanges
 message: No changes to save
 
 id: bse/admin/shop/saveorder/badmethod
-message: Unknown shipping method '$1:s'
+message: Unknown shipping method '%1:s'
 
 id: bse/admin/shop/saveorder/badstage
-message: Unknown order stage '$1:s'
+message: Unknown order stage '%1:s'
 
 id: bse/admin/logon/logoff
 message: Administrative user '%1:s' logged off
@@ -133,6 +133,48 @@ message: Administrative user '%1:s' logged off
 id: bse/admin/logon/needlogon
 message: You need to logon to access that function
 
+id: bse/admin/siteusers/usersaved
+message: User '%1:{userId}s' saved
+
+id: bse/admin/siteusers/userdeleted
+message: User '%1:s' deleted
+
+id: bse/admin/siteusers/usercreated
+message: User '%1:{userId}s' created
+
+id: bse/admin/siteusers/groupcreated
+message: Group '%1:{name}s' created
+
+id: bse/admin/siteusers/groupdeleted
+message: Group '%1:s' deleted
+
+id: bse/admin/siteusers/groupsaved
+message: Group '%1:{name}s' saved
+
+id: bse/admin/siteusers/userfilecreated
+message: File '%2:{display_name}s' added to member %1:{userId}s
+
+id: bse/admin/siteusers/userfilesaved
+message: File '%2:{display_name}s' saved
+
+id: bse/admin/siteusers/userfiledeleted
+message: File '%2:s' deleted from member %1:{userId}s
+
+id: bse/admin/siteusers/groupfilecreated
+message: File '%2:{display_name}s' added to group %1:{name}s
+
+id: bse/admin/siteusers/groupfilesaved
+message: File '%2:{display_name}s' saved
+
+id: bse/admin/siteusers/groupfiledeleted
+message: File '%2:s' deleted from group %1:{name}s
+
+id: bse/admin/siteusers/confirmed
+message: Email address '%1:{email}s' confirmed for user '%1:{userId}s'
+
+id: bse/admin/siteusers/membershipsaved
+message: Membership saved for group '%1:{name}s'
+
 id: bse/shop/cart/empty
 message: Cart emptied
 
diff --git a/site/templates/admin/include/message.tmpl b/site/templates/admin/include/message.tmpl
new file mode 100644 (file)
index 0000000..e1e60e6
--- /dev/null
@@ -0,0 +1 @@
+<:if Message:><div class="message<:cond ifError " error" "":>"><:message:></div><:or Message:><:eif Message:>
\ No newline at end of file
index 7252334..88b8160 100644 (file)
@@ -2,16 +2,16 @@
 <h2>Add Member Group</h2>
 <p>
 | 
-<a href="/cgi-bin/admin/menu.pl">Admin menu</a>
+<a href="<:adminurl menu:>">Admin menu</a>
 |
-<a href="<:script:>">Member List</a>
+<a href="<:adminurl2 siteusers list:>">Member List</a>
 |
-<a href="<:script:>?a_grouplist=1">Group List</a>
+<a href="<:adminurl2 siteusers grouplist:>">Group List</a>
 |
 </p>
-<:ifMsg:><p><:msg:></p><:or:><:eif:>
+<:include admin/include/message.tmpl:>
 
-<form method="post" action="<:script:>" name="addgroup">
+<form method="post" action="<:adminurl siteusers:>" name="addgroup">
 <table>
 <tr>
   <th>Group Name:</th>
@@ -19,8 +19,7 @@
   <td><:error_img name:></td>
 </tr>
 <tr>
-  <td colspan="2"><input type="submit" name="a_addgroup" value="Add Group" /></td>
-  <td>&nbsp;</td>
+  <td colspan="3" class="buttons"><input type="submit" name="a_addgroup" value="Add Group" /></td>
 </tr>
 </table>
 </form>
\ No newline at end of file