[rt #1209] allow @NO_DELETE in bse.cfg
authorTony Cook <tony@develop-help.com>
Wed, 4 Jan 2012 00:21:37 +0000 (11:21 +1100)
committerTony Cook <tony@develop-help.com>
Wed, 4 Jan 2012 00:21:37 +0000 (11:21 +1100)
Add [undeletable articles] section.  For now this is a supplement, but
@NO_DELETE will be removed in a future release.

site/cgi-bin/bse.cfg
site/cgi-bin/modules/BSE/Edit/Article.pm
site/cgi-bin/modules/BSE/Permissions.pm
site/cgi-bin/modules/Constants.pm
site/docs/config.pod

index 457924b..2d11e40 100644 (file)
@@ -460,3 +460,8 @@ common/default.tmpl=Default template
 [nightly work]
 bse_session_clean=1
 bse_audit_log_clean=1
+
+[undeletable articles]
+1=home page
+2=more home page
+5=sidebar
index 1d003d6..ee038ff 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.017";
+our $VERSION = "1.018";
 
 =head1 NAME
 
@@ -4606,7 +4606,8 @@ sub can_remove {
     $$rcode = "CHILDREN";
     return;
   }
-  if (grep $_ == $article->{id}, @Constants::NO_DELETE) {
+  if (grep($_ == $article->{id}, @Constants::NO_DELETE)
+     || $req->cfg->entry("undeletable articles", $article->{id})) {
     $$rmsg = "Sorry, these pages are essential to the site structure - they cannot be deleted";
     $$rcode = "ESSENTIAL";
     return;
index 4406ef3..9cf8346 100644 (file)
@@ -1,7 +1,7 @@
 package BSE::Permissions;
 use strict;
 
-our $VERSION = "1.000";
+our $VERSION = "1.001";
 
 # these are the permissions that are checked beyond just whether the permissions DB allows them
 my @checks =
@@ -399,7 +399,8 @@ sub check_edit_delete_article {
     $$rmsg = "This article has children.  You must delete the children first (or change their parents)";
     return;
   }
-  if (grep $_ == $article->{id}, @Constants::NO_DELETE) {
+  if (grep($_ == $article->{id}, @Constants::NO_DELETE)
+     || $self->{cfg}->entry("undeletable articles", $article->{id})) {
     $$rmsg = "Sorry, these pages are essential to the site structure - they cannot be deleted";
     return;
   }
index 831b0ff..c217cc6 100644 (file)
@@ -1,7 +1,7 @@
 package Constants;
 use strict;
 
-our $VERSION = "1.001";
+our $VERSION = "1.002";
 
 # this needs to be re-organized
 use vars qw(@EXPORT_OK %EXPORT_TAGS @ISA $VERSION 
@@ -168,6 +168,7 @@ $SEARCH_TITLE_IMAGE = "";
 # articles that cannot be deleted
 # you don't need to include the shop ids here, they are always 
 # protected
+# This is deprecated, use [undeletable articles] instead
 @NO_DELETE = ( 1, 2, 5 );
 
 # you can use the following to add local body formatting tags without
index 5945738..f0b456b 100644 (file)
@@ -2642,6 +2642,18 @@ where 10 is the id of the article being edited.
 
 Keys with a prefix of C<bse_> are reserved for BSE internal use.
 
+=head2 [undeletable articles]
+
+Keys are the ids of articles that may not be deleted.
+
+This applies if the value of the entry is a true perl value.
+
+  [undeletable articles]
+  1=home page
+  2=more home page
+  ; article 3 is deletable
+  3=
+
 =head1 AUTHOR
 
 Tony Cook <tony@develop-help.com>