upgrades core to 8.4.2
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
* entities, enabling them for in-place editing.
|
||||
*/
|
||||
|
||||
use Drupal\Core\Entity\ContentEntityInterface;
|
||||
use Drupal\Core\Entity\EntityInterface;
|
||||
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
|
||||
use Drupal\Core\Routing\RouteMatchInterface;
|
||||
@@ -76,7 +77,7 @@ function quickedit_library_info_alter(&$libraries, $extension) {
|
||||
$theme = Drupal::config('system.theme')->get('admin');
|
||||
|
||||
// First let the base theme modify the library, then the actual theme.
|
||||
$alter_library = function(&$library, $theme) use (&$alter_library) {
|
||||
$alter_library = function (&$library, $theme) use (&$alter_library) {
|
||||
if (isset($theme) && $theme_path = drupal_get_path('theme', $theme)) {
|
||||
$info = system_get_info('theme', $theme);
|
||||
// Recurse to process base theme(s) first.
|
||||
@@ -128,14 +129,14 @@ function quickedit_preprocess_page_title(&$variables) {
|
||||
*/
|
||||
function quickedit_preprocess_field(&$variables) {
|
||||
$variables['#cache']['contexts'][] = 'user.permissions';
|
||||
if (!\Drupal::currentUser()->hasPermission('access in-place editing')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$element = $variables['element'];
|
||||
/** @var $entity \Drupal\Core\Entity\EntityInterface */
|
||||
$entity = $element['#object'];
|
||||
|
||||
if (!\Drupal::currentUser()->hasPermission('access in-place editing') || !_quickedit_entity_is_latest_revision($entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Quick Edit module only supports view modes, not dynamically defined
|
||||
// "display options" (which \Drupal\Core\Field\FieldItemListInterface::view()
|
||||
// always names the "_custom" view mode).
|
||||
@@ -157,9 +158,40 @@ function quickedit_preprocess_field(&$variables) {
|
||||
*/
|
||||
function quickedit_entity_view_alter(&$build, EntityInterface $entity, EntityViewDisplayInterface $display) {
|
||||
$build['#cache']['contexts'][] = 'user.permissions';
|
||||
if (!\Drupal::currentUser()->hasPermission('access in-place editing')) {
|
||||
if (!\Drupal::currentUser()->hasPermission('access in-place editing') || !_quickedit_entity_is_latest_revision($entity)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$build['#attributes']['data-quickedit-entity-id'] = $entity->getEntityTypeId() . '/' . $entity->id();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a loaded entity is the latest revision.
|
||||
*
|
||||
* @param \Drupal\Core\Entity\ContentEntityInterface $entity
|
||||
* The entity to check.
|
||||
*
|
||||
* @return bool
|
||||
* TRUE if the loaded entity is the latest revision, FALSE otherwise.
|
||||
*
|
||||
* @todo Remove this method once better support for pending revisions is added
|
||||
* to core https://www.drupal.org/node/2784201.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
function _quickedit_entity_is_latest_revision(ContentEntityInterface $entity) {
|
||||
$entity_type_manager = \Drupal::entityTypeManager();
|
||||
$entity_definition = $entity_type_manager->getDefinition($entity->getEntityTypeId());
|
||||
if (!$entity_definition->isRevisionable()) {
|
||||
return TRUE;
|
||||
}
|
||||
$revision_ids = $entity_type_manager
|
||||
->getStorage($entity->getEntityTypeId())
|
||||
->getQuery()
|
||||
->allRevisions()
|
||||
->condition($entity_definition->getKey('id'), $entity->id())
|
||||
->sort($entity_definition->getKey('revision'), 'DESC')
|
||||
->range(0, 1)
|
||||
->execute();
|
||||
return $entity->getLoadedRevisionId() == array_keys($revision_ids)[0];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user