-
section_browse_row.msn
615 616 1 % unless ( $no_tr ) { 1 2 <tr valign="top" id="row-<% $document->id %>"> 3 % } 2 4 <td nowrap>\ 3 % if ($document_access == 2) { 5 % if ($document_access == 2) { 4 6 <input type="checkbox" class="common-check" name="<% 'delete_'.$document->id.'_id' %>"> 5 % } else { 7 % } else { 6 8 7 % } 9 % } 8 10 </td> 9 11 % 10 % for my $col (@$columns) { 11 % my $attr = $col->{attr}; 12 % my $type = exists $col->{inline_type} ? $col->{inline_type} : $col->{type}; 13 % if ($attr eq '_sort_') { 12 % for my $col (@$columns) { 13 % my $attr = $col->{attr}; 14 % my $type = exists $col->{inline_type} ? $col->{inline_type} : $col->{type}; 15 % my $class_name = $document->class; 16 % $class_name =~ s/:/-/g; 17 % if ($attr eq '_sort_') { 14 18 % 15 19 <td width="20px"><% $document->{sorder} %> <a class="move-up" data-id="<% $document->id %>" 16 20 href="document_move.html?id=<% $document->{id} %>&move=up&s=<% $id %><% $params_unsection ? '&'.$params_unsection : '' %>"><img … … 18 22 href="document_move.html?id=<% $document->{id} %>&move=down&s=<% $id %><% $params_unsection ? '&'.$params_unsection : '' %>"><img 19 23 src="/contenido/i/ico-down-9x10.gif" border=0 alt="Переместить документ на шаг вниз"></a>\ 20 24 % 21 % } elsif ($attr eq 'dtime') { 25 % } elsif ($attr eq 'dtime') { 22 26 % 23 27 <td nowrap><& "/contenido/components/show_dtime.msn", dtime=>$document->{dtime} &>\ 24 28 % 25 % if ($document->{ctime} ne $document->{mtime}) { 26 % my $colortime = '#c66'; 29 % if ($document->{ctime} ne $document->{mtime}) { 30 % my $colortime = '#c66'; 27 31 % 28 32 <div style="color:<% $colortime %>;"><& "/contenido/components/show_dtime.msn", dtime=>$document->{mtime} &></div>\ 29 33 % 30 % } 34 % } 31 35 % 32 % } elsif ($attr eq 'name') { 36 % } elsif ($attr eq 'name') { 33 37 % 34 38 <td><span<% $document->contenido_status_style ? ' style="' . $document->contenido_status_style . '"' : '' %> class="<% $document->status ? '':'hiddensect' %>">\ 35 39 % 36 % my $name=$document->name ? $document->name : 'Безымянный документ N'.$document->id; 37 % if ($document_access == 2) { 40 % my $name=$document->name ? $document->name : 'Безымянный документ N'.$document->id; 41 % if ($document_access == 2) { 38 42 % 39 43 <a<% $document->contenido_status_style ? ' style="' . $document->contenido_status_style . '"' : '' %> href="document.html?id=<% $document->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>"><% $name | h %></a>\ 40 44 % 41 % } else { 45 % } else { 42 46 % 43 47 <% $name | h %>\ 44 48 % 45 % } 49 % } 46 50 % 47 51 </span>\ 48 52 % 49 % } elsif ($attr eq 'id') { 53 % } elsif ($attr eq 'id') { 50 54 % 51 55 <td><span class="<% $document->status ? '':'hiddensect' %>">\ 52 % if ($document_access == 2) { 56 % if ($document_access == 2) { 53 57 <a href="document.html?id=<% $document->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>"><% $document->id %> </a>\ 54 % } else { 58 % } else { 55 59 <% $document->id %> \ 56 % } 60 % } 57 61 </span>\ 58 62 % 59 % } elsif ( exists $col->{inline} && $col->{inline} ) { 60 % if ( $type =~ /^(string|integer|float)$/ && $col->{inline} ) { 61 % my $style = $col->{inline_style} ? $col->{inline_style} : ($col->{type} =~ /^(integer|float)$/ ? 'text-align:right; ' : '' ); 62 % $style .= $col->{inline_width} ? ' width:'.$col->{inline_width}.'px; ' : ' width:65px; '; 63 % } elsif ( exists $col->{inline} && $col->{inline} ) { 64 % if ( $type =~ /^(string|integer|float)$/ && $col->{inline} ) { 65 % my $style = $col->{inline_style} ? $col->{inline_style} : ($col->{type} =~ /^(integer|float)$/ ? 'text-align:right; ' : '' ); 66 % $style .= $col->{inline_width} ? ' width:'.$col->{inline_width}.'px; ' : ' width:65px; '; 63 67 <td><input type="text" name="<% 'update_'.$document->id.'_'.$attr %>" value="<% $document->$attr |h %>" style="<% $style %>"> 64 % } elsif ($type eq 'checkbox') { 65 % my $checked = $document->$attr ? ' checked' : ''; 68 % } elsif ($type eq 'checkbox') { 69 % my $checked = $document->$attr ? ' checked' : ''; 66 70 <td align="center"><input type="checkbox" class="<% $attr %>-check" name="<% 'update_'.$document->id.'_'.$attr %>"<% $checked %>> 67 % } elsif ($type eq 'text') { 68 % my $style = $col->{inline_style} ? $col->{inline_style} : ''; 69 % $style .= $col->{inline_width} ? ' width:'.$col->{inline_width}.'px; ' : ' width:100px; '; 70 % $style .= $col->{inline_height} ? ' width:'.$col->{inline_height}.'px; ' : ' height:70px; '; 71 % my $value = $document->$attr; 72 % for ( $value ) { 73 % s/</</sgi; 74 % s/>/>/sgi; 75 % } 71 % } elsif ($type eq 'text') { 72 % my $style = $col->{inline_style} ? $col->{inline_style} : ''; 73 % $style .= $col->{inline_width} ? ' width:'.$col->{inline_width}.'px; ' : ' width:100px; '; 74 % $style .= $col->{inline_height} ? ' width:'.$col->{inline_height}.'px; ' : ' height:70px; '; 75 % my $value = $document->$attr; 76 % for ( $value ) { 77 % s/</</sgi; 78 % s/>/>/sgi; 79 % } 76 80 <td><textarea name="<% 'update_'.$document->id.'_'.$attr %>" style="<% $style %>"><% $value %></textarea> 77 % } elsif ($type eq 'select') { 78 % my $options = {}; 79 % if ($toopi && (ref($toopi) eq 'HASH') && (exists($toopi->{$document->class}))) { 80 % %{ $options } = %{ $toopi->{$document->class} }; 81 % } 82 % my $values = $options->{$attr}; 81 % } elsif ($type eq 'select') { 82 % my $options = {}; 83 % if ($toopi && (ref($toopi) eq 'HASH') && (exists($toopi->{$document->class}))) { 84 % %{ $options } = %{ $toopi->{$document->class} }; 85 % } 86 % my $values = $options->{$attr}; 83 87 <td><select name="<% 'update_'.$document->id.'_'.$attr %>" autocomplete="off"> 84 % if ( ref $values eq 'ARRAY' ) { 85 % foreach my $val ( @$values ) { 86 % my $selected = $val eq $document->$attr ? ' selected' : ''; 88 % if ( ref $values eq 'ARRAY' ) { 89 % foreach my $val ( @$values ) { 90 % my $selected = $val eq $document->$attr ? ' selected' : ''; 87 91 <option value="<% $val %>"<% $selected %>><% $val %> 88 % } 89 % } 92 % } 93 % } 90 94 </select> 91 % } elsif ($type eq 'status') { 92 % my $cases = $col->{cases}; 93 % if ( ref $cases eq 'ARRAY' ) { 95 % } elsif ($type eq 'status') { 96 % my $cases = $col->{cases}; 97 % if ( ref $cases eq 'ARRAY' ) { 94 98 <td><select name="<% 'update_'.$document->id.'_'.$attr %>" style="<% $col->{inline_width} ? 'width:'.$col->{inline_width}.'px;' : '' %> <% $col->{inline_style} || '' %>" autocomplete="off"> 95 % foreach my $case ( @$cases ) { 96 % my $selected = $case->[0] eq $document->$attr ? ' selected' : ''; 99 % foreach my $case ( @$cases ) { 100 % my $selected = $case->[0] eq $document->$attr ? ' selected' : ''; 97 101 <option value="<% $case->[0] %>"<% $selected %>><% $case->[1] %> 98 % } 102 % } 99 103 </select> 100 % } 101 % } elsif ($type eq 'pickup' || $type eq 'autocomplete') { 102 % my %opts = %{ $col->{lookup_opts} }; 103 % my $doc; 104 % if ( $document->$attr ) { 105 % $doc = $keeper->get_document_by_id( $document->$attr, %opts ); 106 % } 104 % } 105 % } elsif ($type eq 'pickup' || $type eq 'autocomplete') { 106 % my %opts = %{ $col->{lookup_opts} }; 107 % my $doc; 108 % if ( $document->$attr ) { 109 % $doc = $keeper->get_document_by_id( $document->$attr, %opts ); 110 % } 107 111 <td><input type="hidden" name="<% 'update_'.$document->id.'_'.$attr %>" id="<% 'update_'.$document->id.'_'.$attr %>" value="<% ($document->$attr || '') |h %>"> 108 112 <input type="text" class="<% 'autocomplete_'.$attr %>" id="<% 'autocomplete_'.$document->id.'_'.$attr %>" value="<% (ref $doc ? $doc->name : '') |h %>" 109 113 title="<% defined $document->$attr ? 'Значение: '.$document->$attr : '' %>" 110 114 rel="<% 'update_'.$document->id.'_'.$attr %>" style="<% $col->{inline_width} ? 'width:'.$col->{inline_width}.'px;' : '' %> <% $col->{inline_style} || '' %>" 111 115 old-value="<% (ref $doc ? $doc->name : '') |h %>" onfocus="" onblur=""> 112 % } elsif ($type eq 'lookup') { 113 % my %opts = %{ $col->{lookup_opts} }; 114 % delete $opts{search_by} if exists $opts{search_by}; 115 % my $docs; 116 % if ( ref $lookup_elements eq 'HASH' && exists $lookup_elements->{$attr} ) { 117 % $docs = $lookup_elements->{$attr}; 118 % } else { 119 % $docs = $keeper->get_documents( %opts, return_mode => 'array_ref', names => 1 ); 120 % if ( ref $lookup_elements eq 'HASH' ) { 121 % $lookup_elements->{$attr} = $docs; 122 % } 123 % } 124 % if ( ref $docs eq 'ARRAY' && @$docs ) { 116 % } elsif ($type eq 'lookup') { 117 % my %opts = %{ $col->{lookup_opts} }; 118 % delete $opts{search_by} if exists $opts{search_by}; 119 % my $docs; 120 % if ( ref $lookup_elements eq 'HASH' && exists $lookup_elements->{$attr} ) { 121 % $docs = $lookup_elements->{$attr}; 122 % } else { 123 % $docs = $keeper->get_documents( %opts, return_mode => 'array_ref', names => 1 ); 124 % if ( ref $lookup_elements eq 'HASH' ) { 125 % $lookup_elements->{$attr} = $docs; 126 % } 127 % } 128 % if ( ref $docs eq 'ARRAY' && @$docs ) { 125 129 <td><select name="<% 'update_'.$document->id.'_'.$attr %>" style="<% $col->{inline_width} ? 'width:'.$col->{inline_width}.'px;' : '' %> <% $col->{inline_style} || '' %>" autocomplete="off"> 126 130 <option value="<% $col->{allow_null} ? '' : 0 %>"></option> 127 % foreach my $case ( @$docs ) { 128 % my $selected = $case->[0] eq $document->$attr ? ' selected' : ''; 131 % foreach my $case ( @$docs ) { 132 % my $selected = $case->[0] eq $document->$attr ? ' selected' : ''; 129 133 <option value="<% $case->[0] %>"<% $selected %>><% $case->[1] %> 130 % } 134 % } 131 135 </select> 132 % } else { 136 % } else { 133 137 <td><% $document->$attr %><input type="hidden" name="<% 'update_'.$document->id.'_'.$attr %>" value="<% $document->$attr |h %>">\ 134 % } 135 % } else { 138 % } 139 % } else { 136 140 <td><% $document->$attr %><input type="hidden" name="<% 'update_'.$document->id.'_'.$attr %>" value="<% $document->$attr |h %>">\ 137 % } 141 % } 138 142 % 139 % } elsif ($attr eq 'class') { 143 % } elsif ($attr eq 'class') { 140 144 % 141 145 <td><% $document->class_name %> <font color="#999999">(<% $document->class %>)</font>\ 142 146 % 143 % } elsif ($type eq 'datetime') { 147 % } elsif ($type eq 'datetime') { 144 148 % 145 149 <td nowrap><& "/contenido/components/show_dtime.msn", dtime=>$document->{$attr} &>\ 146 150 % 147 % } elsif ($attr eq '_act_') { 151 % } elsif ($attr eq '_act_') { 148 152 % 149 153 <td nowrap>\ 150 % if ($document_access == 2) { 154 % if ($document_access == 2) { 151 155 % 152 156 <a href="document.html?id=<% $document->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>" title="Редактировать документ"><img 153 157 src="/contenido/i/actions/edit.gif" width="15" height="17" alt="Редактировать документ" align="absmiddle" border="0" hspace="1"></a>\ … … 155 159 src="/contenido/i/actions/copy.gif" width="15" height="17" alt="Копировать документ" align="absmiddle" border="0" hspace="1"></a>\ 156 160 <a href="confirm.html?id=<% $document->id %>&action=documents_deletion&from=<% $section->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>" title="Удалить документ"><img 157 161 src="/contenido/i/actions/delete.gif" width="14" height="17" alt="Удалить документ" align="absmiddle" border="0" hspace="1"></a>\ 158 % if ( $document->status != 0 ) { 159 <a href="document.html?deactivate=1&id=<% $document->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>" title="Скрыть/деактивировать документ"><img 160 src="/contenido/i/actions/deactivate.gif" width="14" height="17" alt="Скрыть/деактивировать документ" align="absmiddle" border="0" hspace="1"></a>\ 161 % } 162 % if ( $document->status != 1 ) { 163 <a href="document.html?activate=1&id=<% $document->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>" title="Присвоить документу статус=1"><img 164 src="/contenido/i/actions/activate.gif" width="14" height="17" alt="Присвоить документу статус=1" align="absmiddle" border="0" hspace="1"></a>\ 165 % } 162 % if ( $document->status != 0 ) { 163 <a href="document.html?deactivate=1&id=<% $document->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>" 164 class="context-menu-<% $class_name %>" title="Статус документа" data-id="<% $document->id %>"><img 165 src="/contenido/i/actions/activate.gif" width="14" height="17" alt="Документ активен" align="absmiddle" border="0" hspace="1"></a>\ 166 % } else { 167 <a href="document.html?activate=1&id=<% $document->id %>&class=<% $document->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>" 168 class="context-menu-<% $class_name %>" title="Статус документа" data-id="<% $document->id %>"><img 169 src="/contenido/i/actions/deactivate.gif" width="14" height="17" alt="Документ не активен" align="absmiddle" border="0" hspace="1"></a>\ 170 % } 166 171 <br>\ 167 172 % 168 % } else { 173 % } else { 169 174 \ 170 % } 171 % if ( $inline_status ) { 175 % } 176 % if ( $inline_status ) { 172 177 <input type="hidden" name="update_<% $document->id %>_class" value="<% $document->class %>"> 173 % } 174 % if ( $delete_status ) { 178 % } 179 % if ( $delete_status ) { 175 180 <input type="hidden" name="delete_<% $document->id %>_class" value="<% $document->class %>"> 176 % } 181 % } 177 182 % 178 % } else { 179 % my $attr = $attr; 180 % if ($type eq 'date') { 181 % my $date=$document->{$attr}; 182 % $date=~/(\d{4}-\d{2}-\d{2})/; 183 % } else { 184 % my $attr = $attr; 185 % if ($type eq 'date') { 186 % my $date=$document->{$attr}; 187 % $date=~/(\d{4}-\d{2}-\d{2})/; 183 188 <td nowrap align="right"><% $1 || ' ' %>\ 184 % } elsif ($type eq 'datetime') { 189 % } elsif ($type eq 'datetime') { 185 190 <td nowrap align="right"><% $document->{$attr} || ' ' %>\ 186 % } elsif ($type eq 'integer') { 191 % } elsif ($type eq 'integer') { 187 192 <td align="right"><% $document->{$attr} %> \ 188 % } elsif ($type eq 'lookup' || $type eq 'pickup' || $type eq 'autocomplete') { 193 % } elsif ($type eq 'lookup' || $type eq 'pickup' || $type eq 'autocomplete') { 189 194 <td align="left">\ 190 % my $id = $document->{$attr}; 191 % if ($id) { 192 % my ($doc)=$keeper->get_documents( ( ref($col->{lookup_opts}) ? %{$col->{lookup_opts}} : () ), id=>$id); 193 % if ($doc) { 195 % my $id = $document->{$attr}; 196 % if ($id) { 197 % my ($doc)=$keeper->get_documents( ( ref($col->{lookup_opts}) ? %{$col->{lookup_opts}} : () ), id=>$id); 198 % if ($doc) { 194 199 <a href="document.html?id=<% $doc->id %>&class=<% $doc->class %><% $params_unclassed ? '&'.$params_unclassed : '' %>"><% $doc->name || $doc->id %></a> \ 195 % } else { 200 % } else { 196 201 <span class="hiddensect"><% $document->{$attr} %>???</span>\ 197 % } 198 % } else { 202 % } 203 % } else { 199 204 <span class="hiddensect">NULL</span>\ 200 % } 201 % } elsif ($type eq 'checkbox') { 205 % } 206 % } elsif ($type eq 'checkbox') { 202 207 <td align="center"><% $document->$attr ? '<img src="/contenido/i/checked-16x16.png" width="16" height="16">' : ' ' %>\ 203 % } elsif ($type eq 'status') { 204 % my $status_map = ref $col->{cases} eq 'ARRAY' ? $col->{cases} : $keeper->default_status(); 205 % my ($doc_status) = grep { $_->[0] eq $document->{$attr} } @$status_map; 206 % $doc_status ||= [$document->{$attr}, 'Неизвестный']; 208 % } elsif ($type eq 'status') { 209 % my $status_map = ref $col->{cases} eq 'ARRAY' ? $col->{cases} : $keeper->default_status(); 210 % my ($doc_status) = grep { $_->[0] eq $document->{$attr} } @$status_map; 211 % $doc_status ||= [$document->{$attr}, 'Неизвестный']; 207 212 <td nowrap><% $doc_status->[1].'('.$doc_status->[0].')' %>\ 208 % } else { 213 % } else { 209 214 <td><% defined($document->$attr) ? $document->$attr : ' ' %>\ 210 % } 211 % } 215 % } 216 % } 212 217 </td> 213 218 % 214 % } #- for @columns 215 % 219 % } #- for @columns 220 % unless ( $no_tr ) { 216 221 </tr> 222 % } 217 223 <%args> 218 224 225 $no_tr => undef 219 226 $toopi => undef 220 227 $filter => undef 221 228 $document => undef