Browse Source

Ultimos cambios

parent
commit
b60a54cb6c

+ 239
- 98
app/controllers/CriteriaController.php View File

102
     public function fetchObjectivesForSelect()
102
     public function fetchObjectivesForSelect()
103
     {
103
     {
104
         $json = array();
104
         $json = array();
105
+        $role = Auth::user()->role;
106
+        switch ($role) {
107
+            case 1:
108
+
109
+                $program_ids = DB::table('programs')->lists('id');
110
+
111
+                break;
112
+            case 2:
113
+
114
+                $program_ids = DB::table('programs')
115
+                    ->where('school_id', Auth::user()->school_id)
116
+                    ->lists('id');
117
+
118
+                break;
119
+
120
+            case 3:
121
+
122
+                $program_ids = DB::table('program_user')
123
+                    ->where('user_id', Auth::user()->id)
124
+                    ->lists('id');
105
 
125
 
126
+                break;
127
+        }
106
         $outcome_id = Input::get('outcomeID');
128
         $outcome_id = Input::get('outcomeID');
107
 
129
 
108
         $json = DB::table('objectives')
130
         $json = DB::table('objectives')
109
             ->join('objective_outcome', 'objective_outcome.objective_id', '=', 'objectives.id')
131
             ->join('objective_outcome', 'objective_outcome.objective_id', '=', 'objectives.id')
132
+            ->join('objective_program', 'objective_program.objective_id', '=', 'objectives.id')
110
             ->where('outcome_id', '=', $outcome_id)
133
             ->where('outcome_id', '=', $outcome_id)
134
+            ->whereIn('program_id', $program_ids)
135
+            ->select('objectives.*', 'objective_outcome.*')
136
+            ->distinct()
111
             ->get();
137
             ->get();
138
+        foreach ($json as $objective) {
139
+            $objective->program_ids = json_encode(DB::table('objective_program')
140
+                ->where('objective_id', $objective->objective_id)
141
+                ->lists('program_id'));
142
+        }
143
+
112
 
144
 
113
         return json_encode($json);
145
         return json_encode($json);
114
     }
146
     }
115
     public function fetchCriterionWithTrashed()
147
     public function fetchCriterionWithTrashed()
116
     {
148
     {
117
 
149
 
118
-        $json = array();
150
+        /* $json = array();
119
         $json['criteria'] = DB::table('criteria')->where('id', Input::get('id'))->get();
151
         $json['criteria'] = DB::table('criteria')->where('id', Input::get('id'))->get();
120
 
152
 
121
 
153
 
133
                 ->join('objective_outcome', 'objective_outcome.objective_id', '=', 'objectives.id')
165
                 ->join('objective_outcome', 'objective_outcome.objective_id', '=', 'objectives.id')
134
                 ->where('outcome_id', $id)
166
                 ->where('outcome_id', $id)
135
                 ->get();
167
                 ->get();
168
+            foreach ($json['objectives_assoc'][$id] as $objective) {
169
+                $objective->program_ids = json_encode(DB::table('objective_program')
170
+                    ->where('objective_id', $objective->objective_id)
171
+                    ->lists('program_id'));
172
+            }
136
         }
173
         }
137
         $json['program'] = DB::table('program_criterion')->where('criterion_id', $criteria_id)->get();
174
         $json['program'] = DB::table('program_criterion')->where('criterion_id', $criteria_id)->get();
138
         $json['activity_criterion'] = DB::table('assessments')
175
         $json['activity_criterion'] = DB::table('assessments')
159
             $json['outcomes_assoc'][$outId] = DB::select("select name from outcomes where id = {$outId}");
196
             $json['outcomes_assoc'][$outId] = DB::select("select name from outcomes where id = {$outId}");
160
             $json['objectives_assoc'][$outId] = DB::select("select objectives.id, objectives.text, outcomes.name from objectives, objective_outcome, outcomes where  objective_outcome.outcome_id ={$outId} and objective_outcome.objective_id = objectives.id and objectives.active=1 and outcomes.id = objective_outcome.outcome_id");
197
             $json['objectives_assoc'][$outId] = DB::select("select objectives.id, objectives.text, outcomes.name from objectives, objective_outcome, outcomes where  objective_outcome.outcome_id ={$outId} and objective_outcome.objective_id = objectives.id and objectives.active=1 and outcomes.id = objective_outcome.outcome_id");
161
         }*/
198
         }*/
162
-
199
+        $criteria_id = Input::get('id');
163
         $criterion =  DB::table('criteria')->where('id', Input::get('id'))->first();
200
         $criterion =  DB::table('criteria')->where('id', Input::get('id'))->first();
164
         if (!$criterion) return $criterion;
201
         if (!$criterion) return $criterion;
165
         $criterion->outcomes = DB::table('criterion_objective_outcome')
202
         $criterion->outcomes = DB::table('criterion_objective_outcome')
179
                 ->where('criterion_id', $criterion->id)
216
                 ->where('criterion_id', $criterion->id)
180
                 ->where('outcome_id', $outcome->id)
217
                 ->where('outcome_id', $outcome->id)
181
                 ->get();
218
                 ->get();
219
+            foreach ($outcome->assoc_objectives as $objective) {
220
+                $objective->program_ids = json_encode(DB::table('objective_program')
221
+                    ->where('objective_id', $objective->objective_id)
222
+                    ->lists('program_id'));
223
+            }
182
         }
224
         }
183
         $criterion->scales = DB::table('criterion_scale')
225
         $criterion->scales = DB::table('criterion_scale')
184
             ->join('scales', 'criterion_scale.scale_id', '=', 'scales.id')
226
             ->join('scales', 'criterion_scale.scale_id', '=', 'scales.id')
218
         else
260
         else
219
             $program_id = NULL;
261
             $program_id = NULL;
220
 
262
 
263
+        $outcomes = [];
264
+        $objectives = [];
265
+        foreach ($input['objective_id'] as $objective) {
266
+            $parentesis = array('(', ')');
267
+            $outcome_objective = str_replace($parentesis, '', $objective);
268
+            $outcomes[] = $outcome_objective[0];
269
+            $objectives[] = $outcome_objective[1];
270
+        }
271
+        $scales = [];
272
+        foreach ($input['scale_description'] as $scale) {
273
+            $existing_scale = DB::table('scales')->where('description', $scale)
274
+                ->first();
275
+            if (!$existing_scale) return true;
276
+            $scales[] = $existing_scale->id;
277
+        }
278
+
279
+
221
         $saved_criterion = DB::table('criteria')
280
         $saved_criterion = DB::table('criteria')
222
             ->join('program_criterion', 'program_criterion.criterion_id', '=', 'criteria.id')
281
             ->join('program_criterion', 'program_criterion.criterion_id', '=', 'criteria.id')
223
             ->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'criteria.id')
282
             ->join('criterion_objective_outcome', 'criterion_objective_outcome.criterion_id', '=', 'criteria.id')
283
+            ->join('criterion_scale', 'criterion_scale.criterion_id', '=', 'criteria.id')
224
             ->whereIn('program_id', $input['program_id'])
284
             ->whereIn('program_id', $input['program_id'])
225
-            ->whereIn('objective_id', $input['objective_id'])
226
-            ->whereIn('outcome_id', $input['outcome_id'])
285
+            ->whereIn('objective_id', $objectives)
286
+            ->whereIn('outcome_id', $outcomes)
227
             ->where('name', '=', $input['name'])
