isNew() && !$entity->isDefaultRevision()) { $defaults = menu_ui_get_menu_link_defaults($entity); $values = $entity->menu; $violation_path = NULL; if (trim($values['title']) && !empty($values['menu_parent'])) { list($menu_name, $parent) = explode(':', $values['menu_parent'], 2); $values['menu_name'] = $menu_name; $values['parent'] = $parent; } // Handle the case when a menu link is added to a pending revision. if (!$defaults['entity_id'] && $values['enabled']) { $violation_path = 'menu'; } // Handle the case when the menu link is deleted in a pending revision. elseif (empty($values['enabled']) && $defaults['entity_id']) { $violation_path = 'menu'; } // Handle all the other menu link changes in a pending revision. elseif ($defaults['entity_id']) { if (($values['title'] != $defaults['title'])) { $violation_path = 'menu.title'; } elseif (($values['description'] != $defaults['description'])) { $violation_path = 'menu.description'; } elseif ($defaults['entity_id'] && ($values['menu_name'] != $defaults['menu_name'])) { $violation_path = 'menu.menu_parent'; } elseif (isset($values['parent']) && ($values['parent'] != $defaults['parent'])) { $violation_path = 'menu.menu_parent'; } elseif (($values['weight'] != $defaults['weight'])) { $violation_path = 'menu.weight'; } } if ($violation_path) { $this->context->buildViolation($constraint->message) ->atPath($violation_path) ->setInvalidValue($entity) ->addViolation(); } } } }