Line # Revision Author
1 8 ahitrov@rambler.ru <script type="text/javascript">
2 <!--
3 %# массив статусов (соответствует типам документов)
4 231 ahitrov var statusval = new Array('<% join("', '", map { $_ =~ s/'/\\'/sg; $_ } @ST_IDS) %>');
5 8 ahitrov@rambler.ru %# названия статусов
6 231 ahitrov var statusname = new Array('<% join("', '", map { $_ =~ s/'/\\'/sg; $_ } @ST_NAMES) %>');
7 8 ahitrov@rambler.ru %# ф-ция, возвращающая массив статусов выбранного документа
8 function getStatus(index,n){
9 var statusvalues = n[index];
10 return statusvalues.split("|");
11 }
12 %# ф-ция, выводящая список статусов
13 function ch(index){
14 var CurStatVal = getStatus(index,statusval);
15 var CurStatLng = CurStatVal.length;
16 var CurStatName = getStatus(index,statusname);
17 var StatList = document.forms["searchdoc"].elements["status"];
18 StatList.length = 0; // удаляем все элементы из списка статусов
19 %# добавляем новые статусы в список
20 for (i = 0; i < CurStatLng; i++){
21 var newStatListOption = document.createElement("OPTION");
22 newStatListOption.text = CurStatName[i];
23 newStatListOption.value = CurStatVal[i];
24 (StatList.options.add) ? StatList.options.add(newStatListOption) : StatList.add(newStatListOption, null);
25 }
26 }
27 //-->
28 </script>
29 <fieldset>
30 <legend>Отбор документов</legend>
31 <form name="searchdoc" action="search.html" method="GET" target="select">
32 <table width="100%" border="0" cellpadding="0" cellspacing="6" class="tform">
33 <tr><td><b>Выберите тип:</b></td></tr>
34 <tr><td><& "/contenido/components/select.msn", name=>'class', values => $classes, start => '', style=>'width:100%;font-size:8pt;', onChange => 'ch(this.selectedIndex);' &></td>
35 <tr><td><b>Выберите статус:</b></td></tr>
36 <tr><td><& "/contenido/components/select.msn", name=>'status', values => $states, start => '', style=>'width:100%;font-size:8pt;' &></td>
37 <tr><td height="5"></td></tr>
38 <tr><td><b>По дате:</b></td></tr>
39 <tr><td><& "/contenido/components/inputs/date.msn", name => 'from' &></td></tr>
40 <tr><td><& "/contenido/components/inputs/date.msn", name => 'to' &></td></tr>
41 <tr><td><input type="checkbox" name="dive" value="1">Включая подразделы</td></tr>
42 <tr><td><input type="hidden" name="sect_id" value="<% $sect_id %>"><input type="submit" value="Отобрать" class="btn"></td></tr>
43 </table>
44 </form>
45 </fieldset>
46
47 <%once>
48 use locale;
49 </%once>
50 <%args>
51
52 $sect_id => 1
53 $id => undef
54
55 </%args>
56 <%init>
57
58 use vars qw($state $project $keeper $request);
59 if ($id > 0)
60 {
61 $sect_id = $id;
62 }
63
64 my ($DATA, @ST_IDS, @ST_NAMES);
65 my @default_status = ();
66 if (ref($keeper->default_status())) {
67 @default_status = @{$keeper->default_status()};
68 }
69
70 unshift @default_status, ['9999', '--- Любой ---'];
71 push @$DATA, { id => '', name => '--- Любой ---', states => \@default_status };
72
73 foreach my $class (@ { $state->{available_documents} })
74 {
75 my $object = $class->new($keeper);
76 my @properties = $object->structure();
77 my @states = @{$keeper->default_status()};
78 foreach my $attr (@properties)
79 {
80 if ( ($attr->{attr} eq 'status') and ($attr->{type} eq 'status') )
81 {
82 @states = @{$attr->{cases}} if (exists($attr->{cases}) and (ref($attr->{cases}) eq 'ARRAY'));
83 }
84 }
85 unshift @states, ['9999', '--- Любой ---'];
86 push (@$DATA, {id => $class, name => "".$object->class_name()." ($class)", states => \@states});
87 }
88
89 my $classes;
90 foreach my $C (sort {$a->{name} cmp $b->{name}} @$DATA)
91 {
92 push @$classes, $C->{id}, $C->{name};
93 my @st_ids;
94 my @st_names;
95 foreach my $st (@{$C->{states}})
96 {
97 push @st_ids, $st->[0];
98 push @st_names, $st->[1];
99 }
100 push @ST_IDS, join('|', @st_ids);
101 push @ST_NAMES, join('|', @st_names);
102 }
103
104 my $states;
105 foreach my $S (sort {$a->[1] cmp $b->[1]} @default_status)
106 {
107 push @$states, $S->[0], $S->[1];
108 }
109
110 </%init>