287
             ->where('name', '=', $input['name'])
228
             ->where('subcriteria', '=', $input['subcriteria'])
288
             ->where('subcriteria', '=', $input['subcriteria'])
289
+            ->whereIn('scale_id', $scales)
290
+            ->where('num_scales', $input['number_of_scales'])
291
+            ->where('max_score', $input['maximum_score'])
292
+
229
             ->first();
293
             ->first();
230
 
294
 
231
 
295
 
232
 
296
 
233
 
297
 
234
 
298
 
299
+
235
         if ($saved_criterion)
300
         if ($saved_criterion)
236
             return false;
301
             return false;
237
         else
302
         else
265
 
330
 
266
 
331
 
267
         $clean_input['objective_id'] = Input::get('objective');
332
         $clean_input['objective_id'] = Input::get('objective');
268
-        //Log::info('PA los periqueros');
269
-        //Log::info(Input::get('objective'));
270
-        //Log::info($clean_input['objective_id']);
333
+
271
 
334
 
272
 
335
 
273
 
336
 
277
         $clean_input['copyright'] = trim(preg_replace('/\t+/', '', Input::get('copyright')));
340
         $clean_input['copyright'] = trim(preg_replace('/\t+/', '', Input::get('copyright')));
278
         $clean_input['notes'] = trim(preg_replace('/\t+/', '', Input::get('notes')));
341
         $clean_input['notes'] = trim(preg_replace('/\t+/', '', Input::get('notes')));
279
         $clean_input['maximum_score'] =  (int) Input::get('maximum_score');
342
         $clean_input['maximum_score'] =  (int) Input::get('maximum_score');
280
-        // $clean_input['scale_title'] = Input::get('title');
343
+
281
         $clean_input['scale_description'] = Input::get('Scales');
344
         $clean_input['scale_description'] = Input::get('Scales');
282
-        // $clean_input['min_score'] = Input::get('min');
283
-        //$clean_input['max_score'] = Input::get('max');
345
+
284
 
346
 
285
         $clean_input['number_of_scales'] = sizeof($clean_input['scale_description']);
347
         $clean_input['number_of_scales'] = sizeof($clean_input['scale_description']);
286
 
348
 
290
 
352
 
291
     private function makeValidator($clean_input)
353
     private function makeValidator($clean_input)
