Revision d4dd649f
Von Sven Schöling vor mehr als 11 Jahren hinzugefügt
SL/Common.pm | ||
---|---|---|
329 | 329 |
$main::lxdebug->leave_sub(); |
330 | 330 |
} |
331 | 331 |
|
332 |
# |
|
333 |
# Legt ein entsprechendes Webdav-Verzeichnis an, falls |
|
334 |
# Webdav als Option konfiguriert ist. Falls schon ein |
|
335 |
# Ordner vorhanden ist, werden alle Dateien alphabetisch |
|
336 |
# sortiert ausgelesen und an der Oberfläche angezeigt |
|
337 |
# |
|
338 | 332 |
sub webdav_folder { |
339 | 333 |
$main::lxdebug->enter_sub(); |
340 | 334 |
|
... | ... | |
347 | 341 |
|
348 | 342 |
$form->{WEBDAV} = []; |
349 | 343 |
|
350 |
my ($path, $number) = get_webdav_folder($form); # ausgelagert
|
|
344 |
my ($path, $number) = get_webdav_folder($form); |
|
351 | 345 |
return $main::lxdebug->leave_sub() unless ($path && $number); |
352 | 346 |
|
353 | 347 |
if (!-d $path) { |
... | ... | |
357 | 351 |
my $base_path = $ENV{'SCRIPT_NAME'}; |
358 | 352 |
$base_path =~ s|[^/]+$||; |
359 | 353 |
if (opendir my $dir, $path) { |
360 |
# alphabetisch sortiert. |
|
361 | 354 |
foreach my $file (sort { lc $a cmp lc $b } readdir $dir) { |
362 | 355 |
next if (($file eq '.') || ($file eq '..')); |
363 | 356 |
|
... | ... | |
559 | 552 |
} |
560 | 553 |
} |
561 | 554 |
|
562 |
# |
|
563 |
# Diese Routine baut aus dem Masken-Typ und der |
|
564 |
# Beleg-Nummer, das entsprechende Webdav-Verzeichnis zusammen |
|
565 |
# Nimmt leider noch die ganze Form entgegen und den if-elsif-Block |
|
566 |
# sollte man schöner "dispatchen" |
|
567 |
# Ergänzung 6.5.2011, den else-Zweig defensiver gestaltet und mit |
|
568 |
# -1 als n.i.O. Rückgabewert versehen |
|
569 |
# |
|
570 | 555 |
sub get_webdav_folder { |
571 | 556 |
$main::lxdebug->enter_sub(); |
572 | 557 |
|
... | ... | |
596 | 581 |
} elsif ($form->{vc} eq "vendor") { |
597 | 582 |
($path, $number) = ("einkaufsrechnungen", $form->{invnumber}); |
598 | 583 |
} else { |
599 |
# wir befinden uns nicht in einer belegmaske |
|
600 |
# scheinbar wird diese routine auch bspw. bei waren |
|
601 |
# aufgerufen - naja, steuerung über die $form halt ... |
|
602 | 584 |
$main::lxdebug->leave_sub(); |
603 | 585 |
return undef; |
604 | 586 |
} |
... | ... | |
612 | 594 |
return ($path, $number); |
613 | 595 |
} |
614 | 596 |
|
615 |
# |
|
616 |
# Falls Webdav aktiviert ist, auch den generierten Beleg in das |
|
617 |
# Webdav-Verzeichnis kopieren |
|
618 |
# |
|
619 |
# |
|
620 | 597 |
sub copy_file_to_webdav_folder { |
621 | 598 |
$main::lxdebug->enter_sub(); |
622 | 599 |
|
... | ... | |
631 | 608 |
} |
632 | 609 |
} |
633 | 610 |
|
634 |
# Den Webdav-Ordner ÜBER exakt denselben Mechanismus wie beim |
|
635 |
# Anlegen des Ordners bestimmen |
|
636 | 611 |
my ($webdav_folder, $document_name) = get_webdav_folder($form); |
637 | 612 |
|
638 | 613 |
if (! $webdav_folder){ |
639 | 614 |
$main::lxdebug->leave_sub(); |
640 | 615 |
$main::form->error($main::locale->text("Cannot check correct webdav folder")); |
641 |
return undef; # s.o. erstmal so ...
|
|
616 |
return undef; |
|
642 | 617 |
} |
643 |
# kompletter pfad |
|
618 |
|
|
644 | 619 |
$complete_path = join('/', $form->{cwd}, $webdav_folder); |
645 | 620 |
opendir my $dh, $complete_path or die "Could not open $complete_path: $!"; |
646 | 621 |
|
... | ... | |
654 | 629 |
$latest_file_name = $complete_path .'/' . $newest_name; |
655 | 630 |
my $filesize = stat($latest_file_name)->size; |
656 | 631 |
|
657 |
# prüfung auf identisch oder nicht |
|
658 | 632 |
my ($ext) = $form->{tmpfile} =~ /(\.[^.]+)$/; |
659 | 633 |
my $current_file = join('/', $form->{tmpdir}, $form->{tmpfile}); |
660 | 634 |
my $current_filesize = stat($current_file)->size; |
661 |
if ($current_filesize == $filesize) { # bei gleicher größe copy deaktivieren
|
|
635 |
if ($current_filesize == $filesize) { |
|
662 | 636 |
$main::lxdebug->leave_sub(); |
663 | 637 |
return; |
664 | 638 |
} |
665 |
# zeitstempel und dateinamen holen |
|
639 |
|
|
666 | 640 |
my $timestamp = get_current_formatted_time(); |
667 | 641 |
my $myfilename = $form->generate_attachment_filename(); |
668 |
# entsprechend vor der endung hinzufügen |
|
669 | 642 |
$myfilename =~ s/\./$timestamp\./; |
670 | 643 |
|
671 | 644 |
if (!copy(join('/', $form->{tmpdir}, $form->{tmpfile}), join('/', $form->{cwd}, $webdav_folder, $myfilename))) { |
Auch abrufbar als: Unified diff
deutsche kommentare und blogposts entfernt.