various small file management UI improvements
authorTony Cook <tony@develop-help.com>
Thu, 29 Sep 2011 14:43:55 +0000 (00:43 +1000)
committerTony Cook <tony@develop-help.com>
Thu, 29 Sep 2011 14:43:55 +0000 (00:43 +1000)
- saving multiple files - success message indicates how many were saved

- saving one file - success message indicates what file was saved

- if the file is missing from the file system, display an alert

MANIFEST
site/cgi-bin/modules/BSE/Edit/Article.pm
site/data/db/bse_msg_base.data
site/data/db/bse_msg_defaults.data
site/htdocs/css/admin.css
site/htdocs/images/admin/alert.png [new file with mode: 0644]
site/templates/admin/filelist.tmpl

index 4b26fd7..dcdbfc2 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -424,6 +424,7 @@ site/htdocs/css/sadmin.css
 site/htdocs/css/style-main.css
 site/htdocs/favicon.ico
 site/htdocs/images/50.png
+site/htdocs/images/admin/alert.png
 site/htdocs/images/admin/busy.gif
 site/htdocs/images/admin/checked.gif
 site/htdocs/images/admin/error.gif
index f59f685..42ce029 100644 (file)
@@ -15,7 +15,7 @@ use DevHelp::Date qw(dh_parse_date dh_parse_sql_date);
 use List::Util qw(first);
 use constant MAX_FILE_DISPLAYNAME_LENGTH => 255;
 
-our $VERSION = "1.012";
+our $VERSION = "1.013";
 
 =head1 NAME
 
@@ -1273,6 +1273,12 @@ sub low_edit_tags {
       single => "file_meta",
       nocache => 1,
      ),
+     ifFileExists => sub {
+       @files && $file_index >= 0 && $file_index < @files
+        or return 0;
+
+       return -f ($files[$file_index]->full_filename($cfg));
+     },
      file_display => [ tag_file_display => $self, \@files, \$file_index ],
      DevHelp::Tags->make_iterator2
      (\&iter_admin_users, 'iadminuser', 'adminusers'),
@@ -3961,9 +3967,11 @@ sub filesave {
   my @old_files;
   my @new_files;
   my %store_anyway;
+  my $change_count = 0;
   my @content_changed;
   for my $file (@files) {
     my $id = $file->{id};
+    my $orig = $file->data_only;
     my $desc = $cgi->param("description_$id");
     defined $desc and $file->{description} = $desc;
     my $type = $cgi->param("contentType_$id");
@@ -4054,6 +4062,15 @@ sub filesave {
        $errors{"file_$id"} = "Filename too long";
       }
     }
+
+    my $new = $file->data_only;
+  COLUMN:
+    for my $col ($file->columns) {
+      if ($new->{$col} ne $orig->{$col}) {
+       ++$change_count;
+       last COLUMN;
+      }
+    }
   }
   for my $name (keys %names) {
     if (@{$names{$name}} > 1) {
@@ -4068,7 +4085,12 @@ sub filesave {
 
     return $self->edit_form($req, $article, $articles, undef, \%errors);
   }
-  $req->flash('File information saved');
+  if ($change_count) {
+    $req->flash("msg:bse/admin/edit/file/save/success_count", [ $change_count ]);
+  }
+  else {
+    $req->flash("msg:bse/admin/edit/file/save/success_none");
+  }
   my $mgr = $self->_file_manager($self->cfg);
   for my $file (@files) {
     $file->save;
@@ -4516,7 +4538,7 @@ sub req_save_file {
   $file->set_handler($self->cfg);
   $file->save;
 
-  $req->flash('File information saved');
+  $req->flash("msg:bse/admin/edit/file/save/success", [ $file->displayName ]);
   my $mgr = $self->_file_manager($self->cfg);
 
   my $storage = $cgi->param('storage');
index 525fb66..9565003 100644 (file)
@@ -95,6 +95,15 @@ description: Article file manipulation
 id: bse/admin/edit/file/save/
 description: Saving an article file
 
+id: bse/admin/edit/file/save/success_count
+description: Successfully saved changes to several files (%1 is the count)
+
+id: bse/admin/edit/file/save/success_none
+description: Successfully saved changes, but there were no changes
+
+id: bse/admin/edit/file/save/success
+description: Successfully saved changes to a single file (%1 is the new display name)
+
 id: bse/admin/edit/file/save/savetostore
 description: If the file couldn't saved to an external store ($1 - the back end error message)
 
index 31bd916..79276ab 100644 (file)
@@ -49,6 +49,15 @@ message: Could not save image to external store: %1:s
 id: bse/admin/edit/image/save/delfromstore
 message: Could not delete image from external store: %1:s
 
+id: bse/admin/edit/file/save/success_count
+message: Saved changes to %1:d files
+
+id: bse/admin/edit/file/save/success_none
+message: No changes found to save
+
+id: bse/admin/edit/file/save/success
+message: Saved changes to file '%1:s'
+
 id: bse/admin/edit/file/save/savetostore
 message: Could not save file to external store: %1:s
 
index 138f137..22a1709 100644 (file)
@@ -347,6 +347,13 @@ img.bse_image_thumb {
   color: red;
 }
 
+span.alert {
+  padding-left: 18px;
+  background: url(/images/admin/alert.png) center left no-repeat;
+  color: red;
+  font-weight: bold;
+}
+
 .wind
 {
   border: 1px solid #888;
diff --git a/site/htdocs/images/admin/alert.png b/site/htdocs/images/admin/alert.png
new file mode 100644 (file)
index 0000000..82e9c80
Binary files /dev/null and b/site/htdocs/images/admin/alert.png differ
index c677ab4..c9548db 100644 (file)
             <td class="col_filename" rowspan="2"> <:file displayName:><:ifUserCan edit_files_save:article:>
             <br /><input type="file" name="file_<:file id:>" /><:error_img [concatenate file_ [file id]:>
 <:or:><:eif:>
+<:ifFileExists:><:or:><br /><span class="alert">This file is missing!</span><:eif:>
 </td>
             <td class="col_description"> 
               <:ifUserCan edit_files_save:article:><input name="description_<:file id:>" type="text" value="<: oldi [concatenate description_ [file id]] 0 file description :>" size="35" />