292
     {
354
     {
293
-        /** Validation rules */
355
+        if (isset($clean_input['scale_description'][0])) {
356
+            $scale = $clean_input['scale_description'][0];
357
+        } else {
358
+            $scale = 0;
359
+        }
360
+        if (isset($clean_input['program_id'][0])) {
361
+            $program_id = $clean_input['program_id'][0];
362
+        } else {
363
+            $program_id = NULL;
364
+        }
365
+
366
+        if (isset($clean_input['objective_id'][0]) && $clean_input['objective_id'][0] != '0') {
367
+            $objective_id = $clean_input['objective_id'][0];
368
+            Log::info('Estamos');
369
+        } else {
370
+            $objective_id = NULL;
371
+        }
294
         return Validator::make(
372
         return Validator::make(
295
             array(
373
             array(
296
                 'name' => $clean_input['name'],
374
                 'name' => $clean_input['name'],
297
                 'subcriteria' => $clean_input['subcriteria'],
375
                 'subcriteria' => $clean_input['subcriteria'],
298
-                'outcome_id' => $clean_input['outcome_id'],
376
+                // 'outcome_id' => $clean_input['outcome_id'],
299
                 'notes' => $clean_input['notes'],
377
                 'notes' => $clean_input['notes'],
300
                 'copyright' => $clean_input['copyright'],
378
                 'copyright' => $clean_input['copyright'],
301
                 'maximum_score' => $clean_input['maximum_score'],
379
                 'maximum_score' => $clean_input['maximum_score'],
302
-                'scales' => $clean_input['scale_description'],
303
-                'objective_id' => $clean_input['objective_id']
380
+                'scales' => $scale,
381
+                'objective_id' => $objective_id,
382
+                'program_id' => $program_id,
304
             ),
383
             ),
305
             array(
384
             array(
306
                 'name' => 'required|string',
385
                 'name' => 'required|string',
307
                 'subcriteria' => 'string',
386
                 'subcriteria' => 'string',
308
-                'outcome_id' => 'required|array',
309
-                'scales' => 'required|array',
387
+                // 'outcome_id' => 'required|array',
388
+                'scales' => 'required|string',
310
                 'notes' => 'string',
389
                 'notes' => 'string',
311
                 'copyright' => 'string',
390
                 'copyright' => 'string',
312
                 'maximum_score' => 'required|integer',
391
                 'maximum_score' => 'required|integer',
313
-                'objective_id' => 'required|array'
392
+                'objective_id' => 'required|string',
393
+                'program_id' => 'required|integer'
314
             )
394
             )
315
 
395
 
316
         );
396
         );
324
     public function create()
404
     public function create()
325
     {
405
     {
326
         $clean_input = $this->cleanInput();
406
         $clean_input = $this->cleanInput();
327
-        Log::info("POG???");
407
+
328
 
408
 
329
         /** Validation rules */
409
         /** Validation rules */
330
-        //$validator = $this->makeValidator($clean_input);
410
+        $validator = $this->makeValidator($clean_input);
331
 
411
 
332
         /** If validation fails */
412
         /** If validation fails */
333
-        //if ($validator->fails()) {
334
-        /** Prepare error message */
335
-        /*    $message = '<p>Error(s) creating a new Criterion:</p><ul>';
413
+        if ($validator->fails()) {
414
+            /** Prepare error message */
415
+            $message = '<p>Error(s) creating a new Criterion:</p><ul>';
336
 
416
 
337
             foreach ($validator->messages()->all('<li>:message</li>') as $validationError) {
417
             foreach ($validator->messages()->all('<li>:message</li>') as $validationError) {
338
                 $message .= $validationError;
418
                 $message .= $validationError;
341
             $message .= '</ul>';
421
             $message .= '</ul>';
342
 
422
 
343
             /** Send error message and old data */
423
             /** Send error message and old data */
344
-        /* Session::flash('status', 'danger');
424
+            Session::flash('status', 'danger');
345
             Session::flash('message', $message);
425
             Session::flash('message', $message);
346
             $role = Auth::user()['role'];
426
             $role = Auth::user()['role'];
347
             switch ($role) {
427
             switch ($role) {
358
             // Check criterion uniqueness
438
             // Check criterion uniqueness
359
             if (!$this->isCriterionUnique($clean_input)) {
439
             if (!$this->isCriterionUnique($clean_input)) {
360
                 /** Send error message and old data*/
440
                 /** Send error message and old data*/
361
-        /*Session::flash('status', 'danger');
441
+                Session::flash('status', 'danger');
362
                 Session::flash('message', 'This criterion is a duplicate of an already saved criterion because its name and associated program are the same.');
442
                 Session::flash('message', 'This criterion is a duplicate of an already saved criterion because its name and associated program are the same.');
363
 
443
 
364
                 $role = Auth::user()['role'];
444
                 $role = Auth::user()['role'];
373
                         return Redirect::to('program-criteria')->withInput();
453
                         return Redirect::to('program-criteria')->withInput();
374
                 }
454
                 }
375
             }
455
             }
376
-*/
377
-        /** Instantiate new criterion */
378
-        $criterion = new Criterion;
379
-        $criterion->name = $clean_input['name'];
380
-        $criterion->subcriteria = $clean_input['subcriteria'];
381
 
456
 
457
+            /** Instantiate new criterion */
458
+            $criterion = new Criterion;
459
+            $criterion->name = $clean_input['name'];
460
+            $criterion->subcriteria = $clean_input['subcriteria'];
382
 
461
 
383
-        //gabriel añadió aqui
384
 
462
 
385
-        $criterion->num_scales = sizeof($clean_input['scale_description']);
386
-        $criterion->max_score = $clean_input['maximum_score'];
463
+            //gabriel añadió aqui
387
 
464
 
388
-        if (Input::get('copyright'))
389
-            $criterion->copyright = $clean_input['copyright'];
465
+            $criterion->num_scales = sizeof($clean_input['scale_description']);
466
+            $criterion->max_score = $clean_input['maximum_score'];
390
 
467
 
391
-        if (Input::get('notes'))
392
-            $criterion->notes = $clean_input['notes'];
468
+            if (Input::get('copyright'))
469
+                $criterion->copyright = $clean_input['copyright'];
393
 
470
 
471
+            if (Input::get('notes'))
472
+                $criterion->notes = $clean_input['notes'];
394
 
473
 
395
 
474
 
396
-        /** If criterion is saved, send success message */
397
-        if ($criterion->save()) {
398
 
475
 
399
-            $criterionId = $criterion->id;
400
-            $parentesis = array('(', ')');
476
+            /** If criterion is saved, send success message */
477
+            if ($criterion->save()) {
401
 
478
 
402
-            foreach ($clean_input['objective_id'] as $objective_id) {
479
+                $criterionId = $criterion->id;
480
+                $parentesis = array('(', ')');
403
 
481
 
404
-                $outcome_objective = str_replace($parentesis, '', $objective_id);
482
+                foreach ($clean_input['objective_id'] as $objective_id) {
405
 
483
 
406
-                $outcome_objective = explode(',', $outcome_objective);
407
-                DB::insert("insert into `criterion_objective_outcome` (`objective_id`, `outcome_id`, `criterion_id`) values ({$outcome_objective[1]},{$outcome_objective[0]}, {$criterionId})");
408
-            }
484
+                    $outcome_objective = str_replace($parentesis, '', $objective_id);
409
 
485
 
486
+                    $outcome_objective = explode(',', $outcome_objective);
487
+                    DB::insert("insert into `criterion_objective_outcome` (`objective_id`, `outcome_id`, `criterion_id`) values ({$outcome_objective[1]},{$outcome_objective[0]}, {$criterionId})");
488
+                }
410
 
489
 
411
-            for ($i = 0; $i < sizeof($clean_input['scale_description']); $i++) {
412
 
490
 
413
-                $existing_scale = DB::table('scales')->where('description', $clean_input['scale_description'][$i])
414
-                    ->first();
415
-                if ($existing_scale) {
416
-                    DB::insert("insert into `criterion_scale` (`criterion_id`, `scale_id`, `position`) values({$criterionId},{$existing_scale->id},{$i})");
417
-                } else {
418
-                    $scale = new Scale;
491
+                for ($i = 0; $i < sizeof($clean_input['scale_description']); $i++) {
419
 
492
 
420
-                    $position = $i;
421
-                    $scale->description = $clean_input['scale_description'][$i];
493
+                    $existing_scale = DB::table('scales')->where('description', $clean_input['scale_description'][$i])
494
+                        ->first();
495
+                    if ($existing_scale) {
496
+                        DB::insert("insert into `criterion_scale` (`criterion_id`, `scale_id`, `position`) values({$criterionId},{$existing_scale->id},{$i})");
497
+                    } else {
498
+                        $scale = new Scale;
422
 
499
 
500
+                        $position = $i;
501
+                        $scale->description = $clean_input['scale_description'][$i];
423
 
502
 
424
-                    if ($scale->save()) {
425
-                        DB::insert("insert into `criterion_scale` (`criterion_id`, `scale_id`, `position`) values({$criterionId},{$scale->id}, {$position})");
426
-                    } else {
427
-                        Session::flash('status', 'danger');
428
-                        Session::flash('message', '<p>Error creating the Scales</p>');
429
-                        $role = Auth::user()['role'];
430
-                        switch ($role) {
431
-                            case 1:
432
-                                return Redirect::to('criteria')->withInput();
433
-
434
-                            case 2:
435
-                                return Redirect::to('school-criteria')->withInput();
436
-
437
-                            case 3:
438
-                                return Redirect::to('program-criteria')->withInput();
503
+
504
+                        if ($scale->save()) {
505
+                            DB::insert("insert into `criterion_scale` (`criterion_id`, `scale_id`, `position`) values({$criterionId},{$scale->id}, {$position})");
506
+                        } else {
507
+                            Session::flash('status', 'danger');
508
+                            Session::flash('message', '<p>Error creating the Scales</p>');
509
+                            $role = Auth::user()['role'];
510
+                            switch ($role) {
511
+                                case 1:
512
+                                    return Redirect::to('criteria')->withInput();
513
+
514
+                                case 2:
515
+                                    return Redirect::to('school-criteria')->withInput();
516
+
517
+                                case 3:
518
+                                    return Redirect::to('program-criteria')->withInput();
519
+                            }
439
                         }
520
                         }
440
                     }
521
                     }
441
                 }
522
                 }
442
-            }
443
 
523
 
444
-            foreach ($clean_input['program_id'] as $program_id) {
445
-                DB::insert("insert into `program_criterion` (`criterion_id`, `program_id`) values({$criterionId},{$program_id})");
446
-            }
524
+                /* $role = Auth::user()->role;
525
+                switch ($role) {
526
+                    case 1:
527
+                        $program_ids = DB::table('criterion_objective_outcome')
528
+                            ->join('objective_program', 'criterion_objective_outcome.objective_id', '=', 'objective_program.program_id')
529
+                            ->where('criterion_id', $criterionId)
530
+                            ->select('program_id')
531
+                            ->distinct()
532
+                            ->lists('program_id');
533
+                        break;
534
+                    case 2:
535
+                        $program_ids =  DB::table('criterion_objective_outcome')
536
+                            ->join('objective_program', 'criterion_objective_outcome.objective_id', '=', 'objective_program.program_id')
537
+                            ->join('programs', 'programs.id', '=', 'objective_program.program_id')
538
+                            ->where('criterion_id', $criterionId)
539
+                            ->where('programs.school_id', Auth::user()->school_id)
540
+                            ->select('program_id')
541
+                            ->distinct()
542
+                            ->lists('program_id');
447
 
543
 
448
-            Session::flash('status', 'success');
449
-            Session::flash('message', 'Criterion created: "' . $criterion->name . '".');
450
-            $role = Auth::user()['role'];
451
-            switch ($role) {
452
-                case 1:
453
-                    return Redirect::to('criteria')->withInput();
544
+                        break;
454
 
545
 
455
-                case 2:
456
-                    return Redirect::to('school-criteria')->withInput();
546
+                    case 3:
457
 
547
 
458
-                case 3:
459
-                    return Redirect::to('program-criteria')->withInput();
548
+                        $program_ids = DB::table('program_user')
549
+                            ->where('user_id', Auth::user()->id)
550
+                            ->lists('program_id');
551
+
552
+                        break;
553
+                }*/
554
+
555
+
556
+                foreach ($clean_input['program_id'] as $program_id) {
557
+                    DB::insert("insert into `program_criterion` (`criterion_id`, `program_id`) values({$criterionId},{$program_id})");
558
+                }
559
+
560
+                Session::flash('status', 'success');
561
+                Session::flash('message', 'Criterion created: "' . $criterion->name . '".');
562
+                $role = Auth::user()['role'];
563
+                switch ($role) {
564
+                    case 1:
565
+                        return Redirect::to('criteria')->withInput();
566
+
567
+                    case 2:
568
+                        return Redirect::to('school-criteria')->withInput();
569
+
570
+                    case 3:
571
+                        return Redirect::to('program-criteria')->withInput();
572
+                }
460
             }
573
             }
461
-        }
462
 
574
 
463
-        /** If saving fails, send error message and old data */
464
-        else {
465
-            Session::flash('status', 'danger');
466
-            Session::flash('message', '<p>Error creating Criterion. Please try again later.</p>');
467
-            $role = Auth::user()['role'];
468
-            switch ($role) {
469
-                case 1:
470
-                    return Redirect::to('criteria')->withInput();
575
+            /** If saving fails, send error message and old data */
576
+            else {
577
+                Session::flash('status', 'danger');
578
+                Session::flash('message', '<p>Error creating Criterion. Please try again later.</p>');
579
+                $role = Auth::user()['role'];
580
+                switch ($role) {
581
+                    case 1:
582
+                        return Redirect::to('criteria')->withInput();
471
 
583
 
472
-                case 2:
473
-                    return Redirect::to('school-criteria')->withInput();
584
+                    case 2:
585
+                        return Redirect::to('school-criteria')->withInput();
474
 
586
 
475
-                case 3:
476
-                    return Redirect::to('program-criteria')->withInput();
587
+                    case 3:
588
+                        return Redirect::to('program-criteria')->withInput();
589
+                }
477
             }
590
             }
478
         }
591
         }
479
     }
592
     }
480
 
593
 
481
 
594
 
482
 
595
 
483
-
484
     public function edit()
596
     public function edit()
485
     {
597
     {
486
         $title = "Criteria";
598
         $title = "Criteria";
696
                             }
808
                             }
697
                         }
809
                         }
