![]() |
|< 1 2 >| | ![]() |
14 Einträge, 2 Seiten |
1
2
3
4
5
6
7
8
9
10
if( $tree->{'items'}->{$key}->{'dir'} ) {
print ' ' x ($SHIFTWIDTH * $indent),
"['", $key, ", null,\n";
build_js_code( $tree->{'items'}->{$key}, $indent + 1);
print ' ' x ($SHIFTWIDTH * $indent),
"],\n";
} else {
print ' ' x ($SHIFTWIDTH * $indent),
"['", $key, "', '", $tree->{'items'}->{$key}->{'data'}->{'id'}, "'],\n";
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
sub orangeFile_explorer{
my ($hinweis) = @_;
# Dateien auslesen
my ($anzahl, %files) = orangeFile_datenlesen();
if($anzahl > 0){
$template{'file_anzahl'} = $anzahl." Dateien gefunden";
}else{
$template{'file_anzahl'} = "keine Dateien gefunden";
}
# Tree aufbauen #######################
our $SHIFTWIDTH = 4;
my $tree;
foreach(keys %files) { # jede Datenzeile
#print "Bearbeite Datei $_<br>\n";
$tree = process_data($_, $files{$_}, $tree); # verarbeiten und Baum hinzufuegen
}
my @js_tree; # Enthält den Baum in seiner Form für das JS
my $cnt=0; # Nur für debugging
sub process_data {
my($path, $row_data, $tree) = @_;
$tree = {'type' => 'dir'} unless $tree;
$path =~ s:^[\\/]::;
my($super, $sub) = split /[\/\\]/, $path, 2;
if($sub && $sub ne '') {
print "$path ist ein Verzeichnis<br>\n";
$tree->{'items'}->{$super} = process_data($sub, $row_data, {'dir' => 1});
} else {
print "$cnt. $path ist eine Datei<br>\n"; # HIER SIND ALLE DATEIEN!
$cnt++;
$tree->{'items'}->{$super} = {'file' => 1, 'data' => $row_data };
}
return $tree;
}
sub build_js_code {
my $tree = shift;
my $indent = shift || 1;
foreach my $key (sort {return $a cmp $b if $tree->{'items'}->{$a}->{'dir'}
&& $tree->{'items'}->{$b}->{'dir'};
return $a cmp $b if $tree->{'items'}->{$a}->{'file'}
&& $tree->{'items'}->{$b}->{'file'};
return $tree->{'items'}->{$a}->{'dir'} ? -1 : 1;}
keys %{ $tree->{'items'} } ) {
print "$key ist da<br>\n"; # HIER HABEN DIE UNTERVERZEICHNISSE NUR NOCH EINE DATEI.
if( $tree->{'items'}->{$key}->{'dir'} ) {
push @js_tree, ' ' x ($SHIFTWIDTH * $indent), "['", $key, "', null,\n"; # rekursiv
build_js_code( $tree->{'items'}->{$key}, $indent + 1);
push @js_tree, ' ' x ($SHIFTWIDTH * $indent), "],\n";
} else {
# Link zusammenbauen:
my $link = "?app=file&session_id=$template{'session_id'}&vertrag_id=$template{'vertrag_id'}&action=orangeFile_showfile&file_id=".$tree->{'items'}->{$key}->{'data'}->{'file_id'};
push @js_tree, ' ' x ($SHIFTWIDTH * $indent), "['", $key, "', '", $link , "'],\n"; # $key plus Link um Datei aufzurufen.
}
}
}
#######################################
# JavaScript im Dateihead für den Tree aufbauen
$template{'jshead'} .= "<script language=\"JavaScript\" src=\"../js/tree.js\"></script>\n";
$template{'jshead'} .= "<script language=\"JavaScript\" src=\"../js/tree_tpl.js\"></script>\n";
$template{'jshead'} .= "<script language=\"JavaScript\" type=\"text/javascript\">\n".
"var TREE_ITEMS = [\n".
" ['orangeFile', null,\n";
build_js_code($tree);
$template{'jshead'} .= join "", @js_tree;
$template{'jshead'} .= " ],\n".
" ];\n".
"</script>\n\n";
return("file", "explorer", $hinweis);
}
1
2
3
4
5
6
7
8
if($sub && $sub ne '') {
print "$path ist ein Verzeichnis\n";
print "(über)schreibe den key ".$super."\n";
$subtree->{'items'}->{$super} = process_data($sub, $row_data, {'dir' => 1}); #original
} else {
print "$path ist eine Datei\n";
$subtree->{'items'}->{$super} = {'file' => 1, 'data' => $row_data };
}
![]() |
|< 1 2 >| | ![]() |
14 Einträge, 2 Seiten |