CRM-19778 - Limit statuses in 'open case' activity
authorColeman Watts <coleman@civicrm.org>
Sat, 21 Jan 2017 03:18:22 +0000 (22:18 -0500)
committerColeman Watts <coleman@civicrm.org>
Tue, 24 Jan 2017 15:52:08 +0000 (10:52 -0500)
templates/CRM/Case/Form/Activity/OpenCase.tpl

index fce80c4f23db69158232d423f6e5e61731254bed..7aaa21323523e61b5009904d19b959667eb2e521 100644 (file)
       </td>
     </tr>
   {/if}
+  {crmAPI var='caseTypes' entity='CaseType' action='get' option_limit=0 sequential=0}
+  {crmAPI var='caseStatusLabels' entity='Case' action='getoptions' option_limit=0 field="case_status_id" context='create'}
+  {crmAPI var='caseStatusNames' entity='Case' action='getoptions' option_limit=0 field="case_status_id" context='validate' sequential=0}
+  {literal}
+  <script type="text/javascript">
+    CRM.$(function($) {
+      var $form = $("form.{/literal}{$form.formClass}{literal}");
+      var caseTypes = {/literal}{$caseTypes.values|@json_encode}{literal};
+      var caseStatusLabels = {/literal}{$caseStatusLabels.values|@json_encode}{literal};
+      var caseStatusNames = {/literal}{$caseStatusNames.values|@json_encode}{literal};
+      if ($('#case_type_id, #status_id', $form).length === 2) {
+        $('#case_type_id', $form).change(function() {
+          if ($(this).val()) {
+            var caseType = caseTypes[$(this).val()].definition;
+            var newOptions = CRM._.filter(caseStatusLabels, function(opt, key) {
+              return !caseType.statuses || !caseType.statuses.length || caseType.statuses.indexOf(caseStatusNames[key]) > -1;
+            });
+            CRM.utils.setOptions($('#status_id', $form), newOptions);
+          }
+        })
+      }
+    });
+  </script>
+  {/literal}
 {/if}