698
                     }
810
                     }
699
-                }
811
+                }/*
812
+                switch ($role) {
813
+                    case 1:
814
+                        $program_ids = DB::table('criterion_objective_outcome')
815
+                            ->join('objective_program', 'criterion_objective_outcome.objective_id', '=', 'objective_program.program_id')
816
+                            ->where('criterion_id', $criterionId)
817
+                            ->select('program_id')
818
+                            ->distinct()
819
+                            ->lists('program_id');
820
+                        break;
821
+                    case 2:
822
+                        $program_ids =  DB::table('criterion_objective_outcome')
823
+                            ->join('objective_program', 'criterion_objective_outcome.objective_id', '=', 'objective_program.program_id')
824
+                            ->join('programs', 'programs.id', '=', 'objective_program.program_id')
825
+                            ->where('criterion_id', $criterionId)
826
+                            ->where('programs.school_id', Auth::user()->school_id)
827
+                            ->select('program_id')
828
+                            ->distinct()
829
+                            ->lists('program_id');
830
+
831
+                        break;
832
+
833
+                    case 3:
834
+
835
+                        $program_ids = DB::table('program_user')
836
+                            ->where('user_id', Auth::user()->id)
837
+                            ->lists('program_id');
838
+
839
+                        break;
840
+                }*/
700
                 foreach ($clean_input['program_id'] as $program_id) {
841
                 foreach ($clean_input['program_id'] as $program_id) {
701
                     DB::insert("insert into `program_criterion` (`criterion_id`, `program_id`) values({$criterionId},{$program_id})");
842
                     DB::insert("insert into `program_criterion` (`criterion_id`, `program_id`) values({$criterionId},{$program_id})");
702
                 }
843
                 }

+ 2
- 2
app/controllers/OutcomesController.php View File

424
                         $criterion->program_ids = json_encode(DB::table('program_criterion')
424
                         $criterion->program_ids = json_encode(DB::table('program_criterion')
425
                             ->where('criterion_id', $criterion->id)
425
                             ->where('criterion_id', $criterion->id)
426
                             ->lists('program_id'));
426
                             ->lists('program_id'));
427
-                        $criterion->objectives = json_encode(DB::table('criterion_objective_outcome')
427
+                        $criterion->objectives = DB::table('criterion_objective_outcome')
428
                             ->join('objectives', 'objectives.id', '=', 'criterion_objective_outcome.objective_id')
428
                             ->join('objectives', 'objectives.id', '=', 'criterion_objective_outcome.objective_id')
429
                             ->where('criterion_id', $criterion->id)
429
                             ->where('criterion_id', $criterion->id)
430
                             ->select('objectives.*')
430
                             ->select('objectives.*')
431
                             ->distinct()
431
                             ->distinct()
432
-                            ->lists('text'));
432
+                            ->lists('text');
433
                     }
433
                     }
434
                     return $criteria;
434
                     return $criteria;
435
                     break;
435
                     break;

+ 3
- 3
app/views/global/view-three-year-plan.blade.php View File

442
           //if(typ.length>0)
442
           //if(typ.length>0)
443
           //{
443
           //{
444
           $('table').show();
444
           $('table').show();
445
-          $('#cycle1').html((year_start)+"-"+(year_start+1));
446
-          $('#cycle2').html((year_start+1)+"-"+(year_end-1));
447
-          $('#cycle3').html((year_end-1)+"-"+(year_end));
445
+          $('#cycle1').html((parseInt(year_start))+"-"+(parseInt(year_start)+1));
446
+          $('#cycle2').html((parseInt(year_start)+1)+"-"+(parseInt(year_end)-1));
447
+          $('#cycle3').html((parseInt(year_end)-1)+"-"+(parseInt(year_end)));
448
 
448
 
449
           $('#cycle_id').val(typ.id);
449
           $('#cycle_id').val(typ.id);
450
 
450
 

+ 91
- 22
app/views/local/managers/sCoords/criteria.blade.php View File

28
                 <div id='objectiveGroupFor0' data-value = '1'>
28
                 <div id='objectiveGroupFor0' data-value = '1'>
29
                     <div class="form-group col-md-11">
29
                     <div class="form-group col-md-11">
30
                         <label>Associated Objectives for Outcome 1</label>
30
                         <label>Associated Objectives for Outcome 1</label>
31
-                        <select id="objective_0_counter_1" name="objective[]" class="form-control selectpicker">
31
+                        <select id="objective_0_counter_1" name="objective[]" class="form-control selectpicker" onchange ="visiblePrograms('allOutcomes')">
32
                         </select>
32
                         </select>
33
 
33
 
34
                     </div>
34
                     </div>
56
                 </button>
56
                 </button>
57
 
57
 
58
                 <!-- Associated Program -->
58
                 <!-- Associated Program -->
59
-                <div class="form-group">
59
+                <div class="form-group" id = 'program-checkboxes'>
60
                     {{ Form::label('program_id', 'Associated Program') }}<br>
60
                     {{ Form::label('program_id', 'Associated Program') }}<br>
61
                     <br>
61
                     <br>
62
 
