/[smecontribs]/rpms/smeserver-domains/contribs10/smeserver-domains-1.4-Update-Panels-for-Server-Manager2.patch
ViewVC logotype

Annotation of /rpms/smeserver-domains/contribs10/smeserver-domains-1.4-Update-Panels-for-Server-Manager2.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Thu Jul 23 13:52:50 2020 UTC (3 years, 10 months ago) by brianr
Branch: MAIN
CVS Tags: smeserver-domains-1_4-3, smeserver-domains-1_4-2, smeserver-domains-1_4-6, smeserver-domains-1_4-5, smeserver-domains-1_4-4, HEAD
* Wed Jul 22 2020 Brian Read <brianr@bjsystems.co.uk> 1.4-2.sme
- Update for Server-Manager2 panels[SME:10950 ]

1 brianr 1.1 diff -urN smeserver-domains-1.4.old/root/usr/share/smanager/lib/SrvMngr/Controller/Dungog_domains.pm smeserver-domains-1.4/root/usr/share/smanager/lib/SrvMngr/Controller/Dungog_domains.pm
2     --- smeserver-domains-1.4.old/root/usr/share/smanager/lib/SrvMngr/Controller/Dungog_domains.pm 1970-01-01 01:00:00.000000000 +0100
3     +++ smeserver-domains-1.4/root/usr/share/smanager/lib/SrvMngr/Controller/Dungog_domains.pm 2020-07-22 09:14:00.000000000 +0100
4     @@ -0,0 +1,407 @@
5     +package SrvMngr::Controller::Dungog_domains;
6     +#----------------------------------------------------------------------
7     +# heading : Administration
8     +# description : Domain pseudonyms
9     +# navigation : 4000 4736
10     +#
11     +# name : Dungog_domainsget, method : get, url : /dungog_domains, ctlact : Dungog_domains#main
12     +# name : Dungog_domainspost,method : post, url : /dungog_domains, ctlact : Dungog_domains#do_Save
13     +# name : Dungog_domains1, method : get, url : /dungog_domains1, ctlact : Dungog_domains#do_Email
14     +# name : Dungog_domains2, method : get, url : /dungog_domains2, ctlact : Dungog_domains#do_Options
15     +# name : Dungog_domains3, method : get, url : /dungog_domains3, ctlact : Dungog_domains#do_AddPseudo
16     +# name : Dungog_domains4, method : get, url : /dungog_domains4, ctlact : Dungog_domains#do_DelPseudo
17     +# routes : end
18     +#
19     +# Documentation : https://wiki.contribs.org/Domains
20     +#----------------------------------------------------------------------
21     +
22     +use strict;
23     +use warnings;
24     +use Mojo::Base 'Mojolicious::Controller';
25     +
26     +use Locale::gettext;
27     +use SrvMngr::I18N;
28     +use SrvMngr qw(theme_list init_session);
29     +
30     +use Data::Dumper;
31     +use esmith::util;
32     +use esmith::HostsDB;
33     +use esmith::AccountsDB;
34     +
35     +our $db = esmith::ConfigDB->open();
36     +our $adb = esmith::AccountsDB->open();
37     +
38     +use constant FALSE => 0;
39     +use constant TRUE => 1;
40     +
41     +our $domaindb = esmith::ConfigDB->open('/home/e-smith/db/domains')
42     + or die "Unable to open domains db";
43     +
44     +our $dungogdb = esmith::ConfigDB->open('/home/e-smith/db/dungog')
45     + or die("Unable to open dungog db"); #Created by rpm
46     +
47     +my %ddo_datas = ();
48     +
49     +sub main {
50     + #
51     + # Main Panel
52     + #
53     + my $c = shift;
54     + $c->app->log->info( $c->log_req );
55     +
56     + my $title = $c->l('ddo_title');
57     + my $modul = '';
58     +
59     + $ddo_datas{first} = 'ddo_Intro';
60     + $ddo_datas{trt} = 'LIST';
61     +
62     + my @domains = get_domain_table($c);
63     + my $empty = ( scalar @domains == 0 ); #Always be at least one?
64     +
65     + $c->stash(
66     + title => $title,
67     + modul => $modul,
68     + ddo_datas => \%ddo_datas,
69     + domains => \@domains,
70     + empty => $empty
71     + );
72     +
73     + $c->render( template => 'dungog_domains' );
74     +
75     +}
76     +
77     +sub do_Save {
78     +
79     + #
80     + # Save pressed
81     + #
82     + # Just Save data, restart email and log success
83     + # .. and return to main panel
84     + #
85     + my $c = shift;
86     + $c->app->log->info( $c->log_req );
87     +
88     + my $title = $c->l('ddo_title');
89     + my $modul = '';
90     + my $domain = $c->param("domain");
91     + #die("Save:$domain");
92     +
93     + # Save it in here..
94     + my $trt = $c->param("trt");
95     + if ( $trt eq "SERVER" ) {
96     + my $MailServer = $c->param('MailServer') || '';
97     + #die($MailServer);
98     + unless ( $MailServer eq 'skipMS' ) {
99     + if ( $MailServer eq '' ) {
100     + $domaindb->delete_prop( $domain, 'MailServer' );
101     + }
102     + else {
103     + $domaindb->set_prop( $domain, 'MailServer', $MailServer );
104     + }
105     + }
106     +
107     + system( "/sbin/e-smith/signal-event", "email-update" ) == 0
108     + or die("Error occurred while restarting email.\n");
109     + }
110     + elsif ( $trt eq 'OPTIONS' ) {
111     + my $owner = $c->param('Owner');
112     + my $group = $c->param('Group');
113     +
114     + #Check exists and create if necessary
115     + my $rec = $dungogdb->get($domain)
116     + || $dungogdb->new_record( $domain, { type => 'domain' } );
117     + $dungogdb->set_prop( $domain, 'owner', $owner );
118     + $dungogdb->set_prop( $domain, 'group', $group );
119     + }
120     + elsif ( $trt eq 'EMAIL' ) {
121     + my $resmsg = perform_pseudo_save($c);
122     + if ( $resmsg ne "ok" ) {
123     + $ddo_datas{error} = $resmsg; #Error Message
124     + do_AddPseudo($c);
125     + return
126     + } else {
127     + $ddo_datas{success} = 'ddo_SUCCESS';
128     + do_Email($c);
129     + return
130     + }
131     +
132     + }
133     + $ddo_datas{success} = 'ddo_SUCCESS';
134     + $ddo_datas{trt} = 'LIST';
135     + my @domains = get_domain_table($c);
136     + my $empty = ( scalar @domains == 0 ); #Always be at least one?
137     + $c->stash(
138     + title => $title,
139     + modul => $modul,
140     + ddo_datas => \%ddo_datas,
141     + domains => \@domains,
142     + empty => $empty
143     + );
144     + $c->render( template => 'dungog_domains' );
145     +
146     +}
147     +
148     +sub perform_pseudo_save {
149     + #
150     + # Save or create a new pseudonymn
151     + # mode = new or modify
152     + my $c = shift;
153     + my $domain = $c->param('domain');
154     + my $acct = $c->param('LocalAccount');
155     + my $pseu = $c->param('pseudo');
156     + my $Pseudonym = "$pseu\@$domain";
157     + my $mode = $c->param('mode') | 'modify';
158     + my $oldpseudo = $c->param('oldpseudo');
159     +
160     + # get all pseudonyms for this domain
161     + my @vdemail = ();
162     + foreach my $account ( $adb->get_all_by_prop($domain,type=>'pseudonym') ) {
163     + push( @vdemail, $account->key );
164     + }
165     +
166     + #don't overwite existing users
167     + if ( $mode eq 'new' ) {
168     + foreach (@vdemail) {
169     + if ( $_ eq $pseu ) {
170     + return 'ddo_pseudo_already_exists';
171     + }
172     + }
173     + }
174     +
175     + if ( $pseu =~ /^([a-zA-Z0-9][\-\_\.a-zA-Z0-9]*)$/ ) {
176     + $pseu = $1;
177     + }
178     + else {
179     + return $c->l( 'ddo_pseudo_unexpected_character', $pseu );
180     + }
181     +
182     + if ( $acct eq '' ) {
183     + return 'ddo_need_local_account';
184     + }
185     +
186     + #Create it if necessary
187     + my $rec = $adb->get($Pseudonym)
188     + || $adb->new_record( $Pseudonym, { type => 'pseudonym' } );
189     +
190     + $adb->set_prop( $Pseudonym, 'Account', $acct );
191     +
192     + #we changed the Pseudonym, so delete the old
193     + if ($oldpseudo ne ''){
194     + if ( $mode eq 'modify' and $oldpseudo ne $pseu) {
195     + my $delpseudo = "$oldpseudo\@$domain";
196     + if (my $delkey = $adb->get($delpseudo)) {
197     + $delkey->delete or die("Unable to delete $Pseudonym from accounts:".$delkey->key);
198     + }
199     + }
200     + }
201     + return "ok";
202     +}
203     +
204     +sub do_Email {
205     +
206     + my $c = shift;
207     + $c->app->log->info( $c->log_req );
208     +
209     + my %ddo_datas = ();
210     + my $title = $c->l('ddo_Email_Title');
211     + my $modul = '';
212     +
213     + my $domain = $c->param("domain");
214     + my $MailServer = $domaindb->get_prop($domain, 'MailServer');
215     + my @pseudos = get_domain_pseudonyms( $c, $domain );
216     + my $empty = ( scalar @pseudos == 0 );
217     + $ddo_datas{trt} = 'EMAIL';
218     + $ddo_datas{mailserver} = $MailServer;
219     +
220     + $c->stash(
221     + title => $title,
222     + modul => $modul,
223     + ddo_datas => \%ddo_datas,
224     + pseudos => \@pseudos,
225     + empty => $empty
226     + );
227     + $c->render( template => 'dungog_domains' );
228     +}
229     +
230     +sub do_Options {
231     +
232     + my $c = shift;
233     + $c->app->log->info( $c->log_req );
234     +
235     + my $title = $c->l('ddo_modify_options_TITLE');
236     + my $modul = '';
237     +
238     + #Data for selection controls
239     + my $domain = $c->param("domain");
240     + my $owner = $dungogdb->get_prop( $domain, "owner" ) || 'admin';
241     + my $group = $dungogdb->get_prop( $domain, "group" ) || 'everyone';
242     + if ( $group eq 'Administrator' ) {
243     + $group = $owner;
244     + }
245     +
246     + my @userlist = ( 'admin', 'everyone' );
247     + my @grouplist = ( 'everyone', 'Administrator' );
248     + push( @userlist, '-- groups --' );
249     + foreach ( sort $adb->get_all_by_prop( type => 'group' ) ) {
250     + push( @userlist, $_->key );
251     + push( @grouplist, $_->key );
252     +
253     + }
254     + push( @userlist, '-- users --' );
255     + foreach ( sort $adb->get_all_by_prop( type => 'user' ) ) {
256     + push( @userlist, $_->key );
257     + }
258     +
259     + $ddo_datas{trt} = 'OPTIONS';
260     + $ddo_datas{owner} = $owner;
261     + $ddo_datas{group} = $group;
262     +
263     + $c->stash(
264     + title => $title,
265     + modul => $modul,
266     + ddo_datas => \%ddo_datas,
267     + grouplist => \@grouplist,
268     + userlist => \@userlist
269     + );
270     + $c->render( template => 'dungog_domains' );
271     +}
272     +
273     +sub do_DelPseudo {
274     + #
275     + # Delete pseudonym
276     + #
277     + my $c = shift;
278     + $c->app->log->info( $c->log_req );
279     +
280     + my $title = $c->l('ddo_title');
281     + my $modul = '';
282     +
283     + # Delete it in here..
284     + my $pseu = $c->param('pseudo');
285     + my $domain = $c->param('domain');
286     + my $Pseudonym = "$pseu\@$domain";
287     +
288     + my $delkey = $adb->get("$Pseudonym") or die("Unable to find $Pseudonym in accounts");
289     + $delkey->delete or die("Unable to delete $Pseudonym from accounts:".$delkey->key);
290     +
291     + $ddo_datas{success} = 'ddo_Delete_successful';
292     + $ddo_datas{trt} = 'EMAIL';
293     +
294     + do_Email($c);
295     +}
296     +
297     +sub do_AddPseudo {
298     + #
299     + # Add or edit pseudonym
300     + #
301     +
302     + my $c = shift;
303     + $c->app->log->info( $c->log_req );
304     +
305     + my $title = $c->l('ddo_Edit_Title');
306     + my $modul = '';
307     + my $domain = $c->param("domain");
308     + my @accts = get_accts( $c, $domain );
309     + $c->stash(
310     + title => $title,
311     + modul => $modul,
312     + ddo_datas => \%ddo_datas,
313     + accts => \@accts
314     + );
315     + $ddo_datas{trt} = 'ADD';
316     + $c->render( template => 'dungog_domains' );
317     +
318     +}
319     +
320     +sub get_domain_pseudonyms {
321     + my ( $c, $domain ) = @_;
322     +
323     + # get all pseudonyms
324     + my @vdemail = ();
325     +
326     + foreach my $record ( $adb->get_all_by_prop( type => 'pseudonym' ) ) {
327     + my $key = $record->key;
328     + push( @vdemail, $key );
329     + }
330     +
331     + # find email for this domain
332     + my @vdemail2 = ();
333     + foreach (@vdemail) {
334     + ( my $u, my $d ) = split( /@/, $_ );
335     + my $acct = $adb->get_prop( "$_", "Account" ) || '';
336     + my %thisrow = ( 'Pseudonym' => $u, "user" => $acct );
337     + push( @vdemail2, \%thisrow ) if ( $d eq $domain );
338     + }
339     +
340     + return @vdemail2;
341     +
342     +}
343     +
344     +sub get_domain_table {
345     + #
346     + # Return full table of all domains OR just the details for the specified one
347     + #
348     + my ( $c, $findDomain ) = @_; #$c and domain to find
349     + $findDomain = FALSE if ( scalar(@_) <= 1 );
350     + my $key;
351     + my @virtualDomains = ();
352     + foreach my $domain ( $domaindb->get_all_by_prop( type => 'domain' ) ) {
353     + $key = $domain->key;
354     + push( @virtualDomains, $key );
355     + }
356     + my $numDomains = @virtualDomains;
357     + if ( $numDomains == 0 ) { return () }
358     + else {
359     + my $domain;
360     + my @virtualDomains2d = ();
361     +
362     + foreach $domain ( sort @virtualDomains ) {
363     + my %properties = $domaindb->get($domain)->props;
364     + my $test = $domaindb->get_prop( $domain, "dns" ) || '';
365     + my $owner = $dungogdb->get_prop( $domain, "owner" ) || 'admin';
366     + my $group = $dungogdb->get_prop( $domain, "group" ) || 'everyone';
367     + my %thisrow;
368     +
369     + %thisrow = (
370     + "Domain" => $domain,
371     + "Description" => $properties{'Description'},
372     +
373     + #"Content" => $content,
374     + "Delegation" => "$owner" . '::' . "$group"
375     + );
376     + push( @virtualDomains2d, \%thisrow );
377     +
378     + if ($findDomain) {
379     + if ( $domain eq $findDomain ) {
380     + @virtualDomains2d = (); #Just return matching one
381     + push( @virtualDomains2d, \%thisrow );
382     + last;
383     + }
384     + } #Found the one needed
385     + }
386     + return @virtualDomains2d; #Return the lot
387     + }
388     +}
389     +
390     +sub get_accts {
391     + my ( $c, $domain ) = @_;
392     + my $owner = $dungogdb->get_prop( $domain, "owner" ) || '';
393     + my $group = $dungogdb->get_prop( $domain, "group" ) || 'everyone';
394     + my @selected = [];
395     + my $userlist = $adb->get_prop($group,"Members") || '';
396     + if ( $group eq 'everyone' ) {
397     + my @acctrecs = $adb->get_all_by_prop( type => "user" );
398     + foreach my $acct (@acctrecs) {
399     + push( @selected, $acct->key )
400     + }
401     + }
402     + elsif ( $group eq 'Administrator' ) {
403     + @selected = ($owner);
404     + }
405     + else {
406     + @selected = split( /,/, $userlist );
407     + }
408     + return sort @selected;
409     +}
410     +
411     +1;
412     diff -urN smeserver-domains-1.4.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Dungog_domains/en.pm smeserver-domains-1.4/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Dungog_domains/en.pm
413     --- smeserver-domains-1.4.old/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Dungog_domains/en.pm 1970-01-01 01:00:00.000000000 +0100
414     +++ smeserver-domains-1.4/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Dungog_domains/en.pm 2020-07-22 09:09:00.000000000 +0100
415     @@ -0,0 +1,65 @@
416     +package SrvMngr::I18N::Modules::Dungog_domains::en;
417     +use strict;
418     +use warnings;
419     +use utf8;
420     +use Mojo::Base 'SrvMngr::I18N';
421     +
422     +use SrvMngr::I18N::Modules::General::en;
423     +
424     +my %lexicon = (
425     +'ddo_title' =>'Domain Pseudonyms',
426     +'ddo_Final_Save' => 'Settings saved and email restarted.',
427     +'ddo_Intro' => 'Set pseudonyms specifically for a single domain,<br>This panel just shows the pseudonyms for a each single domain.<br>See also the <a href="/smanager/pseudonyms">Pseudonyms</a> panel to set global pseudonyms.<br>Documentation: <a href="https://wiki.contribs.org/Domains">https://wiki.contribs.org/Domains</a>',
428     +'ddo_Current_List' => 'Current List of Domains.',
429     +'ddo_Mail_Delivery' => ' Mail Delivery',
430     +'ddo_Delegation' => 'Delegation',
431     +'ddo_Need_Save' => '<strong>Save Settings</strong><br>Pseudonym settings are not activated until you save them here',
432     +'ddo_Delegate_Domain' => 'Delegate the domain "[_1]"<br>
433     +Forward all email for this domain to a remote mailserver, either use a FQDN mail.domain.net or an IP address. Or leave blank and forward domain specific pseudonyms below.
434     +CAUTION. enable your remote server before delegating or you may create a mail loop.',
435     +'ddo_Server_or_IP' => 'Server Name or IP',
436     +'ddo_No_Pseudonyms' => 'There are no pseudonyms for the domain "[_1]"',
437     +'ddo_Click_Here' => 'Click here',
438     +'ddo_Click_Here_first' => ' to add your first pseudonym.',
439     +'ddo_Click_Here_add' => ' to add another pseudonym.',
440     +'ddo_Domain_Name' => 'Domain Name:[_1]',
441     +'ddo_Alternative_Admin_description' => 'The alternative administrator is used delegate a domain to a user or group.
442     +They can then add email addresses with userpanel-domains
443     +First delegate them here, then delegate the userpanel with userpanel access.
444     +For full access delegate this panel, dungog-domains.',
445     +'ddo_Alternative_Admin' => 'Alternative administrator:',
446     +'ddo_Restrict' => 'Restrict the userlist in the email dropdown box to the Administrator or members of a group',
447     +'ddo_Alternative_Group' => 'Alternative group:',
448     +'ddo_SUCCESS' => 'Successfully modified domain [_1].',
449     +'ddo_NO_DOMAINS' => 'The are no domains in the system',
450     +'ddo_Current_list_for' => 'Current List of pseudonyms for the domain "[_1]"',
451     +'ddo_No_pseudonyms_for' => 'There are no pseudonyms for the domain "[_1]"',
452     +'ddo_Email_Title' => 'Modify Domain Email',
453     +'ddo_Edit_Title' => 'Modify Email Address',
454     +'ddo_Local_User' => 'Local User',
455     +'ddo_Pseudonyms' => 'Pseudonyms',
456     +'ddo_Pseudonym' => 'Pseudonym',
457     +'ddo_ENTER_a_pseudonym' => 'Enter a pseudonym.<br>NOTE. @[_1] is added for you.',
458     +'ddo_Delete_successful' =>'Successfully removed Pseudonym.',
459     +'ddo_pseudo_already_exists' => 'Error: Pseudonym already exists.',
460     +'ddo_pseudo_unexpected_character'=>'Error: unexpected characters in Pseudonym [_1]',
461     +'ddo_need_local_account' => "Error: please select a local account.",
462     +'ddo_modify_options_TITLE'=>'Modify Domain pseudonyms - Options',
463     +'ddo_alternate delegate'=>'The alternative administrator is used delegate a domain to a user or group.<br>
464     +They can then add email addresses with userpanel-domains.<br>
465     +First delegate them here, then delegate the userpanel with userpanel access.<br>
466     +For full access delegate this panel, dungog-domains.',
467     +'ddo_alternative_admin' => 'Alternative administrator:',
468     +'ddo_restrict_to_group'=>'Restrict the userlist in the email dropdown box to the Administrator or members of a group',
469     +'ddo_Alternative_group'=>'Alternative group:'
470     +
471     +
472     +);
473     +
474     +our %Lexicon = (
475     + %{ SrvMngr::I18N::Modules::General::en::Lexicon },
476     + %lexicon
477     +);
478     +
479     +
480     +1;
481     diff -urN smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/dungog_domains.html.ep smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/dungog_domains.html.ep
482     --- smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/dungog_domains.html.ep 1970-01-01 01:00:00.000000000 +0100
483     +++ smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/dungog_domains.html.ep 2020-07-06 17:19:00.000000000 +0100
484     @@ -0,0 +1,43 @@
485     +% layout 'default', title => "Sme server 2 - Domain Pseudonyms", share_dir => './';
486     +
487     +% content_for 'module' => begin
488     +<div id="module">
489     +
490     + % if ($config->{debug} == 1) {
491     + <p>
492     + %= dumper $c->current_route
493     + </p>
494     + % }
495     +
496     + <h1><%=$title%></h1>
497     + %= $modul
498     +
499     + %if ($ddo_datas->{first}) {
500     + %=$c->render_to_string(inline =>$c->l($ddo_datas->{first}))
501     +
502     + %} elsif ($ddo_datas->{success}) {
503     + <div class='sme-success'>
504     + <h2> Operation Status Report</h2>
505     + %= $c->l($ddo_datas->{success});
506     + </div>
507     +
508     + %} elsif ($ddo_datas->{error}) {
509     + <div class='sme-error'>
510     + <h2> Operation Status Report - error</h2>
511     + %= $c->l($ddo_datas->{error});
512     + </div>
513     + %}
514     +
515     +
516     + % if ($ddo_datas->{trt} eq 'EMAIL') {
517     + %= include 'partials/_ddo_modify_email'
518     + %} elsif ($ddo_datas->{trt} eq 'OPTIONS') {
519     + %= include 'partials/_ddo_modify_options'
520     + %} elsif ($ddo_datas->{trt} eq 'ADD') {
521     + %= include 'partials/_ddo_add_pseudonym'
522     + %} else {
523     + %= include 'partials/_ddo_domain_list'
524     + %}
525     +
526     +</div>
527     +%end
528     diff -urN smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_add_pseudonym.html.ep smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_add_pseudonym.html.ep
529     --- smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_add_pseudonym.html.ep 1970-01-01 01:00:00.000000000 +0100
530     +++ smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_add_pseudonym.html.ep 2020-07-22 09:20:00.000000000 +0100
531     @@ -0,0 +1,38 @@
532     +%#
533     +%# Add/edit pseudonym
534     +%#
535     +<div class="">
536     + % my $btn = l('SAVE');
537     + %= form_for '/dungog_domains' => (method => 'POST') => begin
538     + %my $domain = $c->param("domain");
539     + %my $acct = $c->param("acct") || '';
540     + %my $pseudo = $c->param("pseudo") || '';
541     + %=$c->l('ddo_Domain_Name',$domain)
542     + <br>
543     + %=$c->render_to_string(inline =>l('ddo_ENTER_a_pseudonym',$domain))
544     + <br>
545     + <span class=label>
546     + %=l "ddo_Pseudonym"
547     + </span>
548     + <span class=data>
549     + %=text_field 'pseudo' =>$pseudo
550     + %="\@$domain"
551     + </span>
552     + <br><br>
553     + <span class=label>
554     + %=l "ddo_Local_User"
555     + </span>
556     + <span class=data>
557     + % param LocalAccount => "$acct";
558     + %=select_field 'LocalAccount'=>$accts
559     + </span>
560     + %=hidden_field 'domain'=>$domain
561     + %=hidden_field 'acct'=>$acct
562     + %=hidden_field 'trt'=>'EMAIL'
563     + %=hidden_field 'oldpseudo'=>$pseudo
564     +
565     + <br>
566     + %= submit_button "$btn", class => 'action'
567     + <br>
568     + % end
569     +</div>
570     diff -urN smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_domain_list.html.ep smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_domain_list.html.ep
571     --- smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_domain_list.html.ep 1970-01-01 01:00:00.000000000 +0100
572     +++ smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_domain_list.html.ep 2020-07-20 17:25:00.000000000 +0100
573     @@ -0,0 +1,56 @@
574     +%#
575     +%# Initial Domain list
576     +%#
577     +<div id='ddo_list'>
578     +
579     + % my $btn = l('SAVE');
580     +
581     + %= form_for '/dungog_domains' => (method => 'POST') => begin
582     + <br>
583     + %=$c->l('ddo_Current_List')
584     +
585     + % if ($empty){
586     + <br>
587     + %=l 'ddo_NO_DOMAINS'
588     + % } else {
589     +
590     + <table class="sme-border"><tbody>
591     + <tr>
592     + <th class='sme-border'>
593     + %=l 'DOMAIN'
594     + </th>
595     + <th class='sme-border'>
596     + %=l 'DESCRIPTION'
597     + </th>
598     + <th class='sme-border'>
599     + %=l 'ddo_Mail_Delivery'
600     + </th>
601     + <th class='sme-border' '>
602     + %=l 'ddo_Delegation'
603     + </th>
604     + </tr>
605     + % foreach my $domain (@$domains) {
606     + <tr>
607     + %= t td => (class => 'sme-border') => $domain->{"Domain"}
608     + %= t td => (class => 'sme-border') => $domain->{"Description"}
609     + <td class=sme-border>
610     + <a href="/smanager/dungog_domains1?trt=EMAIL&domain=<%= $domain->{"Domain"}%>"><%=l 'MODIFY'%></a>
611     + </td>
612     + % my $delegation = $domain->{"Delegation"};
613     + <td class=sme-border>
614     + <a href="/smanager/dungog_domains2?trt=OPTIONS&domain=<%= $domain->{"Domain"}%>"><%=l $delegation%></a>
615     + </td>
616     + </tr>
617     + %}
618     + </tbody>
619     + </table>
620     + % }
621     +
622     + %# This may not be needed - Save from the subservient panels should do the job.
623     +
624     + %#=$c->render_to_string(inline =>l('ddo_Need_Save'));
625     + <br>
626     + %#= submit_button "$btn", class => 'action'
627     + <br>
628     + % end
629     +</div>
630     diff -urN smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_email.html.ep smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_email.html.ep
631     --- smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_email.html.ep 1970-01-01 01:00:00.000000000 +0100
632     +++ smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_email.html.ep 2020-07-20 17:23:00.000000000 +0100
633     @@ -0,0 +1,73 @@
634     +%#
635     +%# Modify domain email
636     +%#
637     +<div class="ddo_email">
638     + % my $btn = $c->l('SAVE');
639     + % my $MailServer = $ddo_datas->{mailserver};
640     +
641     + %= form_for '/dungog_domains' => (method => 'POST') => begin
642     + <br>
643     + % my $domain = $c->param('domain');
644     + %=$c->render_to_string(inline =>l('ddo_Delegate_Domain',$domain))
645     + <br>
646     + <span class=label>
647     + %=l "ddo_Server_or_IP"
648     + </span>
649     + <span class=data>
650     + %=text_field 'MailServer' =>$MailServer
651     + </span>
652     + <br><br>
653     + %if ($empty) {
654     + %=$c->l('ddo_No_pseudonyms_for',$domain);
655     + <br>
656     + <a href="/smanager/dungog_domains3?domain=<%=$domain %>&mode=new"><button type='button'><%= $c->l('ddo_Click_Here')%></button></a>
657     + %=$c->render_to_string(inline=>l('ddo_Click_Here_first'))
658     + <br>
659     +
660     + %} else {
661     + %=$c->l('ddo_Current_list_for',$domain);
662     + <br>
663     + <a href="/smanager/dungog_domains3?domain=<%=$domain %>&mode=new"><button type='button'><%= $c->l('ddo_Click_Here')%></button></a>
664     + %=$c->render_to_string(inline=>l('ddo_Click_Here_add'))
665     + <br><br>
666     +
667     + %#Table of pseudonyms:
668     + <table class="sme-border"><tbody>
669     + <tr>
670     + <th class='sme-border'>
671     + %=l 'ddo_Pseudonyms'
672     + </th>
673     + <th class='sme-border'>
674     + %=l 'ddo_Local_User'
675     + </th>
676     + <th class='sme-border'>
677     + </th>
678     + <th class='sme-border' '>
679     + </th>
680     + </tr>
681     + % foreach my $pseudo (@$pseudos) {
682     + <tr>
683     + %= t td => (class => 'sme-border') => $pseudo->{"Pseudonym"}
684     + %= t td => (class => 'sme-border') => $pseudo->{"user"}
685     + <td class=sme-border>
686     + <a href="/smanager/dungog_domains3?trt=EMAIL&pseudo=<%= $pseudo->{'Pseudonym'}%>&domain=<%= $domain%>"><%=l 'MODIFY'%></a>
687     + </td>
688     + <td class=sme-border>
689     + <a href="/smanager/dungog_domains4?trt=OPTIONS&pseudo=<%= $pseudo->{'Pseudonym'}%>&domain=<%= $domain%>"><%=l 'REMOVE'%></a>
690     + </td>
691     + </tr>
692     + %}
693     + </tbody>
694     + </table>
695     + %}
696     + %= hidden_field trt=>"SERVER"
697     + %= hidden_field domain=>$domain
698     +
699     + <br>
700     + %=$c->render_to_string(inline =>l('ddo_Need_Save'));
701     + <br>
702     + %= submit_button "$btn", class => 'action'
703     + % end
704     +</div>
705     +
706     +
707     diff -urN smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_options.html.ep smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_options.html.ep
708     --- smeserver-domains-1.4.old/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_options.html.ep 1970-01-01 01:00:00.000000000 +0100
709     +++ smeserver-domains-1.4/root/usr/share/smanager/themes/default/templates/partials/_ddo_modify_options.html.ep 2020-07-08 14:32:00.000000000 +0100
710     @@ -0,0 +1,35 @@
711     +%#
712     +%# Modify domain options
713     +%#
714     +<div class="ddo_modify_options">
715     + % my $btn = l('SAVE');
716     + % my $domain = $c->param('domain');
717     + % my $group = $ddo_datas->{group};
718     + % my $owner = $ddo_datas->{owner};
719     + %=l('ddo_Domain_Name',$domain)
720     + <br>
721     + %= $c->render_to_string(inline =>l('ddo_alternate delegate'))
722     + %= form_for '/dungog_domains' => (method => 'POST') => begin
723     + <span class=label>
724     + %=l "ddo_Alternative_Admin"
725     + </span>
726     + <span class=data>
727     + % param Owner => "$owner";
728     + %=select_field 'Owner'=>$userlist
729     + </span>
730     + <br>
731     + %= l('ddo_restrict_to_group')
732     + <br>
733     + <span class=label>
734     + %=l "ddo_Alternative_Group"
735     + </span>
736     + <span class=data>
737     + % param Group => "$group";
738     + %=select_field 'Group'=>$grouplist
739     + </span>
740     + %= hidden_field trt=>'OPTIONS'
741     + %= hidden_field domain=>$domain
742     + <br>
743     + %= submit_button "$btn", class => 'action'
744     + % end
745     +</div>

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed