diff options
| author | christopherm <christopherm@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-09-11 00:31:16 +0000 |
|---|---|---|
| committer | christopherm <christopherm@4979c152-3d1c-0410-bac9-87ea11338e46> | 2006-09-11 00:31:16 +0000 |
| commit | 8900bd74ff3fbe971f723ad7791e4620d5d5b2ee (patch) | |
| tree | 64d51eb8ae3ea4726a3082aeecde9db4fd115dac /bin/mozilla | |
| parent | 783fcb9c858a9ce1df370fed7dfd5c963207c92d (diff) | |
applying HTML fixes patch supplied by David, also doing major whitespace cleanup, fixing more html bugs. Removing all references to Oracle. This has been tested, but it could use more testing
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@63 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'bin/mozilla')
| -rwxr-xr-x | bin/mozilla/admin.pl | 2296 |
1 files changed, 1069 insertions, 1227 deletions
diff --git a/bin/mozilla/admin.pl b/bin/mozilla/admin.pl index d552e4ca..5a3c0ef3 100755 --- a/bin/mozilla/admin.pl +++ b/bin/mozilla/admin.pl @@ -23,7 +23,7 @@ # #====================================================================== # -# This file has NOT undergone whitespace cleanup. +# This file has undergone whitespace cleanup. # #====================================================================== # @@ -54,36 +54,34 @@ require "$form->{path}/pw.pl"; # customization if (-f "$form->{path}/custom_$form->{script}") { - eval { require "$form->{path}/custom_$form->{script}"; }; - $form->error($@) if ($@); + eval { require "$form->{path}/custom_$form->{script}"; }; + $form->error($@) if ($@); } if ($form->{action}) { - &check_password unless $form->{action} eq 'logout'; - - &{ $locale->findsub($form->{action}) }; - -} else { + &check_password unless $form->{action} eq 'logout'; + &{ $locale->findsub($form->{action}) }; - # if there are no drivers bail out - $form->error($locale->text('No Database Drivers available!')) unless (User->dbdrivers); +} else { - # create memberfile - if (! -f $memberfile) { - open(FH, ">$memberfile") or $form->error("$memberfile : $!"); - print FH qq|# LedgerSMB Accounting members + # if there are no drivers bail out + $form->error($locale->text('No Database Drivers available!')) unless (User->dbdrivers); -[root login] -password= + # create memberfile + if (! -f $memberfile) { + open(FH, ">$memberfile") or $form->error("$memberfile : $!"); + print FH qq|# LedgerSMB Accounting members -|; - close FH; - } + [root login] + password= - &adminlogin; + |; + close FH; + } + &adminlogin; } 1; @@ -92,1564 +90,1408 @@ password= sub adminlogin { - $form->{title} = qq|LedgerSMB $form->{version} |.$locale->text('Administration'); - - $myheaderadd = qq| -<script language="JavaScript" type="text/javascript"> -<!-- -function sf(){ - document.admin.password.focus(); -} -// End --> -</script> - |; - $form->header(undef, $headeradd); - - print qq| -<body class=admin onload="sf()"> - -<div align=center> - -<a href="http://sourceforge.net/projects/ledger-smb/"><img src="ledger-smb.png" width="200" height="100" border="0" alt="LedgerSMB Logo"></a> -<h1 class=login>|.$locale->text('Version').qq| $form->{version}<p>|.$locale->text('Administration').qq|</h1> - -<form method=post action="$form->{script}" name=admin> - -<table> - <tr> - <th>|.$locale->text('Password').qq|</th> - <td><input type=password name=password></td> - <td><input type=submit class=submit name=action value="|.$locale->text('Login').qq|"></td> - </tr> -<input type=hidden name=action value=login> -<input type=hidden name=path value=$form->{path}> -</table> + $form->{title} = qq|LedgerSMB $form->{version} |.$locale->text('Administration'); -</form> + $myheaderadd = qq| + <script language="JavaScript" type="text/javascript"> + <!-- + function sf(){ + document.admin.password.focus(); + } + // End --> + </script> + |; + $form->header(undef, $myheaderadd); -<a href="http://sourceforge.net/projects/ledger-smb/">LedgerSMB |.$locale->text('website').qq|</a> + print qq| + <body class="admin" onload="sf()"> + <div align="center"> + <a href="http://sourceforge.net/projects/ledger-smb/"><img src="ledger-smb.png" width="200" height="100" border="0" alt="LedgerSMB Logo" /></a> + <h1 class="login">|.$locale->text('Version').qq| $form->{version} <br />|.$locale->text('Administration').qq|</h1> + <form method="post" action="$form->{script}" name="admin"> + <table> + <tr> + <th>|.$locale->text('Password').qq|</th> + <td><input type="password" name="password" /></td> + <td><input type="submit" class="submit" name="action" value="|.$locale->text('Login').qq|" /></td> + </tr> + </table> + <input type="hidden" name="action" value="login" /> + <input type="hidden" name="path" value="$form->{path}" /> + </form> -</div> - -</body> -</html> -|; + <a href="http://sourceforge.net/projects/ledger-smb/">LedgerSMB |.$locale->text('website').qq|</a> + </div> + </body> + </html> + |; } sub login { - &list_users; - + &list_users; } sub logout { - $form->{callback} = "$form->{script}?path=$form->{path}&endsession=1"; - unlink "$userspath/adminhash"; - print qq|Set-Cookie: LedgerSMB=; path=/;\n|; - $form->redirect($locale->text('You are logged out')); + $form->{callback} = "$form->{script}?path=$form->{path}&endsession=1"; + unlink "$userspath/adminhash"; + print qq|Set-Cookie: LedgerSMB=; path=/;\n|; + $form->redirect($locale->text('You are logged out')); } sub add_user { - - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Add User'); - $form->{Oracle_sid} = $sid; - $form->{Oracle_dbport} = '1521'; - $form->{Oracle_dbhost} = `hostname`; + $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Add User'); - if (-f "css/ledger-smb.css") { - $myconfig->{stylesheet} = "ledger-smb.css"; - } - $myconfig->{vclimit} = 1000; - $myconfig->{menuwidth} = 155; - $myconfig->{timeout} = 3600; - - &form_header; - &form_footer; - -} + if (-f "css/ledger-smb.css") { + $myconfig->{stylesheet} = "ledger-smb.css"; + } + $myconfig->{vclimit} = 1000; + $myconfig->{menuwidth} = 155; + $myconfig->{timeout} = 3600; + &form_header; + &form_footer; +} -sub edit { - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Edit User'); - $form->{edit} = 1; +sub edit { - &form_header; - &form_footer; + $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Edit User'); + $form->{edit} = 1; + &form_header; + &form_footer; } sub form_footer { - if ($form->{edit}) { - $delete = qq|<input type=submit class=submit name=action value="|.$locale->text('Delete').qq|"> -<input type=hidden name=edit value=1>|; - } - - print qq| - -<input name=callback type=hidden value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"> - -<input type=hidden name=path value=$form->{path}> -<input type=hidden name=sessionid value=$form->{sessionid}> - -<input type=submit class=submit name=action value="|.$locale->text('Save').qq|"> -$delete - -</form> - -</body> -</html> -|; + if ($form->{edit}) { + $delete = qq|<input type="submit" class="submit" name="action" value="|.$locale->text('Delete').qq|" /> + <input type="hidden" name="edit" value="1" />|; + } + print qq| + <input name="callback" type="hidden" value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}" /> + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Save').qq|" /> + $delete + </form> + </body> + </html> + |; } sub list_users { - open(FH, "$memberfile") or $form->error("$memberfile : $!"); + open(FH, "$memberfile") or $form->error("$memberfile : $!"); - $nologin = qq| -<input type=submit class=submit name=action value="|.$locale->text('Lock System').qq|">|; + $nologin = qq|<input type="submit" class="submit" name="action" value="|.$locale->text('Lock System').qq|" />|; - if (-e "$userspath/nologin") { - $nologin = qq| -<input type=submit class=submit name=action value="|.$locale->text('Unlock System').qq|">|; - } + if (-e "$userspath/nologin") { + $nologin = qq|<input type="submit" class="submit" name="action" value="|.$locale->text('Unlock System').qq|" />|; + } - while (<FH>) { - chop; - - if (/^\[.*\]/) { - $login = $_; - $login =~ s/(\[|\])//g; - } + while (<FH>) { + chop; - if (/^(name=|company=|templates=|dbuser=|dbdriver=|dbname=|dbhost=)/) { - chop ($var = $&); - ($null, $member{$login}{$var}) = split /=/, $_, 2; - } - } - - close(FH); + if (/^\[.*\]/) { + $login = $_; + $login =~ s/(\[|\])//g; + } -# type=submit $locale->text('Pg Database Administration') -# type=submit $locale->text('PgPP Database Administration') -# type=submit $locale->text('Oracle Database Administration') + if (/^(name=|company=|templates=|dbuser=|dbdriver=|dbname=|dbhost=)/) { + chop ($var = $&); + ($null, $member{$login}{$var}) = split /=/, $_, 2; + } + } - foreach $item (User->dbdrivers) { - $dbdrivers .= qq|<input name=action type=submit class=submit value="|.$locale->text("$item Database Administration").qq|">|; - } + close(FH); + # type=submit $locale->text('Pg Database Administration') + # type=submit $locale->text('PgPP Database Administration') - $column_header{login} = qq|<th>|.$locale->text('Login').qq|</th>|; - $column_header{name} = qq|<th>|.$locale->text('Name').qq|</th>|; - $column_header{company} = qq|<th>|.$locale->text('Company').qq|</th>|; - $column_header{dbdriver} = qq|<th>|.$locale->text('Driver').qq|</th>|; - $column_header{dbhost} = qq|<th>|.$locale->text('Host').qq|</th>|; - $column_header{dataset} = qq|<th>|.$locale->text('Dataset').qq|</th>|; - $column_header{templates} = qq|<th>|.$locale->text('Templates').qq|</th>|; + foreach $item (User->dbdrivers) { + $dbdrivers .= qq|<input name="action" type="submit" class="submit" value="|.$locale->text("$item Database Administration").qq|" />|; + } - @column_index = qw(login name company dbdriver dbhost dataset templates); - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Administration'); + $column_header{login} = qq|<th>|.$locale->text('Login').qq|</th>|; + $column_header{name} = qq|<th>|.$locale->text('Name').qq|</th>|; + $column_header{company} = qq|<th>|.$locale->text('Company').qq|</th>|; + $column_header{dbdriver} = qq|<th>|.$locale->text('Driver').qq|</th>|; + $column_header{dbhost} = qq|<th>|.$locale->text('Host').qq|</th>|; + $column_header{dataset} = qq|<th>|.$locale->text('Dataset').qq|</th>|; + $column_header{templates} = qq|<th>|.$locale->text('Templates').qq|</th>|; - $form->{login} = "root login"; - $form->header; + @column_index = qw(login name company dbdriver dbhost dataset templates); - print qq| -<body class=admin> + $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Administration'); -<form method=post action=$form->{script}> + $form->{login} = "root login"; + $form->header; -<table width=100%> - <tr> - <tr class=listheading> - <th>$form->{title}</th> - </tr> - <tr size=5></tr> - <tr> - <td> - <table width=100%> - <tr class=listheading>|; + print qq| + <body class="admin"> + <form method="post" action="$form->{script}"> + <table width="100%"> + <tr class="listheading"> + <th>$form->{title}</th> + </tr> + <tr size="5"></tr> + <tr> + <td> + <table width="100%"> + <tr class="listheading">|; - for (@column_index) { print "$column_header{$_}\n" } - - print qq| - </tr> -|; + for (@column_index) { print "$column_header{$_}\n" } -foreach $key (sort keys %member) { - $href = "$script?action=edit&login=$key&path=$form->{path}&sessionid=$form->{sessionid}"; - $href =~ s/ /%20/g; - - $member{$key}{templates} =~ s/^$templates\///; - $member{$key}{dbhost} = $locale->text('localhost') unless $member{$key}{dbhost}; - $member{$key}{dbname} = $member{$key}{dbuser} if ($member{$key}{dbdriver} eq 'Oracle'); + print qq| </tr>|; - $column_data{login} = qq|<td><a href=$href>$key</a></td>|; - $column_data{name} = qq|<td>$member{$key}{name}</td>|; - $column_data{company} = qq|<td>$member{$key}{company}</td>|; - $column_data{dbdriver} = qq|<td>$member{$key}{dbdriver}</td>|; - $column_data{dbhost} = qq|<td>$member{$key}{dbhost}</td>|; - $column_data{dataset} = qq|<td>$member{$key}{dbname}</td>|; - $column_data{templates} = qq|<td>$member{$key}{templates}</td>|; - - $i++; $i %= 2; - print qq| - <tr class=listrow$i>|; + foreach $key (sort keys %member) { - for (@column_index) { print "$column_data{$_}\n" } + $href = "$script?action=edit&login=$key&path=$form->{path}&sessionid=$form->{sessionid}"; + $href =~ s/ /%20/g; - print qq| - </tr>|; -} + $member{$key}{templates} =~ s/^$templates\///; + $member{$key}{dbhost} = $locale->text('localhost') unless $member{$key}{dbhost}; + $column_data{login} = qq|<td><a href="$href">$key</a></td>|; + $column_data{name} = qq|<td>$member{$key}{name}</td>|; + $column_data{company} = qq|<td>$member{$key}{company}</td>|; + $column_data{dbdriver} = qq|<td>$member{$key}{dbdriver}</td>|; + $column_data{dbhost} = qq|<td>$member{$key}{dbhost}</td>|; + $column_data{dataset} = qq|<td>$member{$key}{dbname}</td>|; + $column_data{templates} = qq|<td>$member{$key}{templates}</td>|; -print qq| - </table> - </td> - </tr> - <tr> - <td><hr size=3 noshade></td> - </tr> -</table> + $i++; $i %= 2; + print qq| <tr class="listrow$i">|; -<input type=hidden name=path value=$form->{path}> -<input type=hidden name=sessionid value=$form->{sessionid}> + for (@column_index) { print "$column_data{$_}\n"; } -<br><input type=submit class=submit name=action value="|.$locale->text('Add User').qq|"> -<input type=submit class=submit name=action value="|.$locale->text('Change Admin Password').qq|"> + print qq| </tr>|; + } -$dbdrivers -$nologin -<input type=submit class=submit name=action value="|.$locale->text('Logout').qq|"> + print qq| </table> + </td> + </tr> + <tr> + <td><hr size="3" noshade /></td> + </tr> + </table> + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <br /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Add User').qq|" /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Change Admin Password').qq|" /> -</form> + $dbdrivers + $nologin -|.$locale->text('Click on login name to edit!').qq| -<br> -|.$locale->text('To add a user to a group edit a name, change the login name and save. A new user with the same variables will then be saved under the new login name.').qq| + <input type="submit" class="submit" name="action" value="|.$locale->text('Logout').qq|" /> + </form> -</body> -</html> -|; + |.$locale->text('Click on login name to edit!').qq| + <br /> + |.$locale->text('To add a user to a group edit a name, change the login name and save. A new user with the same variables will then be saved under the new login name.').qq| + </body> + </html>|; } sub form_header { - # if there is a login, get user - if ($form->{login}) { - # get user - $myconfig = new User "$memberfile", "$form->{login}"; - - for (qw(company address signature)) { $myconfig->{$_} = $form->quote($myconfig->{$_}) } - for (qw(address signature)) { $myconfig->{$_} =~ s/\\n/\n/g } + # if there is a login, get user + if ($form->{login}) { - # strip basedir from templates directory - $myconfig->{templates} =~ s/^$templates\///; + # get user + $myconfig = new User "$memberfile", "$form->{login}"; - $myconfig->{dbpasswd} = unpack 'u', $myconfig->{dbpasswd}; - } + for (qw(company address signature)) { $myconfig->{$_} = $form->quote($myconfig->{$_}) } + for (qw(address signature)) { $myconfig->{$_} =~ s/\\n/\n/g } - foreach $item (qw(mm-dd-yy mm/dd/yy dd-mm-yy dd/mm/yy dd.mm.yy yyyy-mm-dd)) { - $dateformat .= ($item eq $myconfig->{dateformat}) ? "<option selected>$item\n" : "<option>$item\n"; - } + # strip basedir from templates directory + $myconfig->{templates} =~ s/^$templates\///; + $myconfig->{dbpasswd} = unpack 'u', $myconfig->{dbpasswd}; + } - foreach $item (qw(1,000.00 1000.00 1.000,00 1000,00 1'000.00)) { - $numberformat .= ($item eq $myconfig->{numberformat}) ? "<option selected>$item\n" : "<option>$item\n"; - } + foreach $item (qw(mm-dd-yy mm/dd/yy dd-mm-yy dd/mm/yy dd.mm.yy yyyy-mm-dd)) { + $dateformat .= ($item eq $myconfig->{dateformat}) ? "<option selected>$item</option>\n" : "<option>$item</option>\n"; + } + foreach $item (qw(1,000.00 1000.00 1.000,00 1000,00 1'000.00)) { + $numberformat .= ($item eq $myconfig->{numberformat}) ? "<option selected>$item</option>\n" : "<option>$item</option>\n"; + } - %countrycodes = User->country_codes; - $countrycodes = ""; - - foreach $key (sort { $countrycodes{$a} cmp $countrycodes{$b} } keys %countrycodes) { - $countrycodes .= ($myconfig->{countrycode} eq $key) ? "<option selected value=$key>$countrycodes{$key}" : "<option value=$key>$countrycodes{$key}"; - } - $countrycodes = qq|<option value="">English\n$countrycodes|; - # is there a templates basedir - if (! -d "$templates") { - $form->error($locale->text('Directory').": $templates ".$locale->text('does not exist')); - } + %countrycodes = User->country_codes; + $countrycodes = ""; - opendir TEMPLATEDIR, "$templates/." or $form->error("$templates : $!"); - @all = grep !/^\.\.?$/, readdir TEMPLATEDIR; - closedir TEMPLATEDIR; + foreach $key (sort { $countrycodes{$a} cmp $countrycodes{$b} } keys %countrycodes) { + $countrycodes .= ($myconfig->{countrycode} eq $key) ? qq|<option selected value="$key">$countrycodes{$key}</option>| + : qq|<option value="$key">$countrycodes{$key}</option>|; + } - @allhtml = sort grep /\.html/, @all; + $countrycodes = qq|<option value="">English</option>\n$countrycodes|; - @alldir = (); - for (@all) { - if (-d "$templates/$_") { - push @alldir, $_; - } - } - - @allhtml = reverse grep !/Default/, @allhtml; - push @allhtml, 'Default'; - @allhtml = reverse @allhtml; - - foreach $item (sort @alldir) { - if ($item eq $myconfig->{templates}) { - $usetemplates .= qq|<option selected>$item\n|; - } else { - $usetemplates .= qq|<option>$item\n|; - } - } - - $lastitem = $allhtml[0]; - $lastitem =~ s/-.*//g; - $mastertemplates = qq|<option>$lastitem\n|; - foreach $item (@allhtml) { - $item =~ s/-.*//g; - - if ($item ne $lastitem) { - $mastertemplates .= qq|<option>$item\n|; - $lastitem = $item; - } - } + # is there a templates basedir + if (! -d "$templates") { + $form->error($locale->text('Directory').": $templates ".$locale->text('does not exist')); + } - opendir CSS, "css/."; - @all = grep /.*\.css$/, readdir CSS; - closedir CSS; - - foreach $item (@all) { - if ($item eq $myconfig->{stylesheet}) { - $selectstylesheet .= qq|<option selected>$item\n|; - } else { - $selectstylesheet .= qq|<option>$item\n|; - } - } - $selectstylesheet .= "<option>\n"; - - if (%printer && $latex) { - $selectprinter = "<option>\n"; - foreach $item (sort keys %printer) { - if ($myconfig->{printer} eq $item) { - $selectprinter .= qq|<option value="$item" selected>$item\n|; - } else { - $selectprinter .= qq|<option value="$item">$item\n|; - } - } + opendir TEMPLATEDIR, "$templates/." or $form->error("$templates : $!"); + @all = grep !/^\.\.?$/, readdir TEMPLATEDIR; + closedir TEMPLATEDIR; - $printer = qq| - <tr> - <th align=right>|.$locale->text('Printer').qq|</th> - <td><select name=printer>$selectprinter</select></td> - </tr> -|; + @allhtml = sort grep /\.html/, @all; - } - - $user = $form->{login}; - $form->{login} = "root login"; - $form->header; - $form->{login} = $user; - - print qq| -<body class=admin> + @alldir = (); + for (@all) { -<form method=post action=$form->{script}> + if (-d "$templates/$_") { + push @alldir, $_; + } + } -<table width=100%> - <tr class=listheading><th colspan=2>$form->{title}</th></tr> - <tr size=5></tr> - <tr valign=top> - <td> - <table> - <tr> - <th align=right>|.$locale->text('Login').qq|</th> - <td><input name=login value="$myconfig->{login}"></td> - </tr> - <tr> - <th align=right>|.$locale->text('Password').qq|</th> - <td><input type=password name=new_password size=8 value=$myconfig->{password}></td> - <input type=hidden name=old_password value=$myconfig->{password}> - </tr> - <tr> - <th align=right>|.$locale->text('Name').qq|</th> - <td><input name=name size=15 value="$myconfig->{name}"></td> - </tr> - <tr> - <th align=right>|.$locale->text('E-mail').qq|</th> - <td><input name=email size=30 value="$myconfig->{email}"></td> - </tr> - <tr valign=top> - <th align=right>|.$locale->text('Signature').qq|</th> - <td><textarea name=signature rows=3 cols=35>$myconfig->{signature}</textarea></td> - </tr> - <tr> - <th align=right>|.$locale->text('Phone').qq|</th> - <td><input name=tel size=14 value="$myconfig->{tel}"></td> - </tr> - <tr> - <th align=right>|.$locale->text('Fax').qq|</th> - <td><input name=fax size=14 value="$myconfig->{fax}"></td> - </tr> - <tr> - <th align=right>|.$locale->text('Company').qq|</th> - <td><input name=company size=35 value="$myconfig->{company}"></td> - </tr> - <tr valign=top> - <th align=right>|.$locale->text('Address').qq|</th> - <td><textarea name=address rows=4 cols=35>$myconfig->{address}</textarea></td> - </tr> - </table> - </td> - <td> - <table> - <tr> - <th align=right>|.$locale->text('Date Format').qq|</th> - <td><select name=dateformat>$dateformat</select></td> - </tr> - <tr> - <th align=right>|.$locale->text('Number Format').qq|</th> - <td><select name=numberformat>$numberformat</select></td> - </tr> - <tr> - <th align=right>|.$locale->text('Dropdown Limit').qq|</th> - <td><input name=vclimit value="$myconfig->{vclimit}"></td> - </tr> - <tr> - <th align=right>|.$locale->text('Menu Width').qq|</th> - <td><input name=menuwidth value="$myconfig->{menuwidth}"></td> - </tr> - <tr> - <th align=right>|.$locale->text('Language').qq|</th> - <td><select name=countrycode>$countrycodes</select></td> - </tr> - <tr> - <th align=right>|.$locale->text('Session Timeout').qq|</th> - <td><input name=newtimeout value="$myconfig->{timeout}"></td> - </tr> + @allhtml = reverse grep !/Default/, @allhtml; + push @allhtml, 'Default'; + @allhtml = reverse @allhtml; - <tr> - <th align=right>|.$locale->text('Stylesheet').qq|</th> - <td><select name=userstylesheet>$selectstylesheet</select></td> - </tr> - $printer - <tr> - <th align=right>|.$locale->text('Use Templates').qq|</th> - <td><select name=usetemplates>$usetemplates</select></td> - </tr> - <tr> - <th align=right>|.$locale->text('New Templates').qq|</th> - <td><input name=newtemplates></td> - </tr> - <tr> - <th align=right>|.$locale->text('Setup Templates').qq|</th> - <td><select name=mastertemplates>$mastertemplates</select></td> - </tr> - <input type=hidden name=templates value=$myconfig->{templates}> - </table> - </td> - </tr> - <tr class=listheading> - <th colspan=2>|.$locale->text('Database').qq|</th> - </tr>|; + foreach $item (sort @alldir) { - # list section for database drivers - foreach $item (User->dbdrivers) { - - print qq| - <tr> - <td colspan=2> - <table> - <tr>|; + if ($item eq $myconfig->{templates}) { + $usetemplates .= qq|<option selected value="$item">$item</option>\n|; + } else { + $usetemplates .= qq|<option value="$item">$item</option>\n|; + } + } - $checked = ""; - if ($myconfig->{dbdriver} eq $item) { - for (qw(dbhost dbport dbuser dbpasswd dbname sid)) { $form->{"${item}_$_"} = $myconfig->{$_} } - $checked = "checked"; - } + $lastitem = $allhtml[0]; + $lastitem =~ s/-.*//g; + $mastertemplates = qq|<option value="$lastitem">$lastitem</option>\n|; - print qq| - <th align=right>|.$locale->text('Driver').qq|</th> - <td><input name=dbdriver type=radio class=radio value=$item $checked> $item</td> - <th align=right>|.$locale->text('Host').qq|</th> - <td><input name="${item}_dbhost" size=30 value=$form->{"${item}_dbhost"}></td> - </tr> - <tr>|; + foreach $item (@allhtml) { - if ($item =~ /Pg/) { - print qq| - <th align=right>|.$locale->text('Dataset').qq|</th> - <td><input name="${item}_dbname" size=15 value=$form->{"${item}_dbname"}></td> - <th align=right>|.$locale->text('Port').qq|</th> - <td><input name="${item}_dbport" size=4 value=$form->{"${item}_dbport"}></td> - </tr> - <tr> - <th align=right>|.$locale->text('User').qq|</th> - <td><input name="${item}_dbuser" size=15 value=$form->{"${item}_dbuser"}></td> - <th align=right>|.$locale->text('Password').qq|</th> - <td><input name="${item}_dbpasswd" type=password size=10 value=$form->{"${item}_dbpasswd"}></td> - </tr>|; + $item =~ s/-.*//g; - } + if ($item ne $lastitem) { + $mastertemplates .= qq|<option value="$item">$item</option>\n|; + $lastitem = $item; + } + } - if ($item eq 'Oracle') { - print qq| - <th align=right>SID</th> - <td><input name=Oracle_sid value=$form->{Oracle_sid}></td> - <th align=right>|.$locale->text('Port').qq|</th> - <td><input name="${item}_dbport size=4 value=$form->{"${item}_dbport"}></td> - </tr> - <tr> - <th align=right>|.$locale->text('Dataset').qq|</th> - <td><input name="${item}_dbuser" size=15 value=$form->{"${item}_dbuser"}></td> - <th align=right>|.$locale->text('Password').qq|</th> - <td><input name="${item}_dbpasswd" type=password size=10 value=$form->{"${item}_dbpasswd"}></td> - - </tr>|; - } - - - print qq| - <input type=hidden name=old_dbpasswd value=$myconfig->{dbpasswd}> - </table> - </td> - </tr> - <tr> - <td colspan=2><hr size=2 noshade></td> - </tr> -|; + opendir CSS, "css/."; + @all = grep /.*\.css$/, readdir CSS; + closedir CSS; - } + foreach $item (@all) { + if ($item eq $myconfig->{stylesheet}) { + $selectstylesheet .= qq|<option selected value="$item">$item</option>\n|; + } else { + $selectstylesheet .= qq|<option value="$item">$item</option>\n|; + } + } - # access control - open(FH, $menufile) or $form->error("$menufile : $!"); - # scan for first menu level - @a = <FH>; - close(FH); - - if (open(FH, "custom_$menufile")) { - push @a, <FH>; - } - close(FH); + $selectstylesheet .= "<option></option>\n"; - foreach $item (@a) { - next unless $item =~ /\[\w+/; - next if $item =~ /\#/; + if (%printer && $latex) { - $item =~ s/(\[|\])//g; - chop $item; + $selectprinter = "<option></option>\n"; - if ($item =~ /--/) { - ($level, $menuitem) = split /--/, $item, 2; - } else { - $level = $item; - $menuitem = $item; - push @acsorder, $item; - } + foreach $item (sort keys %printer) { - push @{ $acs{$level} }, $menuitem; + if ($myconfig->{printer} eq $item) { + $selectprinter .= qq|<option value="$item" selected>$item</option>\n|; + } else { + $selectprinter .= qq|<option value="$item">$item</option>\n|; + } + } - } - - %role = ( 'admin' => $locale->text('Administrator'), - 'user' => $locale->text('User'), - 'supervisor' => $locale->text('Supervisor'), - 'manager' => $locale->text('Manager') + $printer = qq| + <tr> + <th align="right">|.$locale->text('Printer').qq|</th> + <td><select name="printer">$selectprinter</select></td> + </tr> + |; - ); - - $selectrole = ""; - foreach $item (qw(user admin supervisor manager)) { - $selectrole .= ($myconfig->{role} eq $item) ? "<option selected value=$item>$role{$item}\n" : "<option value=$item>$role{$item}\n"; - } - - print qq| - <tr class=listheading> - <th colspan=2>|.$locale->text('Access Control').qq|</th> - </tr> - <tr> - <td><select name=role>$selectrole</select></td> - </tr> -|; - - foreach $item (split /;/, $myconfig->{acs}) { - ($key, $value) = split /--/, $item, 2; - $excl{$key}{$value} = 1; - } - - foreach $key (@acsorder) { + } - $checked = "checked"; - if ($form->{login}) { - $checked = ($excl{$key}{$key}) ? "" : "checked"; - } - - # can't have variable names with & and spaces - $item = $form->escape("${key}--$key",1); + $user = $form->{login}; + $form->{login} = "root login"; + $form->header; + $form->{login} = $user; - $acsheading = $key; - $acsheading =~ s/ / /g; + print qq| + <body class="admin"> + <form method="post" action="$form->{script}"> + <table width="100%"> + <tr class="listheading"><th colspan="2">$form->{title}</th></tr> + <tr size="5"></tr> + <tr valign="top"> + <td> + <table> + <tr> + <th align="right">|.$locale->text('Login').qq|</th> + <td><input name="login" value="$myconfig->{login}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Password').qq|</th> + <td><input type="password" name="new_password" size="8" value="$myconfig->{password}" /></td> + <input type="hidden" name="old_password" value="$myconfig->{password}" /> + </tr> + <tr> + <th align="right">|.$locale->text('Name').qq|</th> + <td><input name="name" size="15" value="$myconfig->{name}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('E-mail').qq|</th> + <td><input name="email" size="30" value="$myconfig->{email}" /></td> + </tr> + <tr valign="top"> + <th align="right">|.$locale->text('Signature').qq|</th> + <td><textarea name="signature" rows="3" cols="35">$myconfig->{signature}</textarea></td> + </tr> + <tr> + <th align="right">|.$locale->text('Phone').qq|</th> + <td><input name="tel" size="14" value="$myconfig->{tel}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Fax').qq|</th> + <td><input name="fax" size="14" value="$myconfig->{fax}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Company').qq|</th> + <td><input name="company" size="35" value="$myconfig->{company}" /></td> + </tr> + <tr valign="top"> + <th align="right">|.$locale->text('Address').qq|</th> + <td><textarea name="address" rows="4" cols="35">$myconfig->{address}</textarea></td> + </tr> + </table> + </td> + <td> + <table> + <tr> + <th align="right">|.$locale->text('Date Format').qq|</th> + <td><select name="dateformat">$dateformat</select></td> + </tr> + <tr> + <th align="right">|.$locale->text('Number Format').qq|</th> + <td><select name="numberformat">$numberformat</select></td> + </tr> + <tr> + <th align="right">|.$locale->text('Dropdown Limit').qq|</th> + <td><input name="vclimit" value="$myconfig->{vclimit}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Menu Width').qq|</th> + <td><input name="menuwidth" value="$myconfig->{menuwidth}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Language').qq|</th> + <td><select name="countrycode">$countrycodes</select></td> + </tr> + <tr> + <th align="right">|.$locale->text('Session Timeout').qq|</th> + <td><input name="newtimeout" value="$myconfig->{timeout}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Stylesheet').qq|</th> + <td><select name="userstylesheet">$selectstylesheet</select></td> + </tr> + $printer + <tr> + <th align="right">|.$locale->text('Use Templates').qq|</th> + <td><select name="usetemplates">$usetemplates</select></td> + </tr> + <tr> + <th align="right">|.$locale->text('New Templates').qq|</th> + <td><input name="newtemplates" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Setup Templates').qq|</th> + <td><select name="mastertemplates">$mastertemplates</select></td> + </tr> + </table> + <input type="hidden" name="templates" value="$myconfig->{templates}" /> + </td> + </tr> + <tr class="listheading"> + <th colspan="2">|.$locale->text('Database').qq|</th> + </tr>|; - $acsheading = qq| - <th align=left nowrap><input name="$item" class=checkbox type=checkbox value=1 $checked> $acsheading</th>\n|; - $menuitems .= "$item;"; - $acsdata = " - <td>"; + # list section for database drivers + foreach $item (User->dbdrivers) { - foreach $item (@{ $acs{$key} }) { + print qq| + <tr> + <td colspan="2"> + <table> + <tr>|; - next if ($key eq $item); + $checked = ""; - $checked = "checked"; - if ($form->{login}) { - $checked = ($excl{$key}{$item}) ? "" : "checked"; - } + if ($myconfig->{dbdriver} eq $item) { - $acsitem = $form->escape("${key}--$item",1); + for (qw(dbhost dbport dbuser dbpasswd dbname sid)) { $form->{"${item}_$_"} = $myconfig->{$_} } + $checked = "checked"; + } - $acsdata .= qq| - <br><input name="$acsitem" class=checkbox type=checkbox value=1 $checked> $item|; - $menuitems .= "$acsitem;"; - } + print qq| + <th align="right">|.$locale->text('Driver').qq|</th> + <td><input name="dbdriver" type="radio" class="radio" value="$item" $checked /> $item</td> + <th align="right">|.$locale->text('Host').qq|</th> + <td><input name="${item}_dbhost" size="30" value="$form->{"${item}_dbhost"}" /></td> + </tr> + <tr>|; - $acsdata .= " - </td>"; + print qq| + <th align="right">|.$locale->text('Dataset').qq|</th> + <td><input name="${item}_dbname" size="15" value="$form->{"${item}_dbname"}" /></td> + <th align="right">|.$locale->text('Port').qq|</th> + <td><input name="${item}_dbport" size="4" value="$form->{"${item}_dbport"}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('User').qq|</th> + <td><input name="${item}_dbuser" size="15" value="$form->{"${item}_dbuser"}" /></td> + <th align="right">|.$locale->text('Password').qq|</th> + <td><input name="${item}_dbpasswd" type="password" size="10" value="$form->{"${item}_dbpasswd"}" /></td> + </tr>|; - print qq| - <tr valign=top>$acsheading $acsdata - </tr> -|; - } - - print qq|<input type=hidden name=acs value="$menuitems"> - - <tr> - <td colspan=2><hr size=3 noshade></td> - </tr> -</table> -</div> -|; + print qq| + </table> + <input type="hidden" name="old_dbpasswd" value="$myconfig->{dbpasswd}" /> + </td> + </tr> + <tr> + <td colspan="2"><hr size="2" noshade /></td> + </tr> + |; -} + } -sub save { + # access control + open(FH, $menufile) or $form->error("$menufile : $!"); + # scan for first menu level + @a = <FH>; + close(FH); - # no driver checked - $form->error($locale->text('Database Driver not checked!')) unless $form->{dbdriver}; + if (open(FH, "custom_$menufile")) { + push @a, <FH>; + } - # no spaces allowed in login name - $form->{login} =~ s/ //g; + close(FH); - $form->isblank("login", $locale->text('Login name missing!')); - - # check for duplicates - if (!$form->{edit}) { - $temp = new User "$memberfile", "$form->{login}"; - - if ($temp->{login}) { - $form->error("$form->{login} ".$locale->text('is already a member!')); - } - } - - # no spaces allowed in directories - $form->{newtemplates} =~ s/( |\.\.|\*)//g; - - if ($form->{newtemplates} ne "") { - $form->{templates} = $form->{newtemplates}; - } else { - $form->{templates} = ($form->{usetemplates}) ? $form->{usetemplates} : $form->{login}; - } - - # is there a basedir - if (! -d "$templates") { - $form->error($locale->text('Directory').": $templates ".$locale->text('does not exist')); - } + foreach $item (@a) { - # add base directory to $form->{templates} - $form->{templates} = "$templates/$form->{templates}"; + next unless $item =~ /\[\w+/; + next if $item =~ /\#/; + $item =~ s/(\[|\])//g; + chop $item; - $myconfig = new User "$memberfile", "$form->{login}"; + if ($item =~ /--/) { - # redo acs variable and delete all the acs codes - @acs = split /;/, $form->{acs}; + ($level, $menuitem) = split /--/, $item, 2; + } else { - $form->{acs} = ""; - foreach $item (@acs) { - $item = $form->escape($item,1); - if (!$form->{$item}) { - $form->{acs} .= $form->unescape($form->unescape("$item")).";"; - } - delete $form->{$item}; - } + $level = $item; + $menuitem = $item; + push @acsorder, $item; + } - # check which database was filled in - - $form->{dbhost} = $form->{"$form->{dbdriver}_dbhost"}; - $form->{dbport} = $form->{"$form->{dbdriver}_dbport"}; - $form->{dbpasswd} = $form->{"$form->{dbdriver}_dbpasswd"}; - $form->{dbuser} = $form->{"$form->{dbdriver}_dbuser"}; - $form->{dbname} = $form->{"$form->{dbdriver}_dbname"}; + push @{ $acs{$level} }, $menuitem; - if ($form->{dbdriver} eq 'Oracle') { - $form->{sid} = $form->{Oracle_sid}, ; + } - $form->isblank("dbhost", $locale->text('Hostname missing!')); - $form->isblank("dbport", $locale->text('Port missing!')); - $form->isblank("dbuser", $locale->text('Dataset missing!')); - } - if ($form->{dbdriver} =~ /Pg/) { - $form->isblank("dbname", $locale->text('Dataset missing!')); - $form->isblank("dbuser", $locale->text('Database User missing!')); - } - - foreach $item (keys %{$form}) { - $myconfig->{$item} = $form->{$item}; - } + %role = ( 'admin' => $locale->text('Administrator'), + 'user' => $locale->text('User'), + 'supervisor' => $locale->text('Supervisor'), + 'manager' => $locale->text('Manager')); - $myconfig->{password} = $form->{old_password}; - $myconfig->{password} = $form->{new_password} if $form->{new_password} ne $form->{old_password}; - $myconfig->{timeout} = $form->{newtimeout}; + $selectrole = ""; - delete $myconfig->{stylesheet}; - if ($form->{userstylesheet}) { - $myconfig->{stylesheet} = $form->{userstylesheet}; - } - - $myconfig->{packpw} = 1; - - $myconfig->save_member($memberfile, $userspath); + foreach $item (qw(user admin supervisor manager)) { + $selectrole .= ($myconfig->{role} eq $item) ? "<option selected value=\"$item\">$role{$item}</option>\n" + : "<option value=\"$item\">$role{$item}</option>\n"; + } - # create user template directory and copy master files - if (! -d "$form->{templates}") { - - umask(002); - - if (mkdir "$form->{templates}", oct("771")) { - - umask(007); - - # copy templates to the directory - opendir TEMPLATEDIR, "$templates/." or $form->error("$templates : $!"); - @templates = grep /$form->{mastertemplates}-/, readdir TEMPLATEDIR; - closedir TEMPLATEDIR; + print qq| + <tr class="listheading"> + <th colspan="2">|.$locale->text('Access Control').qq|</th> + </tr> + <tr> + <td><select name="role">$selectrole</select></td> + </tr> + |; - foreach $file (@templates) { - open(TEMP, "$templates/$file") or $form->error("$templates/$file : $!"); - - $file =~ s/$form->{mastertemplates}-//; - open(NEW, ">$form->{templates}/$file") or $form->error("$form->{templates}/$file : $!"); - - while ($line = <TEMP>) { - print NEW $line; + foreach $item (split /;/, $myconfig->{acs}) { + ($key, $value) = split /--/, $item, 2; + $excl{$key}{$value} = 1; } - close(TEMP); - close(NEW); - } - } else { - $form->error("$form->{templates} : $!"); - } - } - $form->redirect($locale->text('User saved!')); - -} + foreach $key (@acsorder) { + $checked = "checked"; -sub delete { + if ($form->{login}) { + $checked = ($excl{$key}{$key}) ? "" : "checked"; + } - $form->{templates} = ($form->{templates}) ? "$templates/$form->{templates}" : "$templates/$form->{login}"; - - $form->error("$memberfile ".$locale->text('locked!')) if (-f ${memberfile}.LCK); + # can't have variable names with & and spaces + $item = $form->escape("${key}--$key",1); - open(FH, ">${memberfile}.LCK") or $form->error("${memberfile}.LCK : $!"); - close(FH); - - if (! open(CONF, "+<$memberfile")) { - unlink "${memberfile}.LCK"; - $form->error("$memberfile : $!"); - } + $acsheading = $key; + $acsheading =~ s/ / /g; - @config = <CONF>; + $acsheading = qq| + <th align="left" nowrap="nowrap"><input name="$item" class="checkbox" type="checkbox" value="1" $checked /> $acsheading</th>\n|; + $menuitems .= "$item;"; + $acsdata = "<td>"; - seek(CONF, 0, 0); - truncate(CONF, 0); - - while ($line = shift @config) { + foreach $item (@{ $acs{$key} }) { - chop $line; + next if ($key eq $item); - if ($line =~ /^\[/) { - last if ($line eq "[$form->{login}]"); - $login = &login_name($line); - } - - if ($line =~ /^templates=/) { - ($null, $user{$login}) = split /=/, $line, 2; - } + $checked = "checked"; - print CONF "$line\n"; - } + if ($form->{login}) { + $checked = ($excl{$key}{$item}) ? "" : "checked"; + } - # remove everything up to next login or EOF - # and save template variable - while ($line = shift @config) { + $acsitem = $form->escape("${key}--$item",1); - chop $line; - - ($key, $value) = split /=/, $line, 2; - $myconfig{$key} = $value; - - last if ($line =~ /^\[/); - } + $acsdata .= qq|<br /><input name="$acsitem" class="checkbox" type="checkbox" value="1" $checked /> $item|; + $menuitems .= "$acsitem;"; + } - # this one is either the next login or EOF - print CONF "$line\n"; + $acsdata .= " + </td>"; - $login = &login_name($line); - + print qq| + <tr valign="top">$acsheading $acsdata + </tr> + |; + } - while ($line = shift @config) { + print qq|<input type="hidden" name="acs" value="$menuitems" /> + <tr> + <td colspan="2"><hr size="3" noshade /></td> + </tr> + </table> + </div> + |; - chop $line; +} - if ($line =~ /^\[/) { - $login = &login_name($line); - } - - if ($line =~ /^templates=/) { - ($null, $user{$login}) = split /=/, $line, 2; - } - - print CONF "$line\n"; - } - close(CONF); - unlink "${memberfile}.LCK"; +sub save { - # scan %user for $templatedir - foreach $login (keys %user) { - last if ($found = ($form->{templates} eq $user{$login})); - } + # no driver checked + $form->error($locale->text('Database Driver not checked!')) unless $form->{dbdriver}; - # if found keep directory otherwise delete - if (!$found) { - # delete it if there is a template directory - $dir = "$form->{templates}"; - if (-d "$dir") { - unlink <$dir/*>; - rmdir "$dir"; - } - } + # no spaces allowed in login name + $form->{login} =~ s/ //g; - if ($myconfig{dbconnect}) { - $myconfig{dbpasswd} = unpack 'u', $myconfig{dbpasswd}; - for (keys %myconfig) { $form->{$_} = $myconfig{$_} } - - User->delete_login(\%$form); - - # delete config file for user - unlink "$userspath/$form->{login}.conf"; - } + $form->isblank("login", $locale->text('Login name missing!')); - $form->redirect($locale->text('User deleted!')); - -} + # check for duplicates + if (!$form->{edit}) { + $temp = new User "$memberfile", "$form->{login}"; -sub login_name { - my $login = shift; - - $login =~ s/\[\]//g; - return ($login) ? $login : undef; - -} + if ($temp->{login}) { + $form->error("$form->{login} ".$locale->text('is already a member!')); + } + } + # no spaces allowed in directories + $form->{newtemplates} =~ s/( |\.\.|\*)//g; -sub change_admin_password { + if ($form->{newtemplates} ne "") { + $form->{templates} = $form->{newtemplates}; + } else { + $form->{templates} = ($form->{usetemplates}) ? $form->{usetemplates} : $form->{login}; + } - $form->{title} = qq|LedgerSMB |.$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Change Admin Password'); + # is there a basedir + if (! -d "$templates") { + $form->error($locale->text('Directory').": $templates ".$locale->text('does not exist')); + } - $form->{login} = "root login"; - $form->header; + # add base directory to $form->{templates} + $form->{templates} = "$templates/$form->{templates}"; - print qq| -<body class=admin> -<form method=post action=$form->{script}> + $myconfig = new User "$memberfile", "$form->{login}"; -<table> - <tr> - <tr class=listheading> - <th>|.$locale->text('Change Password').qq|</th> - </tr> - <tr size=5></tr> - <tr> - <td> - <table width=100%> - <tr> - <th align=right>|.$locale->text('Password').qq|</th> - <td><input type=password name=new_password></td> - </tr> - <tr> - <th align=right>|.$locale->text('Confirm').qq|</th> - <td><input type=password name=confirm_password></td> - </tr> - </table> - </td> - </tr> + # redo acs variable and delete all the acs codes + @acs = split /;/, $form->{acs}; -</table> + $form->{acs} = ""; -<br> -<hr size=3 noshade> -<input type=hidden name=path value=$form->{path}> -<input type=hidden name=sessionid value=$form->{sessionid}> + foreach $item (@acs) { -<p> -<input type=submit class=submit name=action value="|.$locale->text('Change Password').qq|"> + $item = $form->escape($item,1); -</form> + if (!$form->{$item}) { + $form->{acs} .= $form->unescape($form->unescape("$item")).";"; + } -</body> -</html> -|; + delete $form->{$item}; + } -} + # check which database was filled in + $form->{dbhost} = $form->{"$form->{dbdriver}_dbhost"}; + $form->{dbport} = $form->{"$form->{dbdriver}_dbport"}; + $form->{dbpasswd} = $form->{"$form->{dbdriver}_dbpasswd"}; + $form->{dbuser} = $form->{"$form->{dbdriver}_dbuser"}; + $form->{dbname} = $form->{"$form->{dbdriver}_dbname"}; -sub change_password { + $form->isblank("dbname", $locale->text('Dataset missing!')); + $form->isblank("dbuser", $locale->text('Database User missing!')); - $form->error($locale->text('Passwords do not match!')) if $form->{new_password} ne $form->{confirm_password}; - - $root->{password} = $form->{new_password}; - - $root->{'root login'} = 1; - $root->save_member($memberfile); + foreach $item (keys %{$form}) { + $myconfig->{$item} = $form->{$item}; + } - $form->{callback} = "$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"; + $myconfig->{password} = $form->{old_password}; + $myconfig->{password} = $form->{new_password} if $form->{new_password} ne $form->{old_password}; + $myconfig->{timeout} = $form->{newtimeout}; - $form->redirect($locale->text('Password changed!')); + delete $myconfig->{stylesheet}; -} + if ($form->{userstylesheet}) { + $myconfig->{stylesheet} = $form->{userstylesheet}; + } -sub get_hash { - use Digest::MD5; - $form->{hash} = Digest::MD5::md5_hex rand(); - -} + $myconfig->{packpw} = 1; -sub check_password { + $myconfig->save_member($memberfile, $userspath); + # create user template directory and copy master files + if (! -d "$form->{templates}") { + umask(002); - $root = new User "$memberfile", "root login"; + if (mkdir "$form->{templates}", oct("771")) { - if ($root->{password}) { - - if ($form->{password}) { - $form->{callback} .= "&password=$form->{password}" if $form->{callback}; - $form->{sessionid} = time; - if ($root->{password} ne crypt $form->{password}, 'ro') { - &getpassword; - exit; - } + umask(007); - &get_hash; - - open(HASHFILE, "> $userspath/adminhash") - || $form->error("Can't Open Hashfile: $!"); - print HASHFILE $form->{hash}; + # copy templates to the directory + opendir TEMPLATEDIR, "$templates/." or $form->error("$templates : $!"); + @templates = grep /$form->{mastertemplates}-/, readdir TEMPLATEDIR; + closedir TEMPLATEDIR; - print qq|Set-Cookie: LedgerSMB=$form->{hash}; path=/;\n|; + foreach $file (@templates) { - } else { - if ($ENV{HTTP_USER_AGENT}) { - $ENV{HTTP_COOKIE} =~ s/;\s*/;/g; - %cookie = split /[=;]/, $ENV{HTTP_COOKIE}; # Changeme to %cookies - $cookie = ($form->{path} eq 'bin/lynx') ? $cookie{login} : $cookie{"LedgerSMB-root login"}; + open(TEMP, "$templates/$file") or $form->error("$templates/$file : $!"); - #fixes problem with first login and such - if (!(-f "$userspath/adminhash")) { - &get_hash; - open(HASHFILE, "> $userspath/adminhash") || $form->error("Can't Open Hashfile: $!"); - print HASHFILE $form->{hash}; - close(HASHFILE); - } + $file =~ s/$form->{mastertemplates}-//; + open(NEW, ">$form->{templates}/$file") or $form->error("$form->{templates}/$file : $!"); - open (HASHFILE, "< $userspath/adminhash") || $form->error("Can't Open Hashfile: $!"); + while ($line = <TEMP>) { + print NEW $line; + } - chomp($form->{hash} = <HASHFILE>); + close(TEMP); + close(NEW); + } - %cookies = split /[=;]/, $ENV{HTTP_COOKIE}; - - if (! $cookie || $cookie ne $form->{sessionid} || - $form->{hash} ne $cookies{LedgerSMB}) { - &getpassword; - exit; + } else { + $form->error("$form->{templates} : $!"); + } } - } - } - } + + $form->redirect($locale->text('User saved!')); } -sub pg_database_administration { +sub delete { - $form->{dbdriver} = 'Pg'; - &dbselect_source; + $form->{templates} = ($form->{templates}) ? "$templates/$form->{templates}" : "$templates/$form->{login}"; -} + $form->error("$memberfile ".$locale->text('locked!')) if (-f ${memberfile}.LCK); + open(FH, ">${memberfile}.LCK") or $form->error("${memberfile}.LCK : $!"); + close(FH); -sub pgpp_database_administration { + if (! open(CONF, "+<$memberfile")) { + unlink "${memberfile}.LCK"; + $form->error("$memberfile : $!"); + } - $form->{dbdriver} = 'PgPP'; - &dbselect_source; + @config = <CONF>; -} + seek(CONF, 0, 0); + truncate(CONF, 0); + while ($line = shift @config) { -sub oracle_database_administration { - - $form->{dbdriver} = 'Oracle'; - &dbselect_source; + chop $line; -} + if ($line =~ /^\[/) { + last if ($line eq "[$form->{login}]"); + $login = &login_name($line); + } + if ($line =~ /^templates=/) { + ($null, $user{$login}) = split /=/, $line, 2; + } -sub dbdriver_defaults { + print CONF "$line\n"; + } - # load some defaults for the selected driver - %driverdefaults = ( 'Pg' => { dbport => '', - dbuser => 'ledger-smb', - dbdefault => 'template1', - dbhost => '', - connectstring => $locale->text('Connect to') - }, - 'Oracle' => { dbport => '1521', - dbuser => 'oralin', - dbdefault => $sid, - dbhost => `hostname`, - connectstring => 'SID' - } - ); + # remove everything up to next login or EOF + # and save template variable + while ($line = shift @config) { - $driverdefaults{PgPP} = $driverdefaults{Pg}; + chop $line; - for (keys %{ $driverdefaults{Pg} }) { $form->{$_} = $driverdefaults{$form->{dbdriver}}{$_} } - -} - + ($key, $value) = split /=/, $line, 2; + $myconfig{$key} = $value; -sub dbselect_source { + last if ($line =~ /^\[/); + } - &dbdriver_defaults; + # this one is either the next login or EOF + print CONF "$line\n"; - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." / ".$locale->text('Database Administration'); - - $form->{login} = "root login"; - $form->header; + $login = &login_name($line); - print qq| -<body class=admin> -<center> -<h2>$form->{title}</h2> + while ($line = shift @config) { -<form method=post action=$form->{script}> + chop $line; -<table> - <tr> - <td> - <table> - <tr class=listheading> - <th colspan=4>|.$locale->text('Database').qq|</th> - </tr> - <input type=hidden name=dbdriver value=$form->{dbdriver}> - <tr> - <td> - <table> - <tr> - <th align=right>|.$locale->text('Host').qq|</th> - <td><input name=dbhost size=25 value=$form->{dbhost}></td> - <th align=right>|.$locale->text('Port').qq|</th> - <td><input name=dbport size=5 value=$form->{dbport}></td> - </tr> - <tr> - <th align=right>|.$locale->text('User').qq|</th> - <td><input name=dbuser size=10 value=$form->{dbuser}></td> - <th align=right>|.$locale->text('Password').qq|</th> - <td><input type=password name=dbpasswd size=10></td> - </tr> - <tr> + if ($line =~ /^\[/) { + $login = &login_name($line); + } - <th align=right>$form->{connectstring}</th> - <td colspan=3><input name=dbdefault size=10 value=$form->{dbdefault}></td> + if ($line =~ /^templates=/) { + ($null, $user{$login}) = split /=/, $line, 2; + } - </tr> - </table> - </td> - </tr> - </table> + print CONF "$line\n"; + } -<input name=callback type=hidden value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"> -<input type=hidden name=path value=$form->{path}> -<input type=hidden name=sessionid value=$form->{sessionid}> + close(CONF); + unlink "${memberfile}.LCK"; -<br> + # scan %user for $templatedir + foreach $login (keys %user) { + last if ($found = ($form->{templates} eq $user{$login})); + } -<input type=submit class=submit name=action value="|.$locale->text('Create Dataset').qq|"> -<input type=submit class=submit name=action value="|.$locale->text('Update Dataset').qq|"> -<input type=submit class=submit name=action value="|.$locale->text('Delete Dataset').qq|"> + # if found keep directory otherwise delete + if (!$found) { -</form> + # delete it if there is a template directory + $dir = "$form->{templates}"; + if (-d "$dir") { + unlink <$dir/*>; + rmdir "$dir"; + } + } - </td> - </tr> -</table> + if ($myconfig{dbconnect}) { -<p>|.$locale->text('This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!') + $myconfig{dbpasswd} = unpack 'u', $myconfig{dbpasswd}; + for (keys %myconfig) { $form->{$_} = $myconfig{$_} } -.qq| -</body> -</html> -|; + User->delete_login(\%$form); -} + # delete config file for user + unlink "$userspath/$form->{login}.conf"; + } + $form->redirect($locale->text('User deleted!')); +} -sub continue { - &{ $form->{nextsub} }; +sub login_name { + my $login = shift; + $login =~ s/\[\]//g; + return ($login) ? $login : undef; } -sub update_dataset { - - %needsupdate = User->dbneedsupdate(\%$form); - - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Database Administration')." / ".$locale->text('Update Dataset'); - - $form->{login} = "root login"; - $form->header; +sub change_admin_password { - print qq| -<body class=admin> + $form->{title} = qq|LedgerSMB |.$locale->text('Accounting')." ".$locale->text('Administration')." / ".$locale->text('Change Admin Password'); + $form->{login} = "root login"; + $form->header; -<center> -<h2>$form->{title}</h2> -|; + print qq| + <body class="admin"> + <form method="post" action="$form->{script}"> + <table> + <tr class="listheading"> + <th>|.$locale->text('Change Password').qq|</th> + </tr> + <tr size="5"></tr> + <tr> + <td> + <table width="100%"> + <tr> + <th align="right">|.$locale->text('Password').qq|</th> + <td><input type="password" name="new_password" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('Confirm').qq|</th> + <td><input type="password" name="confirm_password" /></td> + </tr> + </table> + </td> + </tr> + </table> + <br /> + <hr size="3" noshade /> + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <p><input type="submit" class="submit" name="action" value="|.$locale->text('Change Password').qq|" /></p> + </form> + </body> + </html> + |; +} - foreach $key (sort keys %needsupdate) { - if ($needsupdate{$key} ne $form->{dbversion}) { - $upd .= qq|<input name="db$key" class=checkbox type=checkbox value=1 checked> $key\n|; - $form->{dbupdate} .= "db$key "; - } - } - chop $form->{dbupdate}; +sub change_password { + $form->error($locale->text('Passwords do not match!')) if $form->{new_password} ne $form->{confirm_password}; + $root->{password} = $form->{new_password}; + $root->{'root login'} = 1; + $root->save_member($memberfile); + $form->{callback} = "$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"; + $form->redirect($locale->text('Password changed!')); +} - if ($form->{dbupdate}) { +sub get_hash { + use Digest::MD5; + $form->{hash} = Digest::MD5::md5_hex rand(); - print qq| -<table width=100%> -<form method=post action=$form->{script}> +} -<input type=hidden name=dbdriver value=$form->{dbdriver}> -<input type=hidden name=dbhost value=$form->{dbhost}> -<input type=hidden name=dbport value=$form->{dbport}> -<input type=hidden name=dbuser value=$form->{dbuser}> -<input type=hidden name=dbpasswd value=$form->{dbpasswd}> -<input type=hidden name=dbdefault value=$form->{dbdefault}> +sub check_password { -<tr class=listheading> - <th>|.$locale->text('The following Datasets need to be updated').qq|</th> -</tr> -<tr> -<td> + $root = new User "$memberfile", "root login"; -$upd + if ($root->{password}) { -</td> -</tr> -<tr> -<td> + if ($form->{password}) { -<input name=dbupdate type=hidden value="$form->{dbupdate}"> + $form->{callback} .= "&password=$form->{password}" if $form->{callback}; + $form->{sessionid} = time; -<input name=callback type=hidden value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"> + if ($root->{password} ne crypt $form->{password}, 'ro') { + &getpassword; + exit; + } -<input type=hidden name=path value=$form->{path}> -<input type=hidden name=sessionid value=$form->{sessionid}> + &get_hash; -<input type=hidden name=nextsub value=dbupdate> + open(HASHFILE, "> $userspath/adminhash") || $form->error("Can't Open Hashfile: $!"); + print HASHFILE $form->{hash}; + print qq|Set-Cookie: LedgerSMB=$form->{hash}; path=/;\n|; -<hr size=3 noshade> + } else { -<br> -<input type=submit class=submit name=action value="|.$locale->text('Continue').qq|"> + if ($ENV{HTTP_USER_AGENT}) { -</td></tr> -</table> -</form> -|; + $ENV{HTTP_COOKIE} =~ s/;\s*/;/g; + %cookie = split /[=;]/, $ENV{HTTP_COOKIE}; # Changeme to %cookies + $cookie = ($form->{path} eq 'bin/lynx') ? $cookie{login} : $cookie{"LedgerSMB-root login"}; - } else { + #fixes problem with first login and such + if (!(-f "$userspath/adminhash")) { + &get_hash; + open(HASHFILE, "> $userspath/adminhash") || $form->error("Can't Open Hashfile: $!"); + print HASHFILE $form->{hash}; + close(HASHFILE); + } - print $locale->text('DBA')." : $form->{dbuser} : " .$locale->text('All Datasets up to date!'); + open (HASHFILE, "< $userspath/adminhash") || $form->error("Can't Open Hashfile: $!"); + chomp($form->{hash} = <HASHFILE>); + %cookies = split /[=;]/, $ENV{HTTP_COOKIE}; - } - - print qq| + if (! $cookie || $cookie ne $form->{sessionid} || $form->{hash} ne $cookies{LedgerSMB}) { -</body> -</html> -|; + &getpassword; + exit; + } + } + } + } } -sub dbupdate { - - User->dbupdate(\%$form); +sub pg_database_administration { - $form->redirect($locale->text('Dataset updated!')); - + $form->{dbdriver} = 'Pg'; + &dbselect_source; } -sub create_dataset { - - @dbsources = sort User->dbsources(\%$form); - - opendir SQLDIR, "sql/." or $form->error($!); - foreach $item (sort grep /-chart\.sql/, readdir SQLDIR) { - next if ($item eq 'Default-chart.sql'); - $item =~ s/-chart\.sql//; - push @charts, qq|<input name=chart class=radio type=radio value="$item">$item|; - } - closedir SQLDIR; - - # add Default at beginning - unshift @charts, qq|<input name=chart class=radio type=radio value="Default" checked>Default|; +sub pgpp_database_administration { - $selectencoding = qq|<option> - <option value=SQL_ASCII>ASCII - <option value=EUC_JP>Japanese EUC - <option value=EUC_CN>Chinese EUC - <option value=EUC_KR>Korean EUC - <option value=JOHAB>Korean EUC (Hangle base) - <option value=EUC_TW>Taiwan EUC - <option value=UNICODE>Unicode (UTF-8) - <option value=MULE_INTERNAL>Mule internal type - <option value=LATIN1>ISO 8859-1/ECMA 94 (Latin alphabet no. 1) - <option value=LATIN2>ISO 8859-2/ECMA 94 (Latin alphabet no. 2) - <option value=LATIN3>ISO 8859-3/ECMA 94 (Latin alphabet no. 3) - <option value=LATIN4>ISO 8859-4/ECMA 94 (Latin alphabet no. 4) - <option value=LATIN5>ISO 8859-9/ECMA 128 (Latin alphabet no. 5) - <option value=LATIN6>ISO 8859-10/ECMA 144 (Latin alphabet no. 6) - <option value=LATIN7>ISO 8859-13 (Latin alphabet no. 7) - <option value=LATIN8>ISO 8859-14 (Latin alphabet no. 8) - <option value=LATIN9>ISO 8859-15 (Latin alphabet no. 9) - <option value=LATIN10>ISO 8859-16/ASRO SR 14111 (Latin alphabet no. 10) - <option value=ISO_8859_5>ISO 8859-5/ECMA 113 (Latin/Cyrillic) - <option value=ISO_8859_6>ISO 8859-6/ECMA 114 (Latin/Arabic) - <option value=ISO_8859_7>ISO 8859-7/ECMA 118 (Latin/Greek) - <option value=ISO_8859_8>ISO 8859-8/ECMA 121 (Latin/Hebrew) - <option value=KOI8>KOI8-R(U) - <option value=WIN>Windows CP1251 - <option value=ALT>Windows CP866 - <option value=WIN1256>Windows CP1256 (Arabic) - <option value=TCVN>Windows CP1258 (Vietnamese) - <option value=WIN874>Windows CP874 (Thai) - |; - - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Database Administration')." / ".$locale->text('Create Dataset'); - - $form->{login} = "root login"; - $form->header; + $form->{dbdriver} = 'PgPP'; + &dbselect_source; - print qq| -<body class=admin> +} -<center> -<h2>$form->{title}</h2> +sub dbdriver_defaults { -<form method=post action=$form->{script}> + # load some defaults for the selected driver + %driverdefaults = ( 'Pg' => { dbport => '', + dbuser => 'ledger-smb', + dbdefault => 'template1', + dbhost => '', + connectstring => $locale->text('Connect to') + } ); -<table width=100%> - <tr class=listheading> - <th colspan=2> </th> - </tr> + $driverdefaults{PgPP} = $driverdefaults{Pg}; - <tr> + for (keys %{ $driverdefaults{Pg} }) { $form->{$_} = $driverdefaults{$form->{dbdriver}}{$_} } - <th align=right nowrap>|.$locale->text('Existing Datasets').qq|</th> - <td> -|; +} - for (@dbsources) { print "[ $_ ] " } - - print qq| - </td> - </tr> - - <tr> - <th align=right nowrap>|.$locale->text('Create Dataset').qq|</th> - <td><input name=db></td> +sub dbselect_source { - </tr> + &dbdriver_defaults; - <tr> + $form->{title} = "LedgerSMB ".$locale->text('Accounting')." / ".$locale->text('Database Administration'); - <th align=right nowrap>|.$locale->text('Multibyte Encoding').qq|</th> - <td><select name=encoding>$selectencoding</select></td> + $form->{login} = "root login"; + $form->header; - </tr> - - <tr> + #an insane amount of table nesting here, this should be cleaned up. + print qq| + <body class="admin"> + <center> + <h2>$form->{title}</h2> + <form method="post" action="$form->{script}" /> + <table> + <tr> + <td> + <table> + <tr class="listheading"> + <th colspan="4">|.$locale->text('Database').qq|</th> + </tr> + <tr> + <td> + <table> + <tr> + <th align="right">|.$locale->text('Host').qq|</th> + <td><input name="dbhost" size="25" value="$form->{dbhost}" /></td> + <th align="right">|.$locale->text('Port').qq|</th> + <td><input name="dbport" size="5" value="$form->{dbport}" /></td> + </tr> + <tr> + <th align="right">|.$locale->text('User').qq|</th> + <td><input name="dbuser" size="10" value="$form->{dbuser}" /></td> + <th align="right">|.$locale->text('Password').qq|</th> + <td><input type="password" name="dbpasswd" size="10" /></td> + </tr> + <tr> + <th align="right">$form->{connectstring}</th> + <td colspan="3"><input name="dbdefault" size="10" value="$form->{dbdefault}" /></td> + </tr> + </table> + </td> + </tr> + </table> + </td> + </tr> + </table> + <input type="hidden" name="dbdriver" value="$form->{dbdriver}" /> + <input name="callback" type="hidden" value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}" /> + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <br /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Create Dataset').qq|" /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Update Dataset').qq|" /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Delete Dataset').qq|" /> + </form> + <p>|.$locale->text('This is a preliminary check for existing sources. Nothing will be created or deleted at this stage!') + .qq|</p> + </center> + </body> + </html> + |; +} - <th align=right nowrap>|.$locale->text('Create Chart of Accounts').qq|</th> - <td> - <table> -|; - while (@charts) { - print qq| - <tr> -|; +sub continue { - for (0 .. 2) { print "<td>$charts[$_]</td>\n" } + &{ $form->{nextsub} }; +} - print qq| - </tr> -|; - splice @charts, 0, 3; - } +sub update_dataset { - print qq| - </table> - </td> - </tr> - <tr> - <td colspan=2> - <hr size=3 noshade> - </td> - </tr> -</table> -|; + %needsupdate = User->dbneedsupdate(\%$form); - $form->hide_form(qw(dbdriver dbuser dbhost dbport dbpasswd dbdefault path sessionid)); - - print qq| - -<input name=callback type=hidden value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"> -<input type=hidden name=nextsub value=dbcreate> - -<br> -<input type=submit class=submit name=action value="|.$locale->text('Continue').qq|"> + $form->{title} = "LedgerSMB ".$locale->text('Accounting')." " + .$locale->text('Database Administration')." / " + .$locale->text('Update Dataset'); + $form->{login} = "root login"; + $form->header; + print qq| + <body class="admin"> + <center> + <h2>$form->{title}</h2> + |; -</form> + foreach $key (sort keys %needsupdate) { -</body> -</html> -|; + if ($needsupdate{$key} ne $form->{dbversion}) { + $upd .= qq|<input name="db$key" class="checkbox" type="checkbox" value="1" checked /> $key\n|; + $form->{dbupdate} .= "db$key "; + } + } -} + chop $form->{dbupdate}; + if ($form->{dbupdate}) { -sub dbcreate { + print qq| + <form method="post" action="$form->{script}" /> + <input type="hidden" name="dbdriver" value="$form->{dbdriver}" /> + <input type="hidden" name="dbhost" value="$form->{dbhost}" /> + <input type="hidden" name="dbport" value="$form->{dbport}" /> + <input type="hidden" name="dbuser" value="$form->{dbuser}" /> + <input type="hidden" name="dbpasswd" value="$form->{dbpasswd}" /> + <input type="hidden" name="dbdefault" value="$form->{dbdefault}" /> + <input name="dbupdate" type="hidden" value="$form->{dbupdate}" /> + <input name="callback" type="hidden" value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}" /> + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <input type="hidden" name="nextsub" value="dbupdate" /> + + <table width="100%"> + <tr class="listheading"> + <th>|.$locale->text('The following Datasets need to be updated').qq|</th> + </tr> + <tr> + <td> + $upd + </td> + </tr> + <tr> + <td> + <hr size="3" noshade /> + <br /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Continue').qq|" /> + </td> + </tr> + </table> + </form> + |; - $form->isblank("db", $locale->text('Dataset missing!')); + } else { - User->dbcreate(\%$form); - - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Database Administration')." / ".$locale->text('Create Dataset'); + print $locale->text('DBA')." : $form->{dbuser} : " .$locale->text('All Datasets up to date!'); + } - $form->{login} = "root login"; - $form->header; + print qq| + </body> + </html> + |; - print qq| -<body class=admin> +} -<center> -<h2>$form->{title}</h2> +sub dbupdate { -<form method=post action=$form->{script}>| + User->dbupdate(\%$form); + $form->redirect($locale->text('Dataset updated!')); +} -.$locale->text('Dataset')." $form->{db} ".$locale->text('successfully created!') -.qq| +sub create_dataset { -<input type=hidden name=path value="$form->{path}"> -<input type=hidden name=sessionid value=$form->{sessionid}> + @dbsources = sort User->dbsources(\%$form); -<input type=hidden name=nextsub value=list_users> + opendir SQLDIR, "sql/." or $form->error($!); -<p><input type=submit class=submit name=action value="|.$locale->text('Continue').qq|"> -</form> + foreach $item (sort grep /-chart\.sql/, readdir SQLDIR) { + next if ($item eq 'Default-chart.sql'); + $item =~ s/-chart\.sql//; + push @charts, qq|<input name="chart" class="radio" type="radio" value="$item" />$item|; + } + closedir SQLDIR; -</body> -</html> -|; + # add Default at beginning + unshift @charts, qq|<input name="chart" class="radio" type="radio" value="Default" checked />Default|; -} + $selectencoding = qq|<option></option> + <option value="SQL_ASCII">ASCII</option> + <option value="EUC_JP">Japanese EUC</option> + <option value="EUC_CN">Chinese EUC</option> + <option value="EUC_KR">Korean EUC</option> + <option value="JOHAB">Korean EUC (Hangle base)</option> + <option value="EUC_TW">Taiwan EUC</option> + <option value="UNICODE">Unicode (UTF-8)</option> + <option value="MULE_INTERNAL">Mule internal type</option> + <option value="LATIN1">ISO 8859-1/ECMA 94 (Latin alphabet no. 1)</option> + <option value="LATIN2">ISO 8859-2/ECMA 94 (Latin alphabet no. 2)</option> + <option value="LATIN3">ISO 8859-3/ECMA 94 (Latin alphabet no. 3)</option> + <option value="LATIN4">ISO 8859-4/ECMA 94 (Latin alphabet no. 4)</option> + <option value="LATIN5">ISO 8859-9/ECMA 128 (Latin alphabet no. 5)</option> + <option value="LATIN6">ISO 8859-10/ECMA 144 (Latin alphabet no. 6)</option> + <option value="LATIN7">ISO 8859-13 (Latin alphabet no. 7)</option> + <option value="LATIN8">ISO 8859-14 (Latin alphabet no. 8)</option> + <option value="LATIN9">ISO 8859-15 (Latin alphabet no. 9)</option> + <option value="LATIN10">ISO 8859-16/ASRO SR 14111 (Latin alphabet no. 10)</option> + <option value="ISO_8859_5">ISO 8859-5/ECMA 113 (Latin/Cyrillic)</option> + <option value="ISO_8859_6">ISO 8859-6/ECMA 114 (Latin/Arabic)</option> + <option value="ISO_8859_7">ISO 8859-7/ECMA 118 (Latin/Greek)</option> + <option value="ISO_8859_8">ISO 8859-8/ECMA 121 (Latin/Hebrew)</option> + <option value="KOI8">KOI8-R(U)</option> + <option value="WIN">Windows CP1251</option> + <option value="ALT">Windows CP866</option> + <option value="WIN1256">Windows CP1256 (Arabic)</option> + <option value="TCVN">Windows CP1258 (Vietnamese)</option> + <option value="WIN874">Windows CP874 (Thai)</option> + |; + $form->{title} = "LedgerSMB ".$locale->text('Accounting') + ." ".$locale->text('Database Administration') + ." / ".$locale->text('Create Dataset'); + $form->{login} = "root login"; + $form->header; -sub delete_dataset { + print qq| + <body class="admin"> + <center> + <h2>$form->{title}</h2> + <form method="post" action="$form->{script}" /> + <table width="100%"> + <tr class="listheading"> + <th colspan="2"> </th> + </tr> + <tr> + <th align="right" nowrap="nowrap">|.$locale->text('Existing Datasets').qq|</th> + <td> + |; - if (@dbsources = User->dbsources_unused(\%$form, $memberfile)) { - foreach $item (sort @dbsources) { - $dbsources .= qq|<input name=db class=radio type=radio value=$item> $item |; - } - } else { - $form->error($locale->text('Nothing to delete!')); - } + for (@dbsources) { print "[ $_ ] " } - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Database Administration')." / ".$locale->text('Delete Dataset'); + print qq| + </td> + </tr> + <tr> + <th align="right" nowrap="nowrap">|.$locale->text('Create Dataset').qq|</th> + <td><input name="db" /></td> + </tr> + <tr> + <th align="right" nowrap="nowrap">|.$locale->text('Multibyte Encoding').qq|</th> + <td><select name="encoding">$selectencoding</select></td> + </tr> + <tr> + <th align="right" nowrap="nowrap">|.$locale->text('Create Chart of Accounts').qq|</th> + <td> + <table> + |; - $form->{login} = "root login"; - $form->header; + while (@charts) { + print qq| <tr>|; - print qq| -<body class=admin> + for (0 .. 2) { print "<td>$charts[$_]</td>\n" } -<h2>$form->{title}</h2> + print qq| </tr>|; -<form method=post action=$form->{script}> + splice @charts, 0, 3; + } -<table width=100%> - <tr class=listheading> - <th>|.$locale->text('The following Datasets are not in use and can be deleted').qq|</th> - </tr> + print qq| </table> + </td> + </tr> + <tr> + <td colspan="2"> + <hr size="3" noshade /> + </td> + </tr> + </table> + |; - <tr> - <td> - $dbsources - </td> - </tr> - - <tr><td> -<p> -<input type=hidden name=dbdriver value=$form->{dbdriver}> -<input type=hidden name=dbuser value=$form->{dbuser}> -<input type=hidden name=dbhost value=$form->{dbhost}> -<input type=hidden name=dbport value=$form->{dbport}> -<input type=hidden name=dbpasswd value=$form->{dbpasswd}> -<input type=hidden name=dbdefault value=$form->{dbdefault}> + $form->hide_form(qw(dbdriver dbuser dbhost dbport dbpasswd dbdefault path sessionid)); -<input name=callback type=hidden value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"> + print qq| + <input name="callback" type="hidden" value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}" /> + <input type="hidden" name="nextsub" value="dbcreate" /> + <br /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Continue').qq|" /> + </form> + </body> + </html> + |; -<input type=hidden name=path value="$form->{path}"> -<input type=hidden name=sessionid value=$form->{sessionid}> +} -<input type=hidden name=nextsub value=dbdelete> -<hr size=3 noshade> +sub dbcreate { -<br> -<input type=submit class=submit name=action value="|.$locale->text('Continue').qq|"> + $form->isblank("db", $locale->text('Dataset missing!')); - </td></tr> -</table> + User->dbcreate(\%$form); -</form> + $form->{title} = "LedgerSMB ".$locale->text('Accounting') + ." ".$locale->text('Database Administration') + ." / ".$locale->text('Create Dataset'); -</body> -</html> -|; + $form->{login} = "root login"; + $form->header; + print qq| + <body class="admin"> + <center> + <h2>$form->{title}</h2> + <form method="post" action="$form->{script}">| + .$locale->text('Dataset')." $form->{db} ".$locale->text('successfully created!') + .qq| + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <input type="hidden" name="nextsub" value="list_users" /> + <p><input type="submit" class="submit" name="action" value="|.$locale->text('Continue').qq|" /></p> + </form> + </center> + </body> + </html> + |; } -sub dbdelete { - - if (!$form->{db}) { - $form->error($locale->text('No Dataset selected!')); - } - - User->dbdelete(\%$form); +sub delete_dataset { - $form->{title} = "LedgerSMB ".$locale->text('Accounting')." ".$locale->text('Database Administration')." / ".$locale->text('Delete Dataset'); + if (@dbsources = User->dbsources_unused(\%$form, $memberfile)) { - $form->{login} = "root login"; - $form->header; + foreach $item (sort @dbsources) { + $dbsources .= qq|<input name="db" class="radio" type="radio" value="$item" /> $item |; + } - print qq| -<body class=admin> + } else { + $form->error($locale->text('Nothing to delete!')); + } + $form->{title} = "LedgerSMB ".$locale->text('Accounting') + ." ".$locale->text('Database Administration') + ." / ".$locale->text('Delete Dataset'); -<center> -<h2>$form->{title}</h2> + $form->{login} = "root login"; + $form->header; -<form method=post action=$form->{script}> + print qq| + <body class="admin"> + <h2>$form->{title}</h2> + <form method="post" action="$form->{script}" /> + <input type="hidden" name="dbdriver" value="$form->{dbdriver}" /> + <input type="hidden" name="dbuser" value="$form->{dbuser}" /> + <input type="hidden" name="dbhost" value="$form->{dbhost}" /> + <input type="hidden" name="dbport" value="$form->{dbport}" /> + <input type="hidden" name="dbpasswd" value="$form->{dbpasswd}" /> + <input type="hidden" name="dbdefault" value="$form->{dbdefault}" /> + <input name=callback type="hidden" value="$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"> + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <input type="hidden" name="nextsub" value="dbdelete" /> + <table width="100%"> + <tr class="listheading"> + <th>|.$locale->text('The following Datasets are not in use and can be deleted').qq|</th> + </tr> + <tr> + <td> + $dbsources + </td> + </tr> + <tr> + <td> + <hr size="3" noshade /> + <br /> + <input type="submit" class="submit" name="action" value="|.$locale->text('Continue').qq|" /> + </td> + </tr> + </table> + </form> + </body> + </html> + |; -$form->{db} |.$locale->text('successfully deleted!') +} -.qq| -<input type=hidden name=path value="$form->{path}"> -<input type=hidden name=sessionid value=$form->{sessionid}> +sub dbdelete { -<input type=hidden name=nextsub value=list_users> + if (!$form->{db}) { + $form->error($locale->text('No Dataset selected!')); + } -<p><input type=submit class=submit name=action value="|.$locale->text('Continue').qq|"> -</form> + User->dbdelete(\%$form); + $form->{title} = "LedgerSMB ".$locale->text('Accounting') + ." ".$locale->text('Database Administration') + ." / ".$locale->text('Delete Dataset'); -</body> -</html> -|; + $form->{login} = "root login"; + $form->header; + print qq| + <body class="admin"> + <center> + <h2>$form->{title}</h2> + $form->{db} |.$locale->text('successfully deleted!') + .qq| + <form method="post" action="$form->{script}" /> + <input type="hidden" name="path" value="$form->{path}" /> + <input type="hidden" name="sessionid" value="$form->{sessionid}" /> + <input type="hidden" name="nextsub" value="list_users" /> + <p><input type="submit" class="submit" name="action" value="|.$locale->text('Continue').qq|" /></p> + </form> + </body> + </html> + |; } sub unlock_system { - unlink "$userspath/nologin"; - - $form->{callback} = "$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"; - - $form->redirect($locale->text('Lockfile removed!')); - + unlink "$userspath/nologin"; + $form->{callback} = "$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"; + $form->redirect($locale->text('Lockfile removed!')); } sub lock_system { - open(FH, ">$userspath/nologin") or $form->error($locale->text('Cannot create Lock!')); - close(FH); - - $form->{callback} = "$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"; - - $form->redirect($locale->text('Lockfile created!')); - + open(FH, ">$userspath/nologin") or $form->error($locale->text('Cannot create Lock!')); + close(FH); + $form->{callback} = "$form->{script}?action=list_users&path=$form->{path}&sessionid=$form->{sessionid}"; + $form->redirect($locale->text('Lockfile created!')); } - - - |