62
 
63
                     @foreach ($programs as $program)
63
                     @foreach ($programs as $program)
64
 
64
 
65
-                    <input type="checkbox" id="{{ $program->name }}" name="program_id[]" value="{{$program->id}}">
66
-                    <label for="{{ $program->name }}"> {{ $program->name }} [{{ $program->school->name }}]</label><br>
65
+                    <input type="checkbox" id="program-{{ $program->id }}" name="program_id[]" value="{{$program->id}}" >
66
+                    <label for="program-{{ $program->id }}"> {{ $program->name }} [{{ $program->school->name }}]</label><br>
67
                     @endforeach
67
                     @endforeach
68
 
68
 
69
                 </div>
69
                 </div>
163
     <div id='assoc_objectiveGroupFor0' data-value="1">
163
     <div id='assoc_objectiveGroupFor0' data-value="1">
164
                         <div class="form-group col-md-11">
164
                         <div class="form-group col-md-11">
165
                             <label>Associated Objectives for Outcome 1</label>
165
                             <label>Associated Objectives for Outcome 1</label>
166
-                            <select id="assoc_objective_0_counter_1" name="objective[]" class="form-control selectpicker">
166
+                            <select id="assoc_objective_0_counter_1" name="objective[]" class="form-control selectpicker" onchange ="visiblePrograms('allAssocOutcomes')">
167
                                 <option value="0">No associated objectives</option>
167
                                 <option value="0">No associated objectives</option>
168
                             </select>
168
                             </select>
169
     
169
     
184
                         Add another Outcome
184
                         Add another Outcome
185
                     </button>
185
                     </button>
186
                 <!-- Associated Program -->
186
                 <!-- Associated Program -->
187
-                <div class="form-group">
187
+                <div class="form-group" id = 'assoc-program-checkboxes'>
188
 
188
 
189
                     {{ Form::label('program_id2', 'Associated Program') }}<br><br>
189
                     {{ Form::label('program_id2', 'Associated Program') }}<br><br>
190
                     @foreach ($programs as $program)
190
                     @foreach ($programs as $program)
191
 
191
 
192
-                    <input type="checkbox" id="assoc_program_id_{{ $program->id }}" name="program_id[]" value="{{$program->id}}">
193
-                    <label for="assoc_program_id_{{ $program->id }}"> {{ $program->name }} <sub>[{{ $program->school->name }}]</sub></label><br>
192
+                    <input type="checkbox" id="assoc_program-{{ $program->id }}" name="program_id[]" value="{{$program->id}}">
193
+                    <label for="assoc_program-{{ $program->id }}"> {{ $program->name }} <sub>[{{ $program->school->name }}]</sub></label><br>
194
                     @endforeach
194
                     @endforeach
195
                 </div>
195
                 </div>
196
 
196
 
285
 e.preventDefault();
285
 e.preventDefault();
286
 })
286
 })
287
 
287
 
288
+visibleProgram = {};
289
+visibleProgram["allAssocOutcomes"]= {}
290
+visibleProgram["allOutcomes"]={}
291
+function visiblePrograms(allOutcomesDiv){
292
+    $('#'+allOutcomesDiv).parent().find('input:checkbox').each(function(index){
293
+
294
+        id = $(this).attr('id');
295
+        $(this).prop( "checked", false );
296
+        program_id = $(this).val();
297
+        if(!(program_id in visibleProgram[allOutcomesDiv])){
298
+            visibleProgram[allOutcomesDiv][program_id] ={};
299
+        }
300
+        visibleProgram[allOutcomesDiv][program_id]["checkbox"] =$(this).detach();
301
+        $("label[for='"+id+"']").next('br').remove();
302
+        visibleProgram[allOutcomesDiv][program_id]["label"] =$("label[for='"+id+"']").detach();
288
 
303
 
304
+    })
305
+    if(allOutcomesDiv =="allOutcomes"){
306
+    $('#'+allOutcomesDiv).parent().find("select[name='objective[]']").each(function(index){
307
+        var the_programs = $(this).find(':selected').data('program-ids');
308
+        if(!the_programs) return;
309
+        
310
+        
311
+        for(index in the_programs){
312
+            program_id = the_programs[index];
313
+            
314
+            if(program_id in visibleProgram[allOutcomesDiv] && 
315
+            !($('#program-checkboxes').find('#'+visibleProgram[allOutcomesDiv][program_id]['checkbox'].attr('id')).val())){
316
+                visibleProgram[allOutcomesDiv][program_id]['checkbox'].appendTo('#program-checkboxes');
317
+                visibleProgram[allOutcomesDiv][program_id]['label'].appendTo("#program-checkboxes");
318
+                $('#program-checkboxes').append('<br>');
319
+
320
+                
321
+
322
+            }
323
+        }
324
+        
325
+    })
326
+    }
327
+    else{
328
+        $('#'+allOutcomesDiv).find("select[name='objective[]']").each(function(index){
329
+        var the_programs = $(this).find(':selected').data('program-ids');
330
+        if(!the_programs) return;
331
+        
332
+        
333
+        for(index in the_programs){
334
+            program_id = the_programs[index];
335
+            if(program_id in visibleProgram[allOutcomesDiv] && 
336
+            !($('#assoc-program-checkboxes').find('#'+visibleProgram[allOutcomesDiv][program_id]['checkbox'].attr('id')).val())){
337
+                visibleProgram[allOutcomesDiv][program_id]['checkbox'].appendTo('#assoc-program-checkboxes');
338
+                visibleProgram[allOutcomesDiv][program_id]['label'].appendTo("#assoc-program-checkboxes");
339
+                $('#assoc-program-checkboxes').append('<br>');
340
+
341
+                
342
+
343
+            }
344
+        }
345
+        
346
+    })
347
+    }
348
+
349
+}
289
     function addOptions(select, max, scaleDiv) {
350
     function addOptions(select, max, scaleDiv) {
290
 
351
 
291
         
352
         
471
         'class': "selectpicker form-control",
532
         'class': "selectpicker form-control",
472
         'name': "objective[]",
533
         'name': "objective[]",
473
         'data-live-search': 'true',
534
         'data-live-search': 'true',
474
-        'id': 'objective_'+counter +'_counter_1'  
535
+        'id': 'objective_'+counter +'_counter_1' ,
536
+        'onchange': "visiblePrograms('allOutcomes')"
475
     });
537
     });
476
 
538
 
477
     var empty_div = $('<div/>',{
539
     var empty_div = $('<div/>',{
538
 
600
 
539
     }
601
     }
540
     //Delete Objective
602
     //Delete Objective
541
-    function deleteObjective(objectiveForm, closeObj, objectiveGroup) {
603
+    function deleteObjective(objectiveForm, closeObj, objectiveGroup, allOutcomes) {
542
         $div = document.getElementById(objectiveForm);
604
         $div = document.getElementById(objectiveForm);
543
         $div.remove();
605
         $div.remove();
544
         $div = document.getElementById(closeObj);
606
         $div = document.getElementById(closeObj);
545
         $div.remove();
607
         $div.remove();
546
         counter = parseInt($('#'+objectiveGroup).data("value"));
608
         counter = parseInt($('#'+objectiveGroup).data("value"));
547
         $('#'+objectiveGroup).data("value", counter-1);
609
         $('#'+objectiveGroup).data("value", counter-1);
610
+        visiblePrograms(allOutcomes);
548
 
611
 
549
 
612
 
550
     }
613
     }
551
 
614
 
615
+    
616
+
552
     //Add objective when editing
617
     //Add objective when editing
553
 
618
 
554
     function addAssocObjective(objForGroup, originalObjective) {
619
     function addAssocObjective(objForGroup, originalObjective) {
561
             'name': "objective[]",
626
             'name': "objective[]",
562
             'data-live-search': 'true',
627
             'data-live-search': 'true',
563
             'id': originalObjective+'_counter_' + (assocObjectiveCounter+1).toString(),
628
             'id': originalObjective+'_counter_' + (assocObjectiveCounter+1).toString(),
629
+            'onchange': "visiblePrograms('allAssocOutcomes')"
564
 
630
 
565
 
631
 
566
         });
632
         });
