@@ -15,29 +15,37 @@ sub base :Chained('/base') :PathPart('ia') :CaptureArgs(0) {
15
15
my ( $self , $c ) = @_ ;
16
16
}
17
17
18
- sub index :Chained(' base' ) :PathPart(' ' ) :Args() {
19
- my ( $self , $c , $field , $value ) = @_ ;
18
+ sub index :Chained(' base' ) :PathPart(' ' ) :Args(0 ) {
19
+ my ( $self , $c ) = @_ ;
20
20
# Retrieve / stash all IAs for index page here?
21
21
22
22
# my @x = $c->d->rs('InstantAnswer')->all();
23
23
# $c->stash->{ialist} = \@x;
24
24
$c -> stash-> {ia_page } = " IAIndex" ;
25
25
26
- if ($field && $value ) {
27
- $c -> stash-> {field } = $field ;
28
- $c -> stash-> {value } = $value ;
29
- }
26
+ # if ($field && $value) {
27
+ # $c->stash->{field} = $field;
28
+ # $c->stash->{value} = $value;
29
+ # }
30
30
31
31
my $rs = $c -> d-> rs(' Topic' );
32
32
33
33
my @topics = $rs -> search(
34
34
{' name' => { ' !=' => ' test' }},
35
35
{
36
36
columns => [ qw/ name id / ],
37
+ order_by => [ qw/ name / ],
37
38
result_class => ' DBIx::Class::ResultClass::HashRefInflator' ,
38
39
}
39
40
)-> all;
40
41
42
+ my $is_admin ;
43
+
44
+ if ($c -> user) {
45
+ $is_admin = $c -> user-> admin;
46
+ }
47
+
48
+ $c -> stash-> {admin } = $is_admin ;
41
49
$c -> stash-> {title } = " Index: Instant Answers" ;
42
50
$c -> stash-> {topic_list } = \@topics ;
43
51
$c -> add_bc(' Instant Answers' , $c -> chained_uri(' InstantAnswer' ,' index' ));
@@ -46,18 +54,17 @@ sub index :Chained('base') :PathPart('') :Args() {
46
54
}
47
55
48
56
sub ialist_json :Chained(' base' ) :PathPart(' json' ) :Args() {
49
- my ( $self , $c , $field , $value ) = @_ ;
50
-
51
- my $rs ;
57
+ my ( $self , $c ) = @_ ;
52
58
53
- if ($field && $value ) {
54
- $rs = $c -> d-> rs(' InstantAnswer' )-> search_rs({$field => $value });
55
- } else {
56
- $rs = $c -> d-> rs(' InstantAnswer' );
57
- }
59
+ my $rs = $c -> d-> rs(' InstantAnswer' );
58
60
59
61
my @ial = $rs -> search(
60
- {' topic.name' => { ' !=' => ' test' }},
62
+ {' topic.name' => { ' !=' => ' test' },
63
+ -or => [
64
+ ' me.dev_milestone' => { ' =' => ' live' },
65
+ ' me.dev_milestone' => { ' =' => ' ready' },
66
+ ],
67
+ },
61
68
{
62
69
columns => [ qw/ name id repo src_name dev_milestone description template / ],
63
70
prefetch => { instant_answer_topics => ' topic' },
@@ -104,7 +111,7 @@ sub iarepo_json :Chained('iarepo') :PathPart('json') :Args(0) {
104
111
105
112
my $src_options = $ia -> src_options;
106
113
if ($src_options ) {
107
- $iah {$ia -> id}{src_options } = decode_json ($src_options );
114
+ $iah {$ia -> id}{src_options } = from_json ($src_options );
108
115
}
109
116
110
117
$iah {$ia -> id}{src_id } = $ia -> src_id if $ia -> src_id;
@@ -121,6 +128,70 @@ sub queries :Chained('base') :PathPart('queries') :Args(0) {
121
128
122
129
}
123
130
131
+ sub dev_pipeline_base :Chained(' base' ) :PathPart(' pipeline' ) :CaptureArgs(0) {
132
+ my ( $self , $c ) = @_ ;
133
+ }
134
+
135
+ sub dev_pipeline :Chained(' dev_pipeline_base' ) :PathPart(' ' ) :Args(0) {
136
+ my ( $self , $c ) = @_ ;
137
+
138
+ $c -> stash-> {ia_page } = " IADevPipeline" ;
139
+ $c -> stash-> {title } = " Dev Pipeline" ;
140
+ $c -> add_bc(' Instant Answers' , $c -> chained_uri(' InstantAnswer' ,' index' ));
141
+ $c -> add_bc(' Dev Pipeline' , $c -> chained_uri(' InstantAnswer' ,' dev_pipeline' ));
142
+ }
143
+
144
+ sub dev_pipeline_json :Chained(' dev_pipeline_base' ) :PathPart(' json' ) :Args(0) {
145
+ my ( $self , $c ) = @_ ;
146
+
147
+ my $rs = $c -> d-> rs(' InstantAnswer' );
148
+ my @planning = $rs -> search(
149
+ {' me.dev_milestone' => { ' =' => ' planning' }},
150
+ {
151
+ columns => [ qw/ name id dev_milestone/ ],
152
+ order_by => [ qw/ name/ ],
153
+ result_class => ' DBIx::Class::ResultClass::HashRefInflator' ,
154
+ }
155
+ )-> all;
156
+
157
+ my @in_development = $rs -> search(
158
+ {' me.dev_milestone' => { ' =' => ' in_development' }},
159
+ {
160
+ columns => [ qw/ name id dev_milestone/ ],
161
+ order_by => [ qw/ name/ ],
162
+ result_class => ' DBIx::Class::ResultClass::HashRefInflator' ,
163
+ }
164
+ )-> all;
165
+
166
+ my @qa = $rs -> search(
167
+ {' me.dev_milestone' => { ' =' => ' qa' }},
168
+ {
169
+ columns => [ qw/ name id dev_milestone/ ],
170
+ order_by => [ qw/ name/ ],
171
+ result_class => ' DBIx::Class::ResultClass::HashRefInflator' ,
172
+ }
173
+ )-> all;
174
+
175
+ my @ready = $rs -> search(
176
+ {' me.dev_milestone' => { ' =' => ' ready' }},
177
+ {
178
+ columns => [ qw/ name id dev_milestone/ ],
179
+ order_by => [ qw/ name/ ],
180
+ result_class => ' DBIx::Class::ResultClass::HashRefInflator' ,
181
+ }
182
+ )-> all;
183
+
184
+ $c -> stash-> {x } = {
185
+ planning => \@planning ,
186
+ in_development => \@in_development ,
187
+ qa => \@qa ,
188
+ ready => \@ready ,
189
+ };
190
+
191
+ $c -> stash-> {not_last_url } = 1;
192
+ $c -> forward($c -> view(' JSON' ));
193
+ }
194
+
124
195
sub ia_base :Chained(' base' ) :PathPart(' view' ) :CaptureArgs(1) { # /ia/view/calculator
125
196
my ( $self , $c , $answer_id ) = @_ ;
126
197
@@ -196,20 +267,20 @@ sub ia_json :Chained('ia_base') :PathPart('json') :Args(0) {
196
267
id => $issue -> issue_id,
197
268
title => $issue -> title,
198
269
body => $issue -> body,
199
- tags => $issue -> tags? decode_json ($issue -> tags) : undef
270
+ tags => $issue -> tags? from_json ($issue -> tags) : undef
200
271
);
201
272
} else {
202
273
push (@ia_issues , {
203
274
issue_id => $issue -> issue_id,
204
275
title => $issue -> title,
205
276
body => $issue -> body,
206
- tags => $issue -> tags? decode_json ($issue -> tags) : undef
277
+ tags => $issue -> tags? from_json ($issue -> tags) : undef
207
278
});
208
279
}
209
280
}
210
281
}
211
282
212
- my $other_queries = $ia -> other_queries? decode_json ($ia -> other_queries) : undef ;
283
+ my $other_queries = $ia -> other_queries? from_json ($ia -> other_queries) : undef ;
213
284
214
285
$ia_data {live } = {
215
286
id => $ia -> id,
@@ -222,9 +293,9 @@ sub ia_json :Chained('ia_base') :PathPart('json') :Args(0) {
222
293
perl_module => $ia -> perl_module,
223
294
example_query => $ia -> example_query,
224
295
other_queries => $other_queries ,
225
- code => $ia -> code? decode_json ($ia -> code) : undef ,
296
+ code => $ia -> code? from_json ($ia -> code) : undef ,
226
297
topic => \@topics ,
227
- attribution => $ia -> attribution? decode_json ($ia -> attribution) : undef ,
298
+ attribution => $ia -> attribution? from_json ($ia -> attribution) : undef ,
228
299
issues => \@ia_issues ,
229
300
pr => \%pull_request ,
230
301
template => $ia -> template,
@@ -233,8 +304,8 @@ sub ia_json :Chained('ia_base') :PathPart('json') :Args(0) {
233
304
producer => $ia -> producer,
234
305
designer => $ia -> designer,
235
306
developer => $ia -> developer,
236
- perl_dependencies => $ia -> perl_dependencies? decode_json ($ia -> perl_dependencies) : undef ,
237
- triggers => $ia -> triggers? decode_json ($ia -> triggers) : undef ,
307
+ perl_dependencies => $ia -> perl_dependencies? from_json ($ia -> perl_dependencies) : undef ,
308
+ triggers => $ia -> triggers? from_json ($ia -> triggers) : undef ,
238
309
code_review => $ia -> code_review,
239
310
design_review => $ia -> design_review,
240
311
test_machine => $ia -> test_machine,
@@ -310,7 +381,7 @@ sub commit_json :Chained('commit_base') :PathPart('json') :Args(0) {
310
381
status => $ia -> status,
311
382
topic => \@topics ,
312
383
example_query => $ia -> example_query,
313
- other_queries => $ia -> other_queries? decode_json ($ia -> other_queries) : undef ,
384
+ other_queries => $ia -> other_queries? from_json ($ia -> other_queries) : undef ,
314
385
dev_milestone => $ia -> dev_milestone
315
386
);
316
387
@@ -336,7 +407,7 @@ sub commit_save :Chained('commit_base') :PathPart('save') :Args(0) {
336
407
337
408
if ($is_admin ) {
338
409
my $ia = $c -> d-> rs(' InstantAnswer' )-> find($c -> req-> params-> {id });
339
- my @params = decode_json ($c -> req-> params-> {values });
410
+ my @params = from_json ($c -> req-> params-> {values });
340
411
341
412
for my $param (@params ) {
342
413
for my $hash_param (@{$param }) {
@@ -368,7 +439,7 @@ sub commit_save :Chained('commit_base') :PathPart('save') :Args(0) {
368
439
}
369
440
} else {
370
441
if ($field eq ' other_queries' ) {
371
- $value = encode_json ($value );
442
+ $value = to_json ($value );
372
443
}
373
444
374
445
try {
@@ -412,7 +483,7 @@ sub save_edit :Chained('base') :PathPart('save') :Args(0) {
412
483
my $autocommit = $c -> req-> params-> {autocommit };
413
484
if ($autocommit ) {
414
485
if ($field eq " topic" ) {
415
- my @topic_values = $value ? decode_json ($value ) : undef ;
486
+ my @topic_values = $value ? from_json ($value ) : undef ;
416
487
$ia -> instant_answer_topics-> delete ;
417
488
418
489
for my $topic (@{$topic_values [0]}) {
@@ -475,6 +546,44 @@ sub save_edit :Chained('base') :PathPart('save') :Args(0) {
475
546
return $c -> forward($c -> view(' JSON' ));
476
547
}
477
548
549
+ sub create_ia :Chained(' base' ) :PathPart(' create' ) :Args() {
550
+ my ( $self , $c ) = @_ ;
551
+
552
+ my $ia = $c -> d-> rs(' InstantAnswer' )-> find({lc id => $c -> req-> params-> {id }});
553
+ my $is_admin ;
554
+ my $result = ' ' ;
555
+
556
+ if ($c -> user && (!$ia )) {
557
+ $is_admin = $c -> user-> admin;
558
+
559
+ if ($is_admin ) {
560
+ my $dev_milestone = $c -> req-> params-> {dev_milestone };
561
+ my $status = $dev_milestone ;
562
+
563
+ if ($dev_milestone eq ' in_development' ) {
564
+ $status =~ s / _/ / g ;
565
+ }
566
+
567
+ my $new_ia = $c -> d-> rs(' InstantAnswer' )-> create({
568
+ lc id => $c -> req-> params-> {id },
569
+ name => $c -> req-> params-> {name },
570
+ status => $status ,
571
+ dev_milestone => $dev_milestone ,
572
+ description => $c -> req-> params-> {description },
573
+ });
574
+
575
+ $result = 1;
576
+ }
577
+ }
578
+
579
+ $c -> stash-> {x } = {
580
+ result => $result ,
581
+ };
582
+
583
+ $c -> stash-> {not_last_url } = 1;
584
+ return $c -> forward($c -> view(' JSON' ));
585
+ }
586
+
478
587
# Return a hash with the latest edits for the given IA
479
588
sub current_ia {
480
589
my ($d , $ia ) = @_ ;
@@ -502,14 +611,14 @@ sub current_ia {
502
611
# to see if this field was edited
503
612
my %other_q = (
504
613
edited => $other_q_edited ,
505
- value => $other_q_val ? decode_json ($other_q_val ) : undef
614
+ value => $other_q_val ? from_json ($other_q_val ) : undef
506
615
);
507
616
508
617
%x = (
509
618
name => $name [0][@name ]{' value' },
510
619
description => $desc [0][@desc ]{' value' },
511
620
status => $status [0][@status ]{' value' },
512
- topic => $topic_val ? decode_json ($topic_val ) : undef ,
621
+ topic => $topic_val ? from_json ($topic_val ) : undef ,
513
622
example_query => $example_query [0][@example_query ]{' value' },
514
623
other_queries => \%other_q ,
515
624
dev_milestone => $dev_milestone [0][@dev_milestone ]{' value' }
@@ -529,7 +638,7 @@ sub add_edit {
529
638
my $current_updates = $ia -> get_column(' updates' ) || ();
530
639
531
640
if ($value ne $orig_data ){
532
- $current_updates = $current_updates ? decode_json ($current_updates ) : undef ;
641
+ $current_updates = $current_updates ? from_json ($current_updates ) : undef ;
533
642
my @field_updates = $current_updates -> {$field }? $current_updates -> {$field } : undef ;
534
643
my $time = time ;
535
644
my %new_update = ( value => $value ,
@@ -560,7 +669,7 @@ sub remove_edit {
560
669
561
670
my $updates = ();
562
671
my $column_updates = $ia -> get_column(' updates' );
563
- my $edits = $column_updates ? decode_json ($column_updates ) : undef ;
672
+ my $edits = $column_updates ? from_json ($column_updates ) : undef ;
564
673
$edits -> {$field } = undef ;
565
674
566
675
$ia -> update({updates => $edits });
@@ -586,7 +695,7 @@ sub get_edits {
586
695
587
696
try{
588
697
my $column_updates = $ia_result -> get_column(' updates' );
589
- $edits = $column_updates ? decode_json ($column_updates ) : undef ;
698
+ $edits = $column_updates ? from_json ($column_updates ) : undef ;
590
699
}catch{
591
700
return ;
592
701
};
0 commit comments