| |
1 |
1 |
ad_page_contract { |
| |
2 |
2 |
Metadata browser |
| |
3 |
|
} { |
| |
4 |
|
{path /} |
| |
5 |
3 |
} |
| |
6 |
4 |
|
| |
7 |
|
if { ![string equal [string index $path end] /] } { |
| |
8 |
|
append path / |
| |
9 |
|
} |
| |
10 |
|
|
| |
11 |
|
set page "<h1>$path</h1>" |
| |
12 |
|
|
| |
13 |
|
# path is /foo/bar/baz/ |
| |
14 |
|
set pathv [split $path /] |
| |
15 |
|
# pathv = { {} foo bar blah.xyz } |
| |
16 |
|
set pathc [llength $pathv] |
| |
17 |
|
# pathc = 4 |
| |
18 |
|
|
| |
19 |
|
set children [dotkul::get_metadata $path] |
| |
20 |
|
|
| |
21 |
|
multirow create nodes level label url type selected_p indent |
| |
22 |
|
|
| |
23 |
|
multirow append nodes 0 "Root" [ad_conn url]?path=/ "root" \ |
| |
24 |
|
[string equal / $path] "" |
| |
25 |
|
|
| |
26 |
|
set root / |
| |
27 |
|
for { set i 1 } { $i < $pathc - 1 } { incr i } { |
| |
28 |
|
append root [lindex $pathv $i] |
| |
29 |
|
multirow append nodes $i [lindex $pathv $i] [ad_conn url]?path=$root \ |
| |
30 |
|
[dotkul::get_metadata $root.type] [string equal $root/ $path] \ |
| |
31 |
|
[string repeat " " $i] |
| |
32 |
|
append root / |
| |
33 |
|
} |
| |
34 |
|
|
| |
35 |
|
# Unfinished hack to show siblings if there are no children |
| |
36 |
|
|
| |
37 |
|
if { [llength $children] == 0 } { |
| |
38 |
|
set children [dotkul::get_metadata $path] |
| |
39 |
|
} else { |
| |
40 |
|
incr i |
| |
41 |
|
} |
| |
42 |
|
|
| |
43 |
|
foreach child [lsort $children] { |
| |
44 |
|
multirow append nodes $i $child [ad_conn url]?path=$path$child \ |
| |
45 |
|
[dotkul::get_metadata $path$child.type] 0 [string repeat " " $i] |
| |
46 |
|
} |
| |
47 |
|
|
| |
48 |
|
multirow create properties key property_type value |
| |
49 |
|
|
| |
50 |
|
set node_path [string range $path 0 end-1] |
| |
51 |
|
|
| |
52 |
|
set node_type [dotkul::get_node_type $node_path] |
| |
53 |
|
|
| |
54 |
|
foreach { property value } [dotkul::get_node_properties $node_path] { |
| |
55 |
|
set property_type [dotkul::get_property_type $node_type $property] |
| |
56 |
|
|
| |
57 |
|
switch $property_type { |
| |
58 |
|
metadata_reference_list { |
| |
59 |
|
set org_value $value |
| |
60 |
|
set value {} |
| |
61 |
|
foreach elm $org_value { |
| |
62 |
|
append value "<a href=\"[ad_conn url]?path=$elm\">$elm</a> " |
| |
63 |
|
} |
| |
64 |
|
} |
| |
65 |
|
metadata_reference { |
| |
66 |
|
set value "<a href=\"[ad_conn url]?path=$value\">$value</a> " |
| |
67 |
|
} |
| |
68 |
|
} |
| |
69 |
|
|
| |
70 |
|
multirow append properties $property $property_type $value |
| |
71 |
|
} |
| |
72 |
|
|
| |
73 |
|
template::list::create \ |
| |
74 |
|
-name properties \ |
| |
75 |
|
-elements { |
| |
76 |
|
key { |
| |
77 |
|
label "Property" |
| |
78 |
|
} |
| |
79 |
|
property_type { |
| |
80 |
|
label "Type" |
| |
81 |
|
} |
| |
82 |
|
value { |
| |
83 |
|
label "Value" |
| |
84 |
|
display_template {@properties.value;noquote@} |
| |
85 |
|
} |
| |
86 |
|
} |