576
         var $button = $('<button/>', {
642
         var $button = $('<button/>', {
577
             'type': 'button',
643
             'type': 'button',
578
             'class': 'btn btn-primary',
644
             'class': 'btn btn-primary',
579
-            'onclick': 'deleteObjective("assoc_objectiveForm_'+objForGroup+'_' + assocObjectiveCounter.toString() + '", "assoc_closeObj_' +objForGroup+'_' + assocObjectiveCounter.toString() + '", "'+objForGroup+'")'
645
+            'onclick': 'deleteObjective("assoc_objectiveForm_'+objForGroup+'_' + assocObjectiveCounter.toString() + '", "assoc_closeObj_' +objForGroup+'_' + assocObjectiveCounter.toString() + '", "'+objForGroup+'", "allAssocOutcomes")'
580
         });
646
         });
581
 
647
 
582
         $button.append('X');
648
         $button.append('X');
605
             'class': "selectpicker form-control",
671
             'class': "selectpicker form-control",
606
             'name': "objective[]",
672
             'name': "objective[]",
607
             'data-live-search': 'true',
673
             'data-live-search': 'true',
608
-            'id': originalObjective +'_counter_' + (counter+1).toString()
674
+            'id': originalObjective +'_counter_' + (counter+1).toString(),
675
+            'onchange': "visiblePrograms('allOutcomes')"
609
         });
676
         });
610
         var $div = $('<div/>', {
677
         var $div = $('<div/>', {
611
             'id': 'objectiveForm_'+objForGroup + '_' + counter.toString(),
678
             'id': 'objectiveForm_'+objForGroup + '_' + counter.toString(),
619
         var $button = $('<button/>', {
686
         var $button = $('<button/>', {
620
             'type': 'button',
687
             'type': 'button',
621
             'class': 'btn btn-primary',
688
             'class': 'btn btn-primary',
622
-            'onclick': 'deleteObjective("objectiveForm_' +objForGroup +'_' + counter.toString() + '", "closeObj_'+objForGroup+'_' + counter.toString() + '", "'+objForGroup+'")'
689
+            'onclick': 'deleteObjective("objectiveForm_' +objForGroup +'_' + counter.toString() + '", "closeObj_'+objForGroup+'_' + counter.toString() + '", "'+objForGroup+'", "allOutcomes")'
623
         });
690
         });
624
 
691
 
625
         $button.append('X');
692
         $button.append('X');
664
             'type': 'button',
731
             'type': 'button',
665
             'class': 'btn btn-primary',
732
             'class': 'btn btn-primary',
666
             'id': 'assoc_close_button'+assocOutcomeCounter,
733
             'id': 'assoc_close_button'+assocOutcomeCounter,
667
-            'onclick': '$(this).parent().parent().remove()'
734
+            'onclick': '$(this).parent().parent().remove(); visiblePrograms("allAssocOutcomes")'
668
          });
735
          });
669
 
736
 
670
         var divForGroup = $('<div/>', {
737
         var divForGroup = $('<div/>', {
683
             'class': "selectpicker form-control",
750
             'class': "selectpicker form-control",
684
             'name': "objective[]",
751
             'name': "objective[]",
685
             'data-live-search': 'true',
752
             'data-live-search': 'true',
686
-            'id': 'assoc_objective_'+assocOutcomeCounter +'_counter_1'  
753
+            'id': 'assoc_objective_'+assocOutcomeCounter +'_counter_1',
754
+            'onchange': "visiblePrograms('allAssocOutcomes')" 
687
         });
755
         });
688
 
756
 
689
         var empty_div = $('<div/>',{
757
         var empty_div = $('<div/>',{
734
 
802
 
735
     var assocObjectiveCounter = 1;
803
     var assocObjectiveCounter = 1;
736
 
804
 
737
-    function fetchAssocObjective(outcomeDiv, objectiveGroup) {
805
+/*    function fetchAssocObjective(outcomeDiv, objectiveGroup) {
738
         var count = $('#'+outcomeDiv).data('value');
806
         var count = $('#'+outcomeDiv).data('value');
739
         var allOutcomes =[];
807
         var allOutcomes =[];
740
 
808
 
792
                     $("#assoc_objective_"+i.toString()).val(allObjectives[i].value);
860
                     $("#assoc_objective_"+i.toString()).val(allObjectives[i].value);
793
                     $("#assoc_objective_"+i.toString()).selectpicker("refresh");
861
                     $("#assoc_objective_"+i.toString()).selectpicker("refresh");
794
                     }
862
                     }
795
-                }*/
863
+                }
796
 
864
 
797
 
865
 
798
 
866
 
799
             },
867
             },
800
             'json'
868
             'json'
801
         );
869
         );
802
-    }
870
+    }*/
803
 
871
 
804
     //Fetch objective at creating criteria
872
     //Fetch objective at creating criteria
805
     counterForPost = 0;
873
     counterForPost = 0;
824
                 optionName = '<option value ="0">Nothing Selected</option>';
892
                 optionName = '<option value ="0">Nothing Selected</option>';
825
                 for(index in varArray){
893
                 for(index in varArray){
826
                     objectiveObject = varArray[index];
894
                     objectiveObject = varArray[index];
827
-                    optionName += '<option value ="('+objectiveObject.outcome_id+','+objectiveObject.objective_id+')">'+
895
+                    optionName += '<option data-program-ids = "'+objectiveObject.program_ids+'" value ="('+objectiveObject.outcome_id+','+objectiveObject.objective_id+')">'+
828
                         objectiveObject.text+'</option>';
896
                         objectiveObject.text+'</option>';
829
 
897
 
830
                 }
898
                 }
1029
                     options = "<option value ='0'>Nothing Selected</option>";
1097
                     options = "<option value ='0'>Nothing Selected</option>";
1030
                         $(first_outcome.assoc_objectives).each(function(index, objective){
1098
                         $(first_outcome.assoc_objectives).each(function(index, objective){
1031
 
1099
 
1032
-                        options += '<option value ="('+first_outcome.id+','+objective.objective_id+')">'+
1100
+                        options += '<option data-program-ids = "'+objective.program_ids+'" value ="('+first_outcome.id+','+objective.objective_id+')">'+
1033
                             objective.text+'</option>';
1101
                             objective.text+'</option>';
1034
 
1102
 
1035
                         })
1103
                         })
1120
                     }
1188
                     }
1121
 
1189
 
1122
                 }
1190
                 }
1191
+                visiblePrograms('allAssocOutcomes');
1123
 
1192
 
1124
 
1193
 
1125
                 //counterObj =$('#assoc_objectiveGroup').data('value');
