/**
  * Displays the status for the model passed as argument.
  * 
  * This method assumes that the status includes a metadata value called 'labelTemplate' that contains
  * the HTML template of the rendering status. In this template the string '{label}' will be replaced by the 
  * status label.
  * 
  * Example : 
  *		'status' => [
  *			'draft' => [
  *				'label' => 'Draft',
  *				'transition' => ['ready' ],
  *				'metadata' => [
  *					'labelTemplate' => '<span class="label label-default">{label}</span>'
  *				]
  *			],
  * 
  * @param BaseActiveRecord $model
  * @return string|NULL the HTML rendered status or null if not labelTemplate is found
  */
 public static function renderLabel($model)
 {
     if ($model->hasWorkflowStatus()) {
         $labelTemplate = $model->getWorkflowStatus()->getMetadata('labelTemplate');
         if (!empty($labelTemplate)) {
             return strtr($labelTemplate, ['{label}' => $model->getWorkflowStatus()->getLabel()]);
         }
     }
     return null;
 }
 /**
  * Returns the items and options for a dropDownList
  * All status options are in the list, but invalid transitions are disabled
  *
  * Example:
  * <pre>
  * $statusDropDownData = WorkflowHelper::getStatusDropDownData($model);
  * // Html
  * echo Html::dropDownList('status', $model->status, $statusDropdown['items'], ['options' => $statusDropdown['options']]);
  * // ActiveForm
  * echo $form->field($model, 'status')->dropDownList($statusDropDownData['items'], ['options' => $statusDropDownData['options']]);
  * </pre>
  *
  * @param BaseActiveRecord|SimpleWorkflowBehavior $model
  * @return array
  */
 public static function getStatusDropDownData($model)
 {
     $transitions = array_keys($model->getWorkflowSource()->getTransitions($model->getWorkflowStatus()->getId()));
     $items = WorkflowHelper::getAllStatusListData($model->getWorkflow()->getId(), $model->getWorkflowSource());
     $options = [];
     foreach (array_keys($items) as $status) {
         if ($status != $model->getWorkflowStatus()->getId() && !in_array($status, $transitions)) {
             $options[$status]['disabled'] = true;
         }
     }
     return ['items' => $items, 'options' => $options];
 }