Line # Revision Author
1 609 ahitrov <% $json %>
2 <%once>
3
4 use JSON::XS;
5
6 </%once>
7 <%args>
8
9 $id => undef
10 $aid => undef
11 $s => undef
12 $move => undef
13
14 </%args>
15 <%init>
16
17 my %result;
18 843 ahitrov warn Dumper(\%ARGS);
19 609 ahitrov
20 843 ahitrov if ( $id && $s && $s =~ /^\d+$/ && $move && $move =~ /^(up|down|first|last|before|after)$/ && (!$aid || $aid && $aid =~ /^\d+$/) ) {
21 my $check_id = 1;
22 my @ids;
23 if ( ref $id eq 'ARRAY' ) {
24 foreach my $data ( @$id ) {
25 if ( $data =~ /^\d+$/ ) {
26 push @ids, $data;
27 } else {
28 $check_id = 0;
29 last;
30 }
31 }
32 } elsif ( $id =~ /^[\d,]+$/ ) {
33 @ids = split(/,/, $id);
34 } else {
35 $check_id = 0;
36 }
37 if ( $check_id ) {
38 my $section = $keeper->get_section_by_id( $s );
39 if ( ref $section ) {
40 if ( $section->_sorted ) {
41 if ( $section->dmove( \@ids, $move, $aid ) ) {
42 my $position = $section->_get_document_pos( $ids[0] );
43 warn Dumper( $position );
44 if ( ref $position && exists $position->{index} ) {
45 if ( exists $position->{before} ) {
46 $result{before} = $position->{before};
47 $result{success} = 1;
48 }
49 if ( exists $position->{after} ) {
50 $result{after} = $position->{after};
51 $result{success} = 1;
52 }
53 if ( exists $position->{first} ) {
54 $result{first} = 1;
55 $result{success} = 1;
56 }
57 if ( exists $position->{last} ) {
58 $result{last} = 1;
59 $result{success} = 1;
60 }
61 unless ( exists $result{success} ) {
62 $result{error} = Encode::decode('utf-8', 'Ошибка индексации. Для разбора полетов обратитесь к разработчикам');
63 }
64 } else {
65 609 ahitrov $result{error} = Encode::decode('utf-8', 'Ошибка индексации. Для разбора полетов обратитесь к разработчикам');
66 }
67 } else {
68 843 ahitrov $result{error} = Encode::decode('utf-8', 'Ошибка перемещения. Для разбора полетов обратитесь к разработчикам');
69 609 ahitrov }
70 } else {
71 843 ahitrov $result{error} = Encode::decode('utf-8', 'В данной секции отключен режим ручной сортировки');
72 609 ahitrov }
73 } else {
74 843 ahitrov $result{error} = Encode::decode('utf-8', 'Секция не найдена');
75 609 ahitrov }
76 } else {
77 843 ahitrov $result{error} = Encode::decode('utf-8', 'Переданы неверные параметры');
78 609 ahitrov }
79 } else {
80 $result{error} = Encode::decode('utf-8', 'Переданы неверные параметры');
81 }
82
83 my $json = encode_json \%result;
84
85 </%init>