[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 457924b14f751f663e3e2b43385c5fcaa5b7017a..2d11e40616ff701c272d24f3e3c98217879cdc03 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 1d003d6abe7416982310c3fc03511931448664cc..ee038ff95487cb0d7139672b5b43135601a6d8c8 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 4406ef3db1a22bb2c3a88d4202132e0fbb4fdd2c..9cf83465abcac201bf05e8241d1fc66184c6985e 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 831b0ff95cee37e74e69a5d1b376f12f5f7a7d0a..c217cc6a2607c4a7f88af9749c9d623cb55f91e4 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 59457383ad5f441a8969d874e7afa1a6e46de74f..f0b456ba3870dbf9b755cd66e7cc11f0d2201723 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>