1194
                 //counterObj =$('#assoc_objectiveGroup').data('value');
1190
                 $('input[type=checkbox]').prop('checked', false);
1259
                 $('input[type=checkbox]').prop('checked', false);
1191
 
1260
 
1192
                 for (var i = 0; i < program_length; i++) {
1261
                 for (var i = 0; i < program_length; i++) {
1193
-                    $('#assoc_program_id_' + criterion.program[i].program_id).prop("checked", true);
1262
+                    $('#assoc_program-' + criterion.program[i].program_id).prop("checked", true);
1194
                 }
1263
                 }
1195
 
1264
 
1196
 
1265
 
1220
 fetchObjectiveForSelect('outcome0', 'objectiveGroupFor0');
1289
 fetchObjectiveForSelect('outcome0', 'objectiveGroupFor0');
1221
 // setCriterionStatus();
1290
 // setCriterionStatus();
1222
 fetchAllCriterion("select-program", "assoc_outcomes_fetch");
1291
 fetchAllCriterion("select-program", "assoc_outcomes_fetch");
1223
-
1292
+visiblePrograms('allOutcomes');
1224
 // --------------------------------------------------------------------------
1293
 // --------------------------------------------------------------------------
1225
 // Functions
1294
 // Functions
1226
 // --------------------------------------------------------------------------
1295
 // --------------------------------------------------------------------------

+ 1
- 1
app/views/local/managers/sCoords/objectives.blade.php View File

53
 
53
 
54
                     @foreach ($programs as $program)
54
                     @foreach ($programs as $program)
55
 
55
 
56
-                    <input type="checkbox" id="{{ $program->name }}" name="program_id[]" value="{{$program->id}}">
56
+                    <input type="checkbox" id="{{ $program->name }}" name="program_id[]" value="{{$program->id}}" >
57
                     <label for="{{ $program->name }}"> {{ $program->name }} [{{ $program->school->name }}]</label><br>
57
                     <label for="{{ $program->name }}"> {{ $program->name }} [{{ $program->school->name }}]</label><br>
58
                     @endforeach
58
                     @endforeach
59
 
59
 

+ 146
- 44
app/views/local/managers/shared/rubrics.blade.php View File

315
         </div>
315
         </div>
316
     </div>
316
     </div>
317
 </div>
317
 </div>
318
+
319
+<div class="modal fade" id="rubric-modal">
320
+    <div class="modal-dialog modal-md">
321
+      <div class="modal-content">
322
+        <div class="modal-header">
323
+          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
324
+          <h4 class="modal-title text-center" id ="modal-title-rubric">You are adding criteria to your program</h4>
325
+        </div>
326
+          <div class="modal-body" id ="modal-body-rubric">
327
+              
328
+  
329
+  
330
+ 
331
+                 
332
+                  
333
+                  
334
+          </div>
335
+        <div class="modal-footer">
336
+              <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
337
+              <button type="button" class="btn btn-primary" id ="saveButton" value="Save" type="button" onclick = "saveTemplate()" >Save</button>
338
+
339
+        </div>
340
+      </div><!-- /.modal-content -->
341
+    </div><!-- /.modal-dialog -->
342
+  </div>
318
 <script>
343
 <script>
319
 
344
 
320
     </script>
345
     </script>
382
             // Append criteria
407
             // Append criteria
383
             data.forEach( function (arrayItem)
408
             data.forEach( function (arrayItem)
384
             {
409
             {
410
+                objectives = JSON.stringify(arrayItem.objectives);
385
                 $('#select-criterion')
411
                 $('#select-criterion')
386
-                    .append('<option data-criterion-id="'+arrayItem.id+'" data-program-ids = "'+arrayItem.program_ids+'" data-assoc-objectives = "'arrayItem.objectives'">'+arrayItem.name+'</option>');
412
+                    .append('<option data-criterion-id="'+arrayItem.id+'" data-program-ids = "'+arrayItem.program_ids+'" data-assoc-objectives= '+"'"+objectives+"'"+'>'+arrayItem.name+'</option>');
387
             });
413
             });
388
 
414
 
389
             // If there are no criteria assigned to the selected outcome, disable the
415
             // If there are no criteria assigned to the selected outcome, disable the
423
 
449
 
424
     // Get the selected criterion's id
450
     // Get the selected criterion's id
425
     var id= parseInt($('#select-criterion').find(':selected').data('criterion-id'));
451
     var id= parseInt($('#select-criterion').find(':selected').data('criterion-id'));
426
-
452
+    var program_ids = $('#select-criterion').find(':selected').data('program-ids');
453
+    var objectives = $('#select-criterion').find(':selected').data('assoc-objectives');
427
     // Check for duplicates
454
     // Check for duplicates
428
     var duplicates=false;
455
     var duplicates=false;
429
     numberOfScale = $('#number_of_scales').find(':selected').val();
456
     numberOfScale = $('#number_of_scales').find(':selected').val();
469
             }
496
             }
470
             
497
             
471
             
498
             
472
-            var str ='<tr data-criterion-id="'+data.criterion.id+'" data-criterion-copyright="'+copyright+'" data-criterion-notes="'+notes+'" data-outcomes = "'+data.outcomes+'"><th><span class="glyphicon glyphicon-move"></span></th><td>';
499
+            var str ='<tr data-criterion-name ="'+data.criterion.name+'" data-program-ids = "['+program_ids+']" data-assoc-objectives = '+"'"+objectives+"'"+' data-criterion-id="'+data.criterion.id+'" data-criterion-copyright="'+copyright+'" data-criterion-notes="'+notes+'" data-outcomes = "'+data.outcomes+'"><th><span class="glyphicon glyphicon-move"></span></th><td>';
473
 
500
 
474
             var subcriteria = '';
501
             var subcriteria = '';
