From: Dominik Csapak <d.csapak@proxmox.com>
To: pmg-devel@lists.proxmox.com
Subject: [pmg-devel] [PATCH pmg-api 3/4] fix #2606: ruledb disclaimer: add ability to add on top
Date: Tue, 9 Jan 2024 14:59:03 +0100 [thread overview]
Message-ID: <20240109135906.66200-4-d.csapak@proxmox.com> (raw)
In-Reply-To: <20240109135906.66200-1-d.csapak@proxmox.com>
there are usecases, where one wants to embed a disclaimer (or similar)
text or html at the beginning of the mail content, not at the end.
so introduce a 'top' parameter for the disclaimer that does exactly
that. we save it in the `Attribut` table when set.
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
src/PMG/RuleDB/Disclaimer.pm | 51 ++++++++++++++++++++++++++++++++----
1 file changed, 46 insertions(+), 5 deletions(-)
diff --git a/src/PMG/RuleDB/Disclaimer.pm b/src/PMG/RuleDB/Disclaimer.pm
index 24efa8a..95e8b31 100644
--- a/src/PMG/RuleDB/Disclaimer.pm
+++ b/src/PMG/RuleDB/Disclaimer.pm
@@ -49,7 +49,7 @@ If this e-mail or attached files contain information which do not relate to our
_EOD_
sub new {
- my ($type, $value, $ogroup) = @_;
+ my ($type, $value, $ogroup, $top) = @_;
my $class = ref($type) || $type;
@@ -58,6 +58,7 @@ sub new {
my $self = $class->SUPER::new($class->otype(), $ogroup);
$self->{value} = $value;
+ $self->{top} = $top;
return $self;
}
@@ -69,7 +70,20 @@ sub load_attr {
defined($value) || die "undefined object attribute: ERROR";
- my $obj = $class->new(decode('UTF-8', $value), $ogroup);
+ my $sth = $ruledb->{dbh}->prepare(
+ "SELECT * FROM Attribut WHERE Object_ID = ?");
+
+ $sth->execute($id);
+
+ my $top = 0;
+
+ while (my $ref = $sth->fetchrow_hashref()) {
+ $top = $ref->{value} if $ref->{name} eq 'top';
+ }
+
+ $sth->finish();
+
+ my $obj = $class->new(decode('UTF-8', $value), $ogroup, $top);
$obj->{id} = $id;
@@ -96,6 +110,9 @@ sub save {
"UPDATE Object SET Value = ? WHERE ID = ?",
undef, $value, $self->{id});
+ $ruledb->{dbh}->do(
+ "DELETE FROM Attribut WHERE Name = ? and Object_ID = ?",
+ undef, 'top', $self->{id});
} else {
# insert
@@ -108,6 +125,12 @@ sub save {
$self->{id} = PMG::Utils::lastid($ruledb->{dbh}, 'object_id_seq');
}
+ if (defined($self->{top})) {
+ $ruledb->{dbh}->do(
+ "INSERT INTO Attribut (Value, Name, Object_ID) VALUES (?, ?, ?)",
+ undef, $self->{top}, 'top', $self->{id});
+ }
+
return $self->{id};
}
@@ -134,13 +157,19 @@ sub add_data {
my $newfh = $body->open ("w") || return undef;
+ if ($self->{top}) {
+ $newfh->print($data);
+ }
+
while (defined($_ = $fh->getline())) {
$newfh->print($_); # copy contents
}
$newfh->print("\n"); # add final \n
- $newfh->print($data);
+ if (!$self->{top}) {
+ $newfh->print($data);
+ }
$newfh->close || return undef;
@@ -197,8 +226,12 @@ sub execute {
foreach my $ta (@$subgroups) {
my ($tg, $entity) = (@$ta[0], @$ta[1]);
-
- my $html = "<br>--<br>" . PMG::Utils::subst_values ($self->{value}, $vars);
+ my $html;
+ if ($self->{top}) {
+ $html = PMG::Utils::subst_values ($self->{value}, $vars) . "<br>--<br>";
+ } else {
+ $html = "<br>--<br>" . PMG::Utils::subst_values ($self->{value}, $vars);
+ }
my $text = "";
my $parser = HTML::Parser->new(
@@ -232,6 +265,12 @@ sub properties {
type => 'string',
maxLength => 2048,
},
+ top => {
+ description => "Put the disclaimer on top of the mail body, instead of the bottom.",
+ type => 'boolean',
+ optional => 1,
+ default => 0,
+ },
};
}
@@ -240,6 +279,7 @@ sub get {
return {
disclaimer => $self->{value},
+ top => $self->{top},
};
}
@@ -247,6 +287,7 @@ sub update {
my ($self, $param) = @_;
$self->{value} = $param->{disclaimer};
+ $self->{top} = $param->{top};
}
1;
--
2.30.2
next prev parent reply other threads:[~2024-01-09 13:59 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-09 13:59 [pmg-devel] [PATCH pmg-api/gui] ruledb disclaimer improvements Dominik Csapak
2024-01-09 13:59 ` [pmg-devel] [PATCH pmg-api 1/4] ruledb disclaimer: cleanup trailing whitespace Dominik Csapak
2024-01-12 15:47 ` [pmg-devel] applied: " Thomas Lamprecht
2024-01-09 13:59 ` [pmg-devel] [PATCH pmg-api 2/4] ruledb disclaimer: if/elsif code cleanup Dominik Csapak
2024-01-12 15:47 ` [pmg-devel] applied: " Thomas Lamprecht
2024-01-09 13:59 ` Dominik Csapak [this message]
2024-01-09 13:59 ` [pmg-devel] [PATCH pmg-api 4/4] fix #2430: ruledb disclaimer: make separator configurable Dominik Csapak
2024-01-09 13:59 ` [pmg-devel] [PATCH pmg-gui 1/2] disclaimer edit: add 'top' checkbox Dominik Csapak
2024-01-12 16:00 ` Thomas Lamprecht
2024-01-09 13:59 ` [pmg-devel] [PATCH pmg-gui 2/2] disclaimer edit: add 'add-separator' checkbox Dominik Csapak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240109135906.66200-4-d.csapak@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=pmg-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox