View difference between Paste ID: sFrLTt3b and 7Gk0CxTr
SHOW: | | - or go back to the newest paste.
1
<?php 
2
// ----------------------------------------------------- 
3
4
header("Content-Type: text/html; charset=utf-8");
5
6
##### $source = 'http://www.google.com/basepages/producttype/taxonomy.de-DE.txt'; 
7
8
$filename = 'taxonomy.de-DE.txt'; // ---- local copy of source ---- 
9
10-
<title>Kategorie Baum - Google Taxonomy</title>
10+
$color1 = '#ACACAC'; 	// ----- Hintergrund-Farbe 1 ----- 
11
$color2 = '#FFFFFF'; 	// ----- Hintergrund-Farbe 2 ----- 
12
13
// ----------------------------------------------------- 
14
?>
15
<html>
16
<head>
17-
    if (document.getElementById(id).style.display == "none") {
17+
<title>Taxonomy Tree</title>
18-
        document.getElementById(id).style.display = "block";
18+
19-
    } else {
19+
20-
        document.getElementById(id).style.display = "none";
20+
21-
    }
21+
22
function show(id) {
23
	if (document.getElementById(id).style.display == "none") {
24
		document.getElementById(id).style.display = "block";
25
	} else {
26
		document.getElementById(id).style.display = "none";
27
	}
28
}
29
30
</script>
31-
<h1>Kategorie Baum - Google Taxonomy</h1>
31+
32
33-
<br>
33+
<style type="text/css">
34-
<br>
34+
<!--
35-
<br>
35+
.ktext { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; } 
36
.utext { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; } 
37
38
#kat_tree ul { margin:10px 0px 10px 8px; padding:6px 0px 10px 20px; } 
39
40-
### http://www.google.com/basepages/producttype/taxonomy.de-DE.txt
40+
-->
41
</style>
42-
$filename = 'taxonomy.de-DE.txt'; 
42+
43
44
</head>
45
46
<body bgcolor="#FFFFFF" text="#000000">
47
48
49
<?php 
50
// ----------------------------------------------------------------- 
51-
$max_deep = 0;  // --- max. Tiefe der Kategorie-Ebenen 
51+
52
53
54
$fdata1 = file($filename, FILE_IGNORE_NEW_LINES);
55-
foreach($fdata1 as $key => $line) { 
55+
56
57-
  if ($key > 0) { 
57+
58
59-
// ------ Kategorie Ebene ($level) ermitteln ----- 
59+
60
$kat_data = array();   // ---  Ergebnis-Array Daten
61-
	if ($nx > $max_deep) { $max_deep = $nx; } 
61+
62-
	## $level = ($nx+1); 
62+
$max_deep = 0;  // --- max. Tiefe der Kategorie-Ebenen
63-
	$level = $nx; 
63+
64
// ----------------------------------------------------------------- 
65-
// ------ Element in Array $kat_temp erstellen ----- 
65+
66-
	$subarray = explode('>', $line); 
66+
foreach($fdata1 as $key => $line) {
67-
	$kat_name = trim($subarray[$nx]); 
67+
68-
	$kat_temp[$key] = $kat_name; 
68+
	if ($key > 0) {
69
	
70-
// ------ parent_id aus $kat_temp ermitteln ----- 
70+
	// ------ Kategorie Ebene ($level) ermitteln -----
71-
	if ($nx > 0) { 
71+
72-
	  $ny = ($nx-1); 
72+
	$nxd = ($nx+1); 	
73-
	  $kat_pren = trim($subarray[$ny]); 
73+
	if ($nxd > $max_deep) { $max_deep = $nxd; }
74-
	  $kat_prek = array_search($kat_pren, $kat_temp); 
74+
	$level = $nx;
75
	
76-
	else { 
76+
	// ------ Element in Array $kat_temp erstellen -----
77-
	  $kat_pren  = 'root'; 
77+
	$subarray = explode('>', $line);
78-
	  $kat_prek = '0';
78+
	$kat_name = trim($subarray[$nx]);
79
	$kat_temp[$key] = $kat_name;
80
	
81-
// ------ Neues Array-Element erstellen ----- 
81+
	// ------ parent_id aus $kat_temp ermitteln -----
82
	if ($nx > 0) {
83-
	  'id' => $key, 
83+
		$ny = ($nx-1);
84-
	  'parent_id' => $kat_prek, 
84+
		$kat_pren = trim($subarray[$ny]);
85-
	  'level' => $level, 
85+
		$kat_prek = array_search($kat_pren, $kat_temp);
86-
	  'name' => $kat_name
86+
87-
	); 
87+
	else {
88
		$kat_pren  = 'root';
89
		$kat_prek = '0';
90-
  }
90+
91
	
92
	// ------ Neues Array-Element erstellen -----
93
	$kat_data[$key] = array(
94-
unset($kat_temp); 
94+
		'id' => $key,
95
		'parent_id' => $kat_prek,
96
		'level' => $level,
97
		'name' => $kat_name
98
	);
99-
echo "<br />\n"; 
99+
100-
echo "<br />Max Deep: ".$max_deep."\n"; 
100+
101
	}
102
103
}
104
105
unset($kat_temp);
106
107
// ----------------------------------------------------------------- 
108
109
110
// ------------ DEBUG ----------- 
111
## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
112
## print_r($kat_data);
113
## print "</pre>\n";
114
115-
$runfile = $_SERVER['PHP_SELF']; 
115+
116
117-
for ($d=1; $d<=$max_deep; $d++) { 
117+
118
echo "<br />Max Deep: ".$max_deep."\n";
119-
if ($d == $go_d) { 
119+
120-
echo "<br />... <strong>zeige ".$d." Ebene(n)</strong>\n"; 
120+
121
122
123-
echo "<br />... <a href=\"".$runfile."?d=".$d."\">zeige ".$d." Ebene(n)</a>\n"; 
123+
124
125
if (!empty($_REQUEST['d'])) { 
126
$go_d = trim($_REQUEST['d']); 
127
}
128
else { 
129
$go_d = '1'; 
130
}
131
132-
## print "<br />---- DEBUG --- kat_data ---- \n";
132+
// ------------ Ebenen - Menue ----------- 
133-
## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n"; 
133+
134-
## print_r($kat_data); 
134+
135
print "<div id=\"level_menu\" class=\"ktext\">\n"; 
136-
## print "<br />\n"; 
136+
print "<ul>\n"; 
137
138
for ($dx=1; $dx<=$max_deep; $dx++) { 
139
	if ($dx == $go_d) { echo "  <li><strong>zeige ".$dx." Ebene(n)</strong></li>\n"; }
140
	else { echo "  <li><a href=\"?d=".$dx."\">zeige ".$dx." Ebene(n)</a></li>\n"; }
141
}
142-
$outputArray = array();
142+
143-
$nodeRefs = array(0 => &$outputArray);
143+
print "</ul>\n"; 
144
print "</div>\n"; 
145
146
print "<hr />\n"; 
147
148
// ----------------------------------------------------------------- 
149
// ----------------------------------------------------------------- 
150
151
$outArray = array();
152
$nodeRefs = array(0 => &$outArray);
153
154
foreach ($kat_data as $element) {
155
	$parent = &$nodeRefs[$element['parent_id']];
156-
## print "<br />---- DEBUG --- outputArray ---- \n";
156+
157-
## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n"; 
157+
158-
## print_r($outputArray); 
158+
159
160-
## print "<br />\n"; 
160+
// ------------ DEBUG ----------- 
161
## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
162
## print_r($outArray);
163
## print "</pre>\n";
164
165-
function print_tree($array, $level=0, $view=1) { 
165+
166-
global $go_shopid; 
166+
167
// -----------------------------------------------------------------
168-
	if ($level == 0) { print "<ul id=\"katroot\" style=\"background:#DEDEDE;\">\n";  } 
168+
// -------------------- Ebenen Hintergrund-Farben ------------------
169
// -----------------------------------------------------------------
170
171-
	foreach($array as $key => $val) { 
171+
function tree_color_data($color1, $color2, $max_deep) {
172-
		
172+
173-
		$level++; 
173+
// -------- Ebenen Hintergrund-Farben --------
174-
		
174+
175-
		if ( isset($val['sub']) && !empty($val['sub']) ) { 
175+
$r1 = hexdec(substr($color1,1,2));
176-
			
176+
$g1 = hexdec(substr($color1,3,2));
177-
			$preid = $val['parent_id']; 
177+
$b1 = hexdec(substr($color1,5,2));
178-
			
178+
179-
			print "<li>".$val['name']." (<a href=\"javascript:show('".$key.$level."')\">".$preid." / ".$key."</a>) - ".$level.""; 
179+
$r2 = hexdec(substr($color2,1,2));
180-
			
180+
$g2 = hexdec(substr($color2,3,2));
181-
			
181+
$b2 = hexdec(substr($color2,5,2));
182-
			if ($level == 1) { $ulcolor = 'background:#FFFFCC;'; } 
182+
183-
				elseif ($level == 2) { $ulcolor = 'background:#CCFFFF;'; } 
183+
$diff_r = ($r2-$r1);
184-
				elseif ($level == 3) { $ulcolor = 'background:#FFFFFF;'; } 
184+
$diff_g = ($g2-$g1);
185-
				elseif ($level == 4) { $ulcolor = 'background:#FFCCFF;'; } 
185+
$diff_b = ($b2-$b1);
186-
				elseif ($level == 5) { $ulcolor = 'background:#EEEEFF;'; } 
186+
187-
				else { $ulcolor = 'background:#EAEAEA;'; } 
187+
$bgcolorarr = array(); 
188-
			
188+
189-
			if ($level >= $view) { $ulview = 'display:none;'; } 
189+
for ($i=1; $i<=$max_deep; $i++) {
190-
				else { $ulview = 'display:block;'; } 
190+
$factor = ($i / $max_deep);
191-
			
191+
192-
			$ulstyle = 'style="'.$ulview.' '.$ulcolor.'"';
192+
$r = round($r1 + $diff_r * $factor);
193-
			
193+
$g = round($g1 + $diff_g * $factor);
194-
			print "\n<ul id=\"".$key.$level."\" ".$ulstyle.">\n"; 
194+
$b = round($b1 + $diff_b * $factor);
195-
			
195+
196-
			
196+
## $xcolor = '#' . sprintf('%02X',$r) . sprintf('%02X',$g) . sprintf('%02X',$b);
197-
			print_tree($val['sub'], $level, $view); 
197+
198-
			
198+
$xcolor = '#' . dechex($r) . dechex($g) . dechex($b);
199-
			print "</li>\n</ul>\n"; 
199+
200-
			
200+
$bgcolorarr[$i] = $xcolor;
201-
		}
201+
202-
		else { 
202+
203-
		
203+
204-
			print "<li>".$val['name']." (".$key.") - ".$level."</li>\n"; 
204+
return $bgcolorarr; 
205-
		
205+
206-
		}
206+
207-
		
207+
// -----------------------------------------------------------------
208-
		
208+
209-
		$level--; 
209+
210-
		
210+
// ---- die Variable $max_deep (int) ist aus vorherigem Script vorhanden
211-
	} 
211+
212
## $color1 = '#ACACAC'; 	// ----- Hintergrund-Farbe 1 ----- 
213-
	if ($level == 0) { print "</ul>\n"; } 
213+
## $color2 = '#FFFFFF'; 	// ----- Hintergrund-Farbe 2 ----- 
214
215
if (!isset($bgcolor)) { 
216
$bgcolor = tree_color_data($color1, $color2, $max_deep);
217
$bgcolor[0] = $color1; 
218
}
219
220
221
// ------------ DEBUG ----------- 
222
## print "<pre style=\"margin:8px; padding:6px; background:#DEDEDE;\">\n";
223
## print_r($bgcolor);
224
## print "</pre>\n";
225
226-
$data_array = $outputArray; 
226+
227-
$startlevel = 0; 
227+
228-
$open_level = $go_d; 
228+
// -----------------------------------------------------------------
229
230-
print_tree($data_array, $startlevel, $open_level); 
230+
231
// -----------------------------------------------------------------
232
// ------------------- print_tree() --- Version: 3 -----------------
233
// -----------------------------------------------------------------
234
235
function print_tree($array, $level=0, $view=1) {
236
237
global $bgcolor; 	// ---- Ebenen Hintergrund-Farben ----
238
239
$anzkat = 1; 		// ---- Kategorie Zaehler ----
240
$prefix = 'kat'; 	// ---- Prefix fuer ul ID ---- 
241-
<br>
241+
$cspace = "\t"; 	// ---- Quellcode Spacer ----
242-
<br>
242+
243-
<br>
243+
$spacer = str_repeat($cspace, (($level+1)*2));
244-
<br>
244+
245-
<br>
245+
// -------- Ebene 1 --- START --------
246
if ($level == 0) {
247
print "\n<ul id=\"".$prefix."_root\" style=\"display:block; background:".$bgcolor[0].";\">\n";
248
}
249
250
// -------- Baum aus Array --- START --------
251
foreach($array as $key => $val) {
252
$prelevel = $level;
253
$level++;
254
255
if ( isset($val['sub']) && !empty($val['sub']) ) {
256
257
$subcount = count($val['sub']); 
258
259
$preid = $val['parent_id'];
260
261
$switch_link = "<a href=\"javascript:show('".$prefix.$key.$level."')\">open/close:</a> + ".$subcount."";
262
263
// -------- Listen-Element mit Unter-Ebene --- START --------
264
265
266
print $spacer."<li>Level: ".$level." --- ID: ".$key." --- (". str_pad($anzkat,2,'0',STR_PAD_LEFT) .") --- <strong>".$val['name']."</strong> [".$switch_link."] ";
267
268
$anzkat++; 
269
270
$ulcolor = 'background:'.$bgcolor[$level].';';
271
272
if ($level >= $view) { $ulview = 'display:none;'; }
273
else { $ulview = 'display:block;'; }
274
275
$ulstyle = 'style="'.$ulview.' '.$ulcolor.'"';
276
277
// -------- Sub-Ebene --- START --------
278
print "\n".$spacer."<ul id=\"".$prefix.$key.$level."\" ".$ulstyle.">\n";
279
280
print_tree($val['sub'], $level, $view);     // ---- rekursiver Funktions-Aufruf  ----
281
282
283
print $spacer."</ul>\n";
284
// -------- Sub-Ebene --- ENDE --------
285
286
print $spacer."</li>\n\n";
287
// -------- Listen-Element mit Unter-Ebene --- ENDE --------
288
289
}
290
else { 
291
292
// -------- Listen-Element ohne Unter-Ebene --------
293
294
print $spacer."<li>Level: ".$level." --- ID: ".$key." --- (". str_pad($anzkat,2,'0',STR_PAD_LEFT) .") --- <strong>".$val['name']."</strong></li>\n";
295
296
$anzkat++; 
297
298
}
299
300
$level--;
301
302
}
303
// -------- Baum aus Array --- ENDE --------
304
305
306
if ($level == 0) { print "</ul>\n"; }
307
// -------- Ebene 1 --- ENDE --------
308
309
310
}
311
312
313
// ----------------------------------------------------------------- 
314
// ----------------------------------------------------------------- 
315
// ----------------------------------------------------------------- 
316
317
print "<br />\n"; 
318
print "<br />\n"; 
319
print "<br />\n"; 
320
321
322
print "<div id=\"kat_tree\" class=\"utext\">\n"; 
323
324
print_tree($outArray, 0, $go_d);
325
 
326
print "</div>\n"; 
327
328
329
print "<br />\n"; 
330
print "<br />\n"; 
331
print "<br />\n"; 
332
333
// ----------------------------------------------------------------- 
334
// ----------------------------------------------------------------- 
335
// ----------------------------------------------------------------- 
336
?>
337
338
339
</body>
340
</html>