diff -Nur -x '*.orig' -x '*.rej' smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify mezzanine_patched_smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify
--- smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify 2010-03-08 10:45:06.000000000 +0100
+++ mezzanine_patched_smeserver-shared-folders-0.1/root/etc/e-smith/events/actions/share-modify 2010-03-08 10:40:59.000000000 +0100
@@ -40,6 +40,8 @@
my $share = $accountdb->get($shareName) or
die "Couldn't find $shareName record in accounts db\n";
+my $perm = $share->prop('ManualPermissions') || 'no';
+
die "Account $shareName is not an share account; modify share event failed.\n"
unless ($share->prop('type') eq 'share');
@@ -127,11 +129,14 @@
}
# Purge Old ACLs before defining new ones
+# Don't reset permissions if ManualPermissions is set to 'yes'
-system($setfacl,
+unless ( $perm eq 'yes' || $perm eq 'enabled' ){
+ system($setfacl,
'-R',
'--remove-all',
'.');
-find(\&process, glob("./"));
+ find(\&process, glob("./"));
+}
diff -Nur -x '*.orig' -x '*.rej' smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares mezzanine_patched_smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares
--- smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares 2010-03-08 10:45:06.000000000 +0100
+++ mezzanine_patched_smeserver-shared-folders-0.1/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/shares 2010-03-08 10:44:49.000000000 +0100
@@ -356,4 +356,10 @@
+
+ MANUAL_PERMS
+
+ Permissions on this shared folder are managed manually, you cannot change it.
]]>
+
+
diff -Nur -x '*.orig' -x '*.rej' smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm mezzanine_patched_smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm
--- smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm 2010-03-08 10:45:06.000000000 +0100
+++ mezzanine_patched_smeserver-shared-folders-0.1/root/usr/lib/perl5/site_perl/esmith/FormMagick/Panel/shares.pm 2010-03-08 10:40:59.000000000 +0100
@@ -218,6 +218,8 @@
($rec->prop('Indexes') || 'enabled'));
$q->param(-name=>'dynamic',-value=>
($rec->prop('DynamicContent') || 'disabled'));
+ $q->param(-name=>'manualPerm',-value=>
+ ($rec->prop('ManualPermissions') || 'no'));
}
}
else {
@@ -243,39 +245,44 @@
my $WriteGroups = $q->param('WriteGroups') || '';
my $ReadGroups = $q->param('ReadGroups') || '';
my $share = $q->param('share');
+ my $manualPerm = $q->param('manualPerm') || '';
- my %WriteGroups;
- my %ReadGroups;
- foreach my $group ( split ( /[,;]/, $WriteGroups ) ) {
- $WriteGroups{$group} = 1;
- }
- foreach my $group ( split ( /[,;]/, $ReadGroups ) ) {
- $ReadGroups{$group} = 1;
- }
- my @groups = sort { $a->key() cmp $b->key() } $accountdb->groups();
-
- my $out = "
" .
- $fm->localise('PERMISSIONS') .
- " | \n".
- $q->start_table({-class => "sme-border"})."\n".
- $q->Tr(
- esmith::cgi::genSmallCell($q, $fm->localise('GROUPS'),"header"),
- esmith::cgi::genSmallCell($q, $fm->localise('WRITE_PERM'),"header"),
- esmith::cgi::genSmallCell($q, $fm->localise('READ_PERM'),"header")
- );
-
- foreach my $group (@groups) {
- my $write = "";
- my $read = "";
- my $name = $group->key();
- if ( $WriteGroups{$name} ) {
- $write = "checked";
+ if (($manualPerm eq 'yes') || ($manualPerm eq 'enabled')){
+ return $fm->localise('MANUAL_PERMS');
+ }
+ else {
+ my %WriteGroups;
+ my %ReadGroups;
+ foreach my $group ( split ( /[,;]/, $WriteGroups ) ) {
+ $WriteGroups{$group} = 1;
}
- if ( $ReadGroups{$name} ) {
- $read = "checked";
+ foreach my $group ( split ( /[,;]/, $ReadGroups ) ) {
+ $ReadGroups{$group} = 1;
}
+ my @groups = sort { $a->key() cmp $b->key() } $accountdb->groups();
+
+ my $out = " |
" .
+ $fm->localise('PERMISSIONS') .
+ " | \n".
+ $q->start_table({-class => "sme-border"})."\n".
+ $q->Tr(
+ esmith::cgi::genSmallCell($q, $fm->localise('GROUPS'),"header"),
+ esmith::cgi::genSmallCell($q, $fm->localise('WRITE_PERM'),"header"),
+ esmith::cgi::genSmallCell($q, $fm->localise('READ_PERM'),"header")
+ );
- $out .= $q->Tr(
+ foreach my $group (@groups) {
+ my $write = "";
+ my $read = "";
+ my $name = $group->key();
+ if ( $WriteGroups{$name} ) {
+ $write = "checked";
+ }
+ if ( $ReadGroups{$name} ) {
+ $read = "checked";
+ }
+
+ $out .= $q->Tr(
esmith::cgi::genSmallCell($q, $name, "normal"),
esmith::cgi::genSmallCell($q,"", "normal")
);
- }
+ }
- $out .= " |
\n";
- return $out;
+ $out .= "\n";
+ return $out;
+ }
}
# Print a section bar