475
             if(data.criterion.subcriteria){
502
             if(data.criterion.subcriteria){
782
             // Set the contents of the rubric
809
             // Set the contents of the rubric
783
             var temp_criterion = data.criterion;
810
             var temp_criterion = data.criterion;
784
             for(temp_c in temp_criterion){
811
             for(temp_c in temp_criterion){
785
-                var str = '<tr data-criterion-id="'+temp_criterion[temp_c].criterion_id+'" data-criterion-copyright="'+temp_criterion[temp_c].copyright+'" data-criterion-notes="'+temp_criterion[temp_c].notes+'" data-outcomes = "'+temp_criterion[temp_c].outcomes+'"><th><span class="glyphicon glyphicon-move"></span></th><td>';
786
                 current_criterion = temp_criterion[temp_c]
812
                 current_criterion = temp_criterion[temp_c]
813
+                var str = '<tr data-criterion-name = "'+current_criterion.name+'" data-criterion-id="'+temp_criterion[temp_c].criterion_id+'" data-criterion-copyright="'+temp_criterion[temp_c].copyright+'" data-criterion-notes="'+temp_criterion[temp_c].notes+'" data-outcomes = "'+temp_criterion[temp_c].outcomes+'"><th><span class="glyphicon glyphicon-move"></span></th><td>';
814
+                
787
                 var subcriteria ='';
815
                 var subcriteria ='';
788
                 if(current_criterion.subcriteria){
816
                 if(current_criterion.subcriteria){
789
                     var subcriteria_array = JSON.parse(current_criterion.subcriteria);
817
                     var subcriteria_array = JSON.parse(current_criterion.subcriteria);
841
             contents.forEach(function (data)
869
             contents.forEach(function (data)
842
             {
870
             {
843
                 // Append the fetched data
871
                 // Append the fetched data
844
-                var str ='<tr data-criterion-id="'+data.id+'" data-criterion-copyright="'+data.copyright+'" data-criterion-notes="'+data.notes+'"><th><span class="glyphicon glyphicon-move"></span></th><td>';
872
+                var str ='<tr  data-criterion-id="'+data.id+'" data-criterion-copyright="'+data.copyright+'" data-criterion-notes="'+data.notes+'"><th><span class="glyphicon glyphicon-move"></span></th><td>';
845
 
873
 
846
 
874
 
847
                 var subcriteria = '';
875
                 var subcriteria = '';
1170
     //Add new criterion
1198
     //Add new criterion
1171
     addCriterion();
1199
     addCriterion();
1172
 });
1200
 });
1173
-
1174
-// When the create or update buttons are clicked (.save)
1175
-$('.save').on('click', function(e)
1201
+function saveTemplate(button_id)
1176
 {
1202
 {
1177
     //Prevent page refresh
1203
     //Prevent page refresh
1178
-    e.preventDefault();
1179
-
1180
-    // Empty field validation
1181
-    var emptyFields=false;
1182
-
1183
-    $('#allCriteria').children('td').each(function()
1184
-    {
1185
-        if (($(this).text() == "" || $(this).text() == "Empty") && !($(this).hasClass('nullable')) )
1186
-        {
1187
-            emptyFields=true;
1188
-        }
1189
-    });
1190
-
1191
-
1192
-    // If any fields are empty, display error
1193
-    if(emptyFields || $.trim($('#rubric-name').val())=='')
1194
-    {
1195
-        $('#js-error-row').show();
1196
-        $('#js-error-row').find('#error-message').text('Error: Please fill all the fields. Make sure your rubric has a name and all scale scores are filled.');
1197
-        return;
1198
-    }
1199
-    else
1200
-    {
1201
-            $('#js-error-row').hide();
1202
-    }
1204
+    
1203
 
1205
 
1204
-    // Check whether a rubric with the written name already exists
1205
-    if($(this).attr('id')=='button-create-rubric' && nameExists())
1206
-    {
1207
-        $('#js-error-row').show();
1208
-        $('#js-error-row').find('#error-message').text('Error: A template with that name already exists.');
1209
-        return;
1210
-    }
1211
-    else
1212
-    {
1213
-            $('#js-error-row').hide();
1214
-    }
1206
+    
1215
 
1207
 
1216
     var criterionObject = new Object();
1208
     var criterionObject = new Object();
1217
     var criteriaArray = new Array();
1209
     var criteriaArray = new Array();
1305
         );
1297
         );
1306
     }
1298
     }
1307
 
1299
 
1300
+}
1301
+// When the create or update buttons are clicked (.save)
1302
+$('.save').on('click', function(e)
1303
+{
1304
+    //Prevent page refresh
1305
+    e.preventDefault();
1306
+    var emptyFields=false;
1307
+
1308
+    $('#allCriteria').children('td').each(function()
1309
+    {
1310
+        if (($(this).text() == "" || $(this).text() == "Empty") && !($(this).hasClass('nullable')) )
1311
+        {
1312
+            emptyFields=true;
1313
+        }
1314
+    });
1315
+
1316
+
1317
+    // If any fields are empty, display error
1318
+    if(emptyFields || $.trim($('#rubric-name').val())=='')
1319
+    {
1320
+        $('#js-error-row').show();
1321
+        $('#js-error-row').find('#error-message').text('Error: Please fill all the fields. Make sure your rubric has a name and all scale scores are filled.');
1322
+        return;
1323
+    }
1324
+    else
1325
+    {
1326
+            $('#js-error-row').hide();
1327
+    }
1328
+
1329
+    // Check whether a rubric with the written name already exists
1330
+    if($(this).attr('id')=='button-create-rubric' && nameExists())
1331
+    {
1332
+        $('#js-error-row').show();
1333
+        $('#js-error-row').find('#error-message').text('Error: A template with that name already exists.');
1334
+        return;
1335
+    }
1336
+    else
1337
+    {
1338
+            $('#js-error-row').hide();
1339
+    }
1340
+    program_id = $('#select-program').find(':selected').data('program-id')
1341
+    if(program_id == 0){
1342
+        $('#modal-title-rubric').html("All criteria will be associated with this school's programs");
1343
+        htmlString = "<h5>The following criteria and objectives will be matched with all programs</h5>"
1344
+        htmlString += "<ol style='list-style-position: inside'>"
1345
+
1346
+        $('tbody tr').each(function( index )
1347
+        {
1348
+            objectives = $(this).data('assoc-objectives');
1349
+            objectives = objectives.split(',');
1350
+            htmlString += "<li>" +$(this).data('criterion-name');
1351
+            htmlString += "<br><h5>This criterion is associated with these objectives</h5>"
1352
+            htmlString +="<ul style='padding-left: 5%; list-style-position: inside'>"
1353
+            for(index in objectives){
1354
+                
1355
+                objective_string = objectives[index];
1356
+                htmlString +="<li>"+objective_string+"</li>";
1357
+
1358
+            }
1359
+            htmlString += "</ul>"
1360
+           
1361
+            htmlString +="</li>" 
1362
+            htmlString+= "<br>";
1363
+        });
1364
+        htmlString +='</ol>';
1365
+        $("#modal-body-rubric").html(htmlString);
1366
+
1367
+
1368
+    }
1369
+    else{
1370
+        $('#modal-title-rubric').html('Some criteria will be associated with this program');
1371
+        $('tbody tr').each(function( index )
1372
+        {
1373
+            htmlString = '';
1374
+            
1375
+            program_ids = $(this).data('program-ids')
1376
+            if(!program_ids.includes(program_id) ){
1377
+                title = "<h6>The following criteria and objectives will be matched with this program</h6>"
1378
+                htmlString += "<ol style='list-style-position: inside'>"
1379
+        
1380
+                objectives = $(this).data('assoc-objectives');
1381
+            objectives = objectives.split(',');
1382
+            htmlString += "<li>" +$(this).data('criterion-name');
1383
+            htmlString += "<br><h6>This criterion is associated with these objectives</h6>"
1384
+            htmlString +="<ul style='padding-left: 5%; list-style-position: inside'>"
1385
+            for(index in objectives){
1386
+                
1387
+                objective_string = objectives[index];
1388
+                htmlString +="<li>"+objective_string+"</li>";
1389
+
1390
+            }
1391
+            htmlString += "</ul>"
1392
+           
1393
+            htmlString +="</li>" 
1394
+            htmlString+= "<br>";
1395
+
1396
+            }
1397
+            if(htmlString != ''){
1398
+                $("#modal-body-rubric").html(title);
1399
+
1400
+                $("#modal-body-rubric").append(htmlString);
1401
+
1402
+            }
1403
+        });
1404
+    }
1405
+    
1406
+    $('#rubric-modal').modal('toggle');
1407
+    $('#saveButton').attr('onclick','saveTemplate("'+$(this).attr('id')+'")')
1408
+
1409
+
1308
 });
1410
 });
1309
 
1411
 
1310
 // When the confirm  delete button is clicked
1412
 // When the confirm  delete button is clicked