$form->{snumber} durch $form->{snumbers} ersetzt, da dies eigentlich so vorgesehen...
[kivitendo-erp.git] / bin / mozilla / pe.pl
1 #=====================================================================
2 # LX-Office ERP
3 # Copyright (C) 2004
4 # Based on SQL-Ledger Version 2.1.9
5 # Web http://www.lx-office.org
6 #
7 #=====================================================================
8 # SQL-Ledger Accounting
9 # Copyright (c) 1998-2002
10 #
11 #  Author: Dieter Simader
12 #   Email: dsimader@sql-ledger.org
13 #     Web: http://www.sql-ledger.org
14 #
15 #
16 # This program is free software; you can redistribute it and/or modify
17 # it under the terms of the GNU General Public License as published by
18 # the Free Software Foundation; either version 2 of the License, or
19 # (at your option) any later version.
20 #
21 # This program is distributed in the hope that it will be useful,
22 # but WITHOUT ANY WARRANTY; without even the implied warranty of
23 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 # GNU General Public License for more details.
25 # You should have received a copy of the GNU General Public License
26 # along with this program; if not, write to the Free Software
27 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 #======================================================================
29 #
30 # project administration
31 # partsgroup administration
32 #
33 #======================================================================
34
35 use SL::PE;
36
37 require "bin/mozilla/common.pl";
38
39 1;
40
41 # end of main
42
43 sub add {
44   $lxdebug->enter_sub();
45
46   $form->{title} = "Add";
47
48   # construct callback
49   $form->{callback} =
50     "$form->{script}?action=add&type=$form->{type}&path=$form->{path}&login=$form->{login}&password=$form->{password}"
51     unless $form->{callback};
52
53   call_sub("form_$form->{type}_header");
54   call_sub("form_$form->{type}_footer");
55
56   $lxdebug->leave_sub();
57 }
58
59 sub edit {
60   $lxdebug->enter_sub();
61   # show history button
62   $form->{javascript} = qq|<script type="text/javascript" src="js/show_history.js"></script>|;
63   #/show hhistory button
64   $form->{title} = "Edit";
65
66   if ($form->{type} eq 'project') {
67     PE->get_project(\%myconfig, \%$form);
68   }
69   if ($form->{type} eq 'partsgroup') {
70     PE->get_partsgroup(\%myconfig, \%$form);
71   }
72   if ($form->{type} eq 'pricegroup') {
73     PE->get_pricegroup(\%myconfig, \%$form);
74   }
75   call_sub("form_$form->{type}_header");
76   call_sub("form_$form->{type}_footer");
77
78   $lxdebug->leave_sub();
79 }
80
81 sub search {
82   $lxdebug->enter_sub();
83
84   if ($form->{type} eq 'project') {
85     $report        = "project_report";
86     $sort          = 'projectnumber';
87     $form->{title} = $locale->text('Projects');
88
89     $number = qq|
90         <tr>
91           <th align=right width=1%>| . $locale->text('Number') . qq|</th>
92           <td>| . $cgi->textfield('-name' => 'projectnumber', '-size' => 20) . qq|</td>
93         </tr>
94         <tr>
95           <th align=right>| . $locale->text('Description') . qq|</th>
96           <td>| . $cgi->textfield('-name' => 'description', '-size' => 60) . qq|</td>
97         </tr>
98   <tr>
99     <th>&nbsp;</th>
100     <td>| .
101     $cgi->radio_group('-name' => 'active', '-default' => 'active',
102                       '-values' => ['active', 'inactive', 'both'],
103                       '-labels' => { 'active' => ' ' . $locale->text("Active"),
104                                      'inactive' => ' ' . $locale->text("Inactive"),
105                                      'both' => ' ' . $locale->text("Both") })
106     . qq|</td>
107   </tr>
108 |;
109
110   }
111   if ($form->{type} eq 'partsgroup') {
112     $report        = "partsgroup_report";
113     $sort          = 'partsgroup';
114     $form->{title} = $locale->text('Groups');
115
116     $number = qq|
117         <tr>
118           <th align=right width=1%>| . $locale->text('Group') . qq|</th>
119           <td><input name=partsgroup size=20></td>
120         </tr>
121 |;
122
123   }
124
125   # for pricesgroups
126   if ($form->{type} eq 'pricegroup') {
127     $report        = "pricegroup_report";
128     $sort          = 'pricegroup';
129     $form->{title} = $locale->text('Pricegroup');
130
131     $number = qq|
132         <tr>
133           <th align=right width=1%>| . $locale->text('Pricegroup') . qq|</th>
134           <td><input name=pricegroup size=20></td>
135         </tr>
136 |;
137
138   }
139
140   $form->header;
141
142   print qq|
143 <body>
144
145 <form method=post action=$form->{script}>
146
147 <input type=hidden name=sort value=$sort>
148 <input type=hidden name=type value=$form->{type}>
149
150 <table width=100%>
151   <tr>
152     <th class=listtop>$form->{title}</th>
153   </tr>
154   <tr height="5"></tr>
155   <tr>
156     <td>
157       <table width=100%>
158         $number
159         <tr>
160           <td></td>
161           <td><input name=status class=radio type=radio value=all checked>&nbsp;|
162     . $locale->text('All') . qq|
163           <input name=status class=radio type=radio value=orphaned>&nbsp;|
164     . $locale->text('Orphaned') . qq|</td>
165         </tr>
166       </table>
167     </td>
168   </tr>
169   <tr>
170     <td><hr size=3 noshade></td>
171   </tr>
172 </table>
173
174 <input type=hidden name=nextsub value=$report>
175
176 <input type=hidden name=path value=$form->{path}>
177 <input type=hidden name=login value=$form->{login}>
178 <input type=hidden name=password value=$form->{password}>
179
180 <br>
181 <input class=submit type=submit name=action value="|
182     . $locale->text('Continue') . qq|">
183 </form>
184
185 </body>
186 </html>
187 |;
188
189   $lxdebug->leave_sub();
190 }
191
192 sub project_report {
193   $lxdebug->enter_sub();
194
195   map { $form->{$_} = $form->unescape($form->{$_}) }
196     (projectnumber, description);
197   PE->projects(\%myconfig, \%$form);
198
199   $callback =
200     "$form->{script}?action=project_report&type=$form->{type}&path=$form->{path}&login=$form->{login}&password=$form->{password}&status=$form->{status}&active=" .
201     E($form->{active});
202   $href = $callback;
203
204   if ($form->{status} eq 'all') {
205     $option = $locale->text('All');
206   }
207   if ($form->{status} eq 'orphaned') {
208     $option .= $locale->text('Orphaned');
209   }
210   if ($form->{projectnumber}) {
211     $href     .= "&projectnumber=" . $form->escape($form->{projectnumber});
212     $callback .= "&projectnumber=$form->{projectnumber}";
213     $option   .=
214       "\n<br>" . $locale->text('Project') . " : $form->{projectnumber}";
215   }
216   if ($form->{description}) {
217     $href     .= "&description=" . $form->escape($form->{description});
218     $callback .= "&description=$form->{description}";
219     $option   .=
220       "\n<br>" . $locale->text('Description') . " : $form->{description}";
221   }
222
223   @column_index = qw(projectnumber description);
224
225   push(@column_index, "active") if ("both" eq $form->{active});
226
227   $column_header{projectnumber} =
228       qq|<th><a class=listheading href=$href&sort=projectnumber>|
229     . $locale->text('Number')
230     . qq|</a></th>|;
231   $column_header{description} =
232       qq|<th><a class=listheading href=$href&sort=description>|
233     . $locale->text('Description')
234     . qq|</a></th>|;
235   $column_header{active} =
236       qq|<th class="listheading">| . $locale->text('Active') . qq|</th>|;
237
238   $form->{title} = $locale->text('Projects');
239
240   $form->header;
241
242   print qq|
243 <body>
244
245 <table width=100%>
246   <tr>
247     <th class=listtop>$form->{title}</th>
248   </tr>
249   <tr height="5"></tr>
250   <tr>
251     <td>$option</td>
252   </tr>
253   <tr>
254     <td>
255       <table width=100%>
256         <tr class=listheading>
257 |;
258
259   map { print "$column_header{$_}\n" } @column_index;
260
261   print qq|
262         </tr>
263 |;
264
265   # escape callback
266   $form->{callback} = $callback .= "&sort=$form->{sort}";
267
268   # escape callback for href
269   $callback = $form->escape($callback);
270
271   foreach $ref (@{ $form->{project_list} }) {
272
273     $i++;
274     $i %= 2;
275
276     print qq|
277         <tr valign=top class=listrow$i>
278 |;
279
280     $column_data{projectnumber} =
281       qq|<td><a href=$form->{script}?action=edit&type=$form->{type}&status=$form->{status}&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{projectnumber}</td>|;
282     $column_data{description} = qq|<td>$ref->{description}&nbsp;</td>|;
283     $column_data{active} =
284       qq|<td>| .
285       ($ref->{active} ? $locale->text("Yes") : $locale->text("No")) .
286       qq|</td>|;
287
288     map { print "$column_data{$_}\n" } @column_index;
289
290     print "
291         </tr>
292 ";
293   }
294
295   print qq|
296       </table>
297     </td>
298   </tr>
299   <tr>
300     <td><hr size=3 noshade></td>
301   </tr>
302 </table>
303
304 <br>
305 <form method=post action=$form->{script}>
306
307 <input name=callback type=hidden value="$form->{callback}">
308
309 <input type=hidden name=type value=$form->{type}>
310
311 <input type=hidden name=path value=$form->{path}>
312 <input type=hidden name=login value=$form->{login}>
313 <input type=hidden name=password value=$form->{password}>
314
315 <input class=submit type=submit name=action value="|
316     . $locale->text('Add') . qq|">
317
318   </form>
319
320 </body>
321 </html>
322 |;
323
324   $lxdebug->leave_sub();
325 }
326
327 sub form_project_header {
328   $lxdebug->enter_sub();
329
330   $form->{title} = $locale->text("$form->{title} Project");
331
332   # $locale->text('Add Project')
333   # $locale->text('Edit Project')
334
335   $form->{description} =~ s/\"/&quot;/g;
336
337   my $projectnumber =
338     $cgi->textfield('-name' => 'projectnumber', '-size' => 20,
339                     '-default' => $form->{projectnumber});
340
341   my $description;
342   if (($rows = $form->numtextrows($form->{description}, 60)) > 1) {
343     $description =
344       $cgi->textarea('-name' => 'description', '-rows' => $rows, '-cols' => 60,
345                      '-style' => 'width: 100%', '-wrap' => 'soft',
346                      '-default' => $form->{description});
347   } else {
348     $description =
349       $cgi->textfield('-name' => 'description', '-size' => 60,
350                       '-default' => $form->{description});
351   }
352
353   my $active;
354   if ($form->{id}) {
355     $active =
356       qq|
357   <tr>
358     <th>&nbsp;</th>
359     <td>| .
360       $cgi->radio_group('-name' => 'active',
361                         '-values' => [1, 0],
362                         '-default' => $form->{active} * 1,
363                         '-labels' => { 1 => $locale->text("Active"),
364                                        0 => $locale->text("Inactive") })
365       . qq|</td>
366   </tr>
367 |;
368   }
369
370   $form->header;
371
372   print qq|
373 <body>
374
375 <form method=post action=$form->{script}>
376
377 <input type=hidden name=id value=$form->{id}>
378 <input type=hidden name=type value=project>
379
380 <table width=100%>
381   <tr>
382     <th class=listtop>$form->{title}</th>
383   </tr>
384   <tr height="5"></tr>
385   <tr>
386     <td>
387       <table>
388         <tr>
389           <th align=right>| . $locale->text('Number') . qq|</th>
390           <td>$projectnumber</td>
391         </tr>
392         <tr>
393           <th align=right>| . $locale->text('Description') . qq|</th>
394           <td>$description</td>
395         </tr>
396       $active
397       </table>
398     </td>
399   </tr>
400   <tr>
401     <td colspan=2><hr size=3 noshade></td>
402   </tr>
403 </table>
404 |;
405
406   $lxdebug->leave_sub();
407 }
408
409 sub form_project_footer {
410   $lxdebug->enter_sub();
411
412   print qq|
413
414 <input name=callback type=hidden value="$form->{callback}">
415
416 <input type=hidden name=path value=$form->{path}>
417 <input type=hidden name=login value=$form->{login}>
418 <input type=hidden name=password value=$form->{password}>
419
420 <br><input type=submit class=submit name=action value="|
421     . $locale->text('Save') . qq|">
422 |;
423
424   if ($form->{id} && $form->{orphaned}) {
425     print qq|
426 <input type=submit class=submit name=action value="|
427       . $locale->text('Delete') . qq|">|;
428   }
429
430 # button for saving history
431 print qq|
432         <input type=button onclick=set_history_window(|
433         . $form->{id} 
434         . qq|); name=history id=history value=|
435         . $locale->text('history') 
436         . qq|>|;
437 # /button for saving history
438   print qq|
439 </form>
440
441 </body>
442 </html>
443 |;
444
445   $lxdebug->leave_sub();
446 }
447
448 sub save {
449   $lxdebug->enter_sub();
450
451   if ($form->{type} eq 'project') {
452     $form->isblank("projectnumber", $locale->text('Project Number missing!'));
453     PE->save_project(\%myconfig, \%$form);
454     $form->redirect($locale->text('Project saved!'));
455   }
456   if ($form->{type} eq 'partsgroup') {
457     $form->isblank("partsgroup", $locale->text('Group missing!'));
458     PE->save_partsgroup(\%myconfig, \%$form);
459     $form->redirect($locale->text('Group saved!'));
460   }
461
462   # choice pricegroup and save
463   if ($form->{type} eq 'pricegroup') {
464     $form->isblank("pricegroup", $locale->text('Pricegroup missing!'));
465     PE->save_pricegroup(\%myconfig, \%$form);
466     $form->redirect($locale->text('Pricegroup saved!'));
467   }
468   # saving the history
469   if(!exists $form->{addition} && $form->{id} ne "") {
470     $form->{snumbers} = qq|projectnumber_| . $form->{projectnumber};
471         $form->{addition} = "SAVED";
472         $form->save_history($form->dbconnect(\%myconfig));
473   }
474   # /saving the history 
475
476   $lxdebug->leave_sub();
477 }
478
479 sub delete {
480   $lxdebug->enter_sub();
481
482   PE->delete_tuple(\%myconfig, \%$form);
483
484   if ($form->{type} eq 'project') {
485     $form->redirect($locale->text('Project deleted!'));
486   }
487   if ($form->{type} eq 'partsgroup') {
488     $form->redirect($locale->text('Group deleted!'));
489   }
490   if ($form->{type} eq 'pricegroup') {
491     $form->redirect($locale->text('Pricegroup deleted!'));
492   }
493   # saving the history
494   if(!exists $form->{addition}) {
495     $form->{snumbers} = qq|projectnumber_| . $form->{projectnumber};
496         $form->{addition} = "DELETED";
497         $form->save_history($form->dbconnect(\%myconfig));
498   }
499   # /saving the history
500   $lxdebug->leave_sub();
501 }
502
503 sub continue { call_sub($form->{"nextsub"}); }
504
505 sub partsgroup_report {
506   $lxdebug->enter_sub();
507
508   map { $form->{$_} = $form->unescape($form->{$_}) } (partsgroup);
509   PE->partsgroups(\%myconfig, \%$form);
510
511   $callback =
512     "$form->{script}?action=partsgroup_report&type=$form->{type}&path=$form->{path}&login=$form->{login}&password=$form->{password}&status=$form->{status}";
513
514   if ($form->{status} eq 'all') {
515     $option = $locale->text('All');
516   }
517   if ($form->{status} eq 'orphaned') {
518     $option .= $locale->text('Orphaned');
519   }
520   if ($form->{partsgroup}) {
521     $callback .= "&partsgroup=$form->{partsgroup}";
522     $option   .= "\n<br>" . $locale->text('Group') . " : $form->{partsgroup}";
523   }
524
525   @column_index = $form->sort_columns(qw(partsgroup));
526
527   $column_header{partsgroup} =
528     qq|<th class=listheading width=90%>| . $locale->text('Group') . qq|</th>|;
529
530   $form->{title} = $locale->text('Groups');
531
532   $form->header;
533
534   print qq|
535 <body>
536
537 <table width=100%>
538   <tr>
539     <th class=listtop>$form->{title}</th>
540   </tr>
541   <tr height="5"></tr>
542   <tr>
543     <td>$option</td>
544   </tr>
545   <tr>
546     <td>
547       <table width=100%>
548         <tr class=listheading>
549 |;
550
551   map { print "$column_header{$_}\n" } @column_index;
552
553   print qq|
554         </tr>
555 |;
556
557   # escape callback
558   $form->{callback} = $callback;
559
560   # escape callback for href
561   $callback = $form->escape($callback);
562
563   foreach $ref (@{ $form->{item_list} }) {
564
565     $i++;
566     $i %= 2;
567
568     print qq|
569         <tr valign=top class=listrow$i>
570 |;
571
572     $column_data{partsgroup} =
573       qq|<td><a href=$form->{script}?action=edit&type=$form->{type}&status=$form->{status}&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{partsgroup}</td>|;
574     map { print "$column_data{$_}\n" } @column_index;
575
576     print "
577         </tr>
578 ";
579   }
580
581   print qq|
582       </table>
583     </td>
584   </tr>
585   <tr>
586     <td><hr size=3 noshade></td>
587   </tr>
588 </table>
589
590 <br>
591 <form method=post action=$form->{script}>
592
593 <input name=callback type=hidden value="$form->{callback}">
594
595 <input type=hidden name=type value=$form->{type}>
596
597 <input type=hidden name=path value=$form->{path}>
598 <input type=hidden name=login value=$form->{login}>
599 <input type=hidden name=password value=$form->{password}>
600
601 <input class=submit type=submit name=action value="|
602     . $locale->text('Add') . qq|">
603
604   </form>
605
606 </body>
607 </html>
608 |;
609
610   $lxdebug->leave_sub();
611 }
612
613 sub form_partsgroup_header {
614   $lxdebug->enter_sub();
615
616   $form->{title} = $locale->text("$form->{title} Group");
617
618   # $locale->text('Add Group')
619   # $locale->text('Edit Group')
620
621   $form->{partsgroup} =~ s/\"/&quot;/g;
622
623   $form->header;
624
625   print qq|
626 <body>
627
628 <form method=post action=$form->{script}>
629
630 <input type=hidden name=id value=$form->{id}>
631 <input type=hidden name=type value=$form->{type}>
632
633 <table width=100%>
634   <tr>
635     <th class=listtop>$form->{title}</th>
636   </tr>
637   <tr height="5"></tr>
638   <tr>
639     <td>
640       <table width=100%>
641         <tr>
642           <th align=right>| . $locale->text('Group') . qq|</th>
643
644           <td><input name=partsgroup size=30 value="$form->{partsgroup}"></td>
645         </tr>
646       </table>
647     </td>
648   </tr>
649   <tr>
650     <td colspan=2><hr size=3 noshade></td>
651   </tr>
652 </table>
653 |;
654
655   $lxdebug->leave_sub();
656 }
657
658 sub form_partsgroup_footer {
659   $lxdebug->enter_sub();
660
661   print qq|
662
663 <input name=callback type=hidden value="$form->{callback}">
664
665 <input type=hidden name=path value=$form->{path}>
666 <input type=hidden name=login value=$form->{login}>
667 <input type=hidden name=password value=$form->{password}>
668
669 <br><input type=submit class=submit name=action value="|
670     . $locale->text('Save') . qq|">
671 |;
672
673   if ($form->{id} && $form->{orphaned}) {
674     print qq|
675 <input type=submit class=submit name=action value="|
676       . $locale->text('Delete') . qq|">|;
677   }
678
679 # button for saving history
680 print qq|
681         <input type=button onclick=set_history_window(|
682         . $form->{id} 
683         . qq|); name=history id=history value=|
684         . $locale->text('history') 
685         . qq|>|;
686 # /button for saving history
687   print qq|
688 </form>
689
690 </body>
691 </html>
692 |;
693
694   $lxdebug->leave_sub();
695 }
696
697 #################################
698 # get pricesgroups and build up html-code
699 #
700 sub pricegroup_report {
701   $lxdebug->enter_sub();
702
703   map { $form->{$_} = $form->unescape($form->{$_}) } (pricegroup);
704   PE->pricegroups(\%myconfig, \%$form);
705
706   $callback =
707     "$form->{script}?action=pricegroup_report&type=$form->{type}&path=$form->{path}&login=$form->{login}&password=$form->{password}&status=$form->{status}";
708
709   if ($form->{status} eq 'all') {
710     $option = $locale->text('All');
711   }
712   if ($form->{status} eq 'orphaned') {
713     $option .= $locale->text('Orphaned');
714   }
715   if ($form->{pricegroup}) {
716     $callback .= "&pricegroup=$form->{pricegroup}";
717     $option   .=
718       "\n<br>" . $locale->text('Pricegroup') . " : $form->{pricegroup}";
719   }
720
721   @column_index = $form->sort_columns(qw(pricegroup));
722
723   $column_header{pricegroup} =
724       qq|<th class=listheading width=90%>|
725     . $locale->text('Pricegroup')
726     . qq|</th>|;
727
728   $form->{title} = $locale->text('Pricegroup');
729
730   $form->header;
731
732   print qq|
733 <body>
734
735 <table width=100%>
736   <tr>
737     <th class=listtop>$form->{title}</th>
738   </tr>
739   <tr height="5"></tr>
740   <tr>
741     <td>$option</td>
742   </tr>
743   <tr>
744     <td>
745       <table width=100%>
746         <tr class=listheading>
747 |;
748
749   map { print "$column_header{$_}\n" } @column_index;
750
751   print qq|
752         </tr>
753 |;
754
755   # escape callback
756   $form->{callback} = $callback;
757
758   # escape callback for href
759   $callback = $form->escape($callback);
760
761   foreach $ref (@{ $form->{item_list} }) {
762
763     $i++;
764     $i %= 2;
765
766     print qq|
767         <tr valign=top class=listrow$i>
768 |;
769     $column_data{pricegroup} =
770       qq|<td><a href=$form->{script}?action=edit&type=$form->{type}&status=$form->{status}&id=$ref->{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&callback=$callback>$ref->{pricegroup}</td>|;
771
772     map { print "$column_data{$_}\n" } @column_index;
773
774     print "
775         </tr>
776 ";
777   }
778
779   print qq|
780       </table>
781     </td>
782   </tr>
783   <tr>
784     <td><hr size=3 noshade></td>
785   </tr>
786 </table>
787
788 <br>
789 <form method=post action=$form->{script}>
790
791 <input name=callback type=hidden value="$form->{callback}">
792
793 <input type=hidden name=type value=$form->{type}>
794
795 <input type=hidden name=path value=$form->{path}>
796 <input type=hidden name=login value=$form->{login}>
797 <input type=hidden name=password value=$form->{password}>
798
799 <input class=submit type=submit name=action value="|
800     . $locale->text('Add') . qq|">
801
802   </form>
803
804 </body>
805 </html>
806 |;
807
808   $lxdebug->leave_sub();
809 }
810
811 #######################
812 #build up pricegroup_header
813 #
814 sub form_pricegroup_header {
815   $lxdebug->enter_sub();
816
817   # $locale->text('Add Pricegroup')
818   # $locale->text('Edit Pricegroup')
819
820   $form->{title} = $locale->text("$form->{title} Pricegroup");
821
822   $form->{pricegroup} =~ s/\"/&quot;/g;
823
824   $form->header;
825
826   print qq|
827 <body>
828
829 <form method=post action=$form->{script}>
830
831 <input type=hidden name=id value=$form->{id}>
832 <input type=hidden name=type value=$form->{type}>
833
834 <table width=100%>
835   <tr>
836     <th class=listtop>$form->{title}</th>
837   </tr>
838   <tr height="5"></tr>
839   <tr>
840     <td>
841       <table width=100%>
842         <tr>
843           <th align=right>| . $locale->text('Preisgruppe') . qq|</th>
844           <td><input name=pricegroup size=30 value="$form->{pricegroup}"></td>
845         </tr>
846       </table>
847     </td>
848   </tr>
849   <tr>
850     <td colspan=2><hr size=3 noshade></td>
851   </tr>
852 </table>
853 |;
854
855   $lxdebug->leave_sub();
856 }
857 ######################
858 #build up pricegroup_footer
859 #
860 sub form_pricegroup_footer {
861   $lxdebug->enter_sub();
862
863   print qq|
864
865 <input name=callback type=hidden value="$form->{callback}">
866
867 <input type=hidden name=path value=$form->{path}>
868 <input type=hidden name=login value=$form->{login}>
869 <input type=hidden name=password value=$form->{password}>
870
871 <br><input type=submit class=submit name=action value="|
872     . $locale->text('Save') . qq|">
873 |;
874
875   if ($form->{id} && $form->{orphaned}) {
876     print qq|
877 <input type=submit class=submit name=action value="|
878       . $locale->text('Delete') . qq|">|;
879   }
880
881 # button for saving history
882 print qq|
883         <input type=button onclick=set_history_window(|
884         . $form->{id} 
885         . qq|); name=history id=history value=|
886         . $locale->text('history') 
887         . qq|>|;
888 # /button for saving history
889   print qq|
890 </form>
891
892 </body>
893 </html>
894 |;
895
896   $lxdebug->leave_sub();
897 }