From 95735999abd88de7a33caa42d647ea1a4e4c2fe0 Mon Sep 17 00:00:00 2001
From: bcweaver <brianweaver@gmail.com>
Date: Tue, 23 Oct 2018 17:33:26 -0400
Subject: [PATCH] Removing unused 'eva' module

---
 composer.json                                 |   1 -
 composer.lock                                 |  65 +---
 vendor/composer/installed.json                |  65 ----
 web/modules/eva/LICENSE.txt                   | 339 ------------------
 web/modules/eva/README.txt                    |  53 ---
 web/modules/eva/composer.json                 |   5 -
 web/modules/eva/eva.info.yml                  |  13 -
 web/modules/eva/eva.module                    | 212 -----------
 .../eva/src/Plugin/views/display/Eva.php      | 297 ---------------
 .../eva-display-entity-view.html.twig         |  80 -----
 10 files changed, 1 insertion(+), 1129 deletions(-)
 delete mode 100644 web/modules/eva/LICENSE.txt
 delete mode 100644 web/modules/eva/README.txt
 delete mode 100644 web/modules/eva/composer.json
 delete mode 100644 web/modules/eva/eva.info.yml
 delete mode 100644 web/modules/eva/eva.module
 delete mode 100644 web/modules/eva/src/Plugin/views/display/Eva.php
 delete mode 100644 web/modules/eva/templates/eva-display-entity-view.html.twig

diff --git a/composer.json b/composer.json
index 81ef4207ef..51805c6963 100644
--- a/composer.json
+++ b/composer.json
@@ -97,7 +97,6 @@
         "drupal/entity_browser": "1.4",
         "drupal/entity_embed": "1.0-beta2",
         "drupal/entity_reference_revisions": "1.3",
-        "drupal/eva": "1.1",
         "drupal/externalauth": "1.0",
         "drupal/features": "3.8",
         "drupal/field_group": "1.0-rc6",
diff --git a/composer.lock b/composer.lock
index f904ad081f..7ebb18b27d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "content-hash": "f32369d0ccb26271c95d1232f56efce9",
+    "content-hash": "202dec5eb6d642a92aca8f90148e17d2",
     "packages": [
         {
             "name": "alchemy/zippy",
@@ -3514,69 +3514,6 @@
                 "source": "http://cgit.drupalcode.org/entity_reference_revisions"
             }
         },
-        {
-            "name": "drupal/eva",
-            "version": "1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://git.drupal.org/project/eva",
-                "reference": "8.x-1.1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://ftp.drupal.org/files/projects/eva-8.x-1.1.zip",
-                "reference": "8.x-1.1",
-                "shasum": "4f5a51144c547c15c6a7f226c4a9e316947309e7"
-            },
-            "require": {
-                "drupal/core": "*"
-            },
-            "type": "drupal-module",
-            "extra": {
-                "branch-alias": {
-                    "dev-1.x": "1.x-dev"
-                },
-                "drupal": {
-                    "version": "8.x-1.1",
-                    "datestamp": "1503938043",
-                    "security-coverage": {
-                        "status": "covered",
-                        "message": "Covered by Drupal's security advisory policy"
-                    }
-                }
-            },
-            "notification-url": "https://packages.drupal.org/8/downloads",
-            "license": [
-                "GPL-2.0-or-later"
-            ],
-            "authors": [
-                {
-                    "name": "Crell",
-                    "homepage": "https://www.drupal.org/user/26398"
-                },
-                {
-                    "name": "ahebrank",
-                    "homepage": "https://www.drupal.org/user/3190515"
-                },
-                {
-                    "name": "axel.rutz",
-                    "homepage": "https://www.drupal.org/user/229048"
-                },
-                {
-                    "name": "eaton",
-                    "homepage": "https://www.drupal.org/user/16496"
-                },
-                {
-                    "name": "mkadin",
-                    "homepage": "https://www.drupal.org/user/1093166"
-                }
-            ],
-            "description": "Attach a view to an entity",
-            "homepage": "https://www.drupal.org/project/eva",
-            "support": {
-                "source": "http://cgit.drupalcode.org/eva"
-            }
-        },
         {
             "name": "drupal/externalauth",
             "version": "1.0.0",
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index be0f51ed36..852a05ec99 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -3619,71 +3619,6 @@
             "source": "http://cgit.drupalcode.org/entity_reference_revisions"
         }
     },
-    {
-        "name": "drupal/eva",
-        "version": "1.1.0",
-        "version_normalized": "1.1.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://git.drupal.org/project/eva",
-            "reference": "8.x-1.1"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://ftp.drupal.org/files/projects/eva-8.x-1.1.zip",
-            "reference": "8.x-1.1",
-            "shasum": "4f5a51144c547c15c6a7f226c4a9e316947309e7"
-        },
-        "require": {
-            "drupal/core": "*"
-        },
-        "type": "drupal-module",
-        "extra": {
-            "branch-alias": {
-                "dev-1.x": "1.x-dev"
-            },
-            "drupal": {
-                "version": "8.x-1.1",
-                "datestamp": "1503938043",
-                "security-coverage": {
-                    "status": "covered",
-                    "message": "Covered by Drupal's security advisory policy"
-                }
-            }
-        },
-        "installation-source": "dist",
-        "notification-url": "https://packages.drupal.org/8/downloads",
-        "license": [
-            "GPL-2.0-or-later"
-        ],
-        "authors": [
-            {
-                "name": "Crell",
-                "homepage": "https://www.drupal.org/user/26398"
-            },
-            {
-                "name": "ahebrank",
-                "homepage": "https://www.drupal.org/user/3190515"
-            },
-            {
-                "name": "axel.rutz",
-                "homepage": "https://www.drupal.org/user/229048"
-            },
-            {
-                "name": "eaton",
-                "homepage": "https://www.drupal.org/user/16496"
-            },
-            {
-                "name": "mkadin",
-                "homepage": "https://www.drupal.org/user/1093166"
-            }
-        ],
-        "description": "Attach a view to an entity",
-        "homepage": "https://www.drupal.org/project/eva",
-        "support": {
-            "source": "http://cgit.drupalcode.org/eva"
-        }
-    },
     {
         "name": "drupal/externalauth",
         "version": "1.0.0",
diff --git a/web/modules/eva/LICENSE.txt b/web/modules/eva/LICENSE.txt
deleted file mode 100644
index d159169d10..0000000000
--- a/web/modules/eva/LICENSE.txt
+++ /dev/null
@@ -1,339 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                            NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
diff --git a/web/modules/eva/README.txt b/web/modules/eva/README.txt
deleted file mode 100644
index 2b9b14a304..0000000000
--- a/web/modules/eva/README.txt
+++ /dev/null
@@ -1,53 +0,0 @@
-ABOUT
-
-"Eva" is short for "Entity Views Attachment;" it provides a Views display
-plugin that allows the output of a View to be attached to the content of any
-Drupal entity. The body of a node or comment, the profile of a user account,
-or the listing page for a Taxonomy term are all examples of entity content.
-
-The placement of the view in the entity's content can be reordered on the
-"Field Display" administration page for that entity, like other fields added
-using the Field UI module.
-
-In addition, the unique ID of the entity the view is attached to -- as well as
-any tokens generated from that entity -- can be passed in as arguments to the
-view. For example, you might make a View that displays posts with an 'Author
-ID' argument, then use Eva to attach the view to the User entity type. When a
-user profile is displayed, the User's ID will be passed in as the argument to
-the view magically.
-
-That's right: magically.
-
-Eva is powered by witchcraft.
-
-HISTORY
-
-Eva was originally developed by Jeff Eaton but never released. Larry Garfield
-later cleaned it up and added the CCK integration, then released it under the
-name 'Views Attach.' Endless confusion followed, as everyone thought it would
-allow them to attach things to Views. Then Jeff Eaton refactored it for Drupal
-7. Then they renamed it again, because they didn't want to write an upgrade
-path.
-
-Why *isn't* there an upgrade path? This version is built on top of Drupal 7's
-Entity API as a single unified Views Display, while the D6 version juggled
-NodeAPI and hook_user. While there's definitely feature parity, enough has
-changed that cleanly upgrading a view from Views Attach 6.x-2.0 is essentially
-impossible. They feel bad about it, and would accept patches that implemented
-a well-tested upgrade path, but don't have the bandwidth to implement it
-ourselves.
-
-REQUIREMENTS
-
-- Drupal 8
-
-AUTHOR AND CREDIT
-
-Original development: Jeff Eaton "eaton" (http://drupal.org/user/16496)
-
-Actual D6 release, and version 2.0: Larry Garfield "Crell"
-(http://drupal.org/user/26398)
-
-D7 port and tomfoolery: Jeff Eaton "eaton" (http://drupal.org/user/16496)
-
-D8 port started by Mike Kadin "mkadin" (https://www.drupal.org/u/mkadin) and rounded out by Andy Hebrank "ahebrank" (https://www.drupal.org/u/ahebrank)
diff --git a/web/modules/eva/composer.json b/web/modules/eva/composer.json
deleted file mode 100644
index 8bb6230eff..0000000000
--- a/web/modules/eva/composer.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-   "name": "drupal/eva",
-   "type": "drupal-module",
-   "description": "Attach a view to an entity"
-}
diff --git a/web/modules/eva/eva.info.yml b/web/modules/eva/eva.info.yml
deleted file mode 100644
index be3f0daee7..0000000000
--- a/web/modules/eva/eva.info.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-name: Eva
-description: Provides a Views display type that can be attached to entities.
-# core: 8.x
-type: module
-dependencies:
-  - views
-package: Views
-
-# Information added by Drupal.org packaging script on 2017-03-25
-version: '8.x-1.1'
-core: '8.x'
-project: 'eva'
-datestamp: 1490483285
diff --git a/web/modules/eva/eva.module b/web/modules/eva/eva.module
deleted file mode 100644
index ca95237f2e..0000000000
--- a/web/modules/eva/eva.module
+++ /dev/null
@@ -1,212 +0,0 @@
-<?php
-
-/**
- * @file
- * Module implementing EVA extra field and views display
- */
-
-use Drupal\views\Views;
-use Drupal\Core\Entity\EntityInterface;
-use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
-use Drupal\Component\Utility\Xss;
-use Drupal\Component\Utility\Html;
-
-/**
- * Implements hook_entity_extra_field_info() to add the view fields to relevant entities
- */
-function eva_entity_extra_field_info() {
-  $extra = array();
-  $views = eva_get_views();
-
-  foreach ($views as $entity => $data) {
-    foreach ($data as $view) {
-      // if no bundles are set, apply to all bundles
-      // per current 7.x behavior (http://cgit.drupalcode.org/eva/tree/eva.module#n25)
-      $bundles = !empty($view['bundles'])? $view['bundles'] : array_keys(\Drupal::service('entity_type.bundle.info')->getBundleInfo($entity));
-      foreach ($bundles as $bundle) {
-        $extra[$entity][$bundle]['display'][$view['name'] . '_' . $view['display']] = array(
-          'label' => (empty($view['title'])) ? $view['name'] : $view['title'],
-          'description' => $view['title'],
-          'weight' => 10,
-        );
-        // Provide a separate extra field for the exposed form if there is any.
-        if ($view['uses exposed']) {
-          $extra[$entity][$bundle]['display'][$view['name'] . '_' . $view['display'] . '_' . 'form'] = array(
-            'label' => ((empty($view['title'])) ? $view['name'] : $view['title']) . ' (' . t('Exposed form') . ')',
-            'description' => t('The exposed filter form of the view.'),
-            'weight' => 9,
-          );
-        }
-      }
-    }
-  }
-
-  return $extra;
-}
-
-
-/**
- * Get a list of views and displays attached to speficic entities.
- *
- * This function will cache its results into the views cache, so it gets
- * cleared by Views appropriately.
- *
- * @param $type
- *   The entity type we want to retrieve views for. If NULL is
- *   specified, views for all entity types will be returned.
- * @param $reset
- *   Force a rebuild of the data.
- * @return
- *   An array of view name/display name values, or an empty array().
- */
-function eva_get_views($type = NULL, $reset = FALSE) {
-  // Build and cache the data, both in the DB and statically.
-  $views = Views::getApplicableViews('uses_hook_entity_view');
-
-  $used_views = array();
-  foreach ($views as $data) {
-    list($view_name, $display_id) = $data;
-    $view = Views::getView($view_name);
-
-    // Initialize handlers, to determine if the view uses exposed filters.
-    $view->setDisplay($display_id);
-    $view->initHandlers();
-    $display = $view->display_handler;
-
-    $view_entity = $display->getOption('entity_type');
-    $used_views[$view_entity][] = array(
-      'name' => $view_name,
-      'id' => $view->storage->get('id'),
-      'title' => 'EVA: ' . $view->storage->get('label') . ' - ' . $view->storage->getDisplay($display_id)['display_title'],
-      'display' => $display_id,
-      'bundles' => $display->getOption('bundles'),
-      'uses exposed' => $display->usesExposed(),
-    );
-    $view->destroy();
-  }
-
-  if (!is_null($type)) {
-    return isset($used_views[$type]) ? $used_views[$type] : array();
-  }
-  return $used_views;
-}
-
-/**
- * Implements hook_entity_view()
- */
-function eva_entity_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode) {
-  $type = $entity->getEntityTypeId();
-  $views = eva_get_views($type);
-
-  foreach ($views as $info) {
-    $longname = $info['name'] .'_'. $info['display'];
-
-    if ($display->getComponent($longname)) {
-      if ($view = Views::getView($info['name'])) {
-        $view->setDisplay($info['display']);
-        if ($view->access($info['display'])) {
-          // no parent for current_entity; it's used by the display's preExecute
-          $view->current_entity = $entity;
-
-          // exposed form
-          if ($info['uses exposed']) {
-            $view->initHandlers();
-            $exposed_form = $view->display_handler->getPlugin('exposed_form');
-            $build[$longname . '_form'] = $exposed_form->renderExposedForm(TRUE);
-          }
-
-          $element = $view->buildRenderable($info['display']);
-
-          if (!empty($element)) {
-            $build[$longname][] = $element;
-          }
-        }
-      }
-    }
-  }
-}
-
-
-/**
- * Get view arguments array from string that contains tokens
- *
- * @param $string
- *   The token string defined by the view.
- * @param $type
- *   The token type.
- * @param $object
- *   The object being used for replacement data (typically a node).
- * @return
- *   An array of argument values.
- */
-function eva_get_arguments_from_token_string($string, $type, $object) {
-  $args = trim($string);
-  if (empty($args)) {
-    return array();
-  }
-  $args = \Drupal::token()->replace($args, array($type => $object), array('sanitize' => FALSE));
-  return explode('/', $args);
-}
-
-/**
- * Implements hook_modules_enabled().
- */
-function eva_modules_enabled($modules) {
-  _eva_reset();
-}
-
-/**
- * Implements hook_modules_disabled().
- */
-function eva_modules_disabled($modules) {
-  _eva_reset();
-}
-
-/**
- * Cache clearing helper function
- * Reset the static cache in case any of the disabled modules
- * implemented an eva view
- */
-function _eva_reset() {
-  drupal_static_reset('eva_get_views');
-  \Drupal::cache('render')->deleteAll();
-}
-
-/**
- * Clear the field cache when view cache clears
- * this is intended to fire when a View is saved
- * hopefully it won't kick off an endless cache clearing loop
- */
-function eva_views_invalidate_cache() {
-  // see https://www.drupal.org/node/2281897
-  \Drupal::entityManager()->clearCachedFieldDefinitions();
-}
-
-/**
- * templating preprocessing
- * figure out the title and whether there's an exposed form
- */
-function template_preprocess_eva_display_entity_view(&$variables) {
-  $view = $variables['view'];
-  $display = $view->display_handler;
-  $variables['title'] = $display->getOption('show_title') ? Xss::filterAdmin($view->getTitle()) : '';
-  $variables['exposed_form_as_field'] = $display->getOption('exposed_form_as_field');
-
-  $id = $view->storage->id();
-  $variables['css_name'] = Html::cleanCssIdentifier($id);
-  $variables['id'] = $id;
-  $variables['display_id'] = $view->current_display;
-  $variables['dom_id'] = $view->dom_id;
-  
-  // pull in the display class
-  $css_class = $view->display_handler->getOption('css_class');
-  if (!empty($css_class)) {
-    $variables['css_class'] = preg_replace('/[^a-zA-Z0-9- ]/', '-', $css_class);
-    $variables['attributes']['class'][] = $variables['css_class'];
-  }
-
-  $variables['view_array']['#view_id'] = $view->storage->id();
-  $variables['view_array']['#view_display_show_admin_links'] = $view->getShowAdminLinks();
-  $variables['view_array']['#view_display_plugin_id'] = $display->getPluginId();
-  views_add_contextual_links($variables['view_array'], 'view', $display->getLinkDisplay());
-}
diff --git a/web/modules/eva/src/Plugin/views/display/Eva.php b/web/modules/eva/src/Plugin/views/display/Eva.php
deleted file mode 100644
index 1b43fa9e41..0000000000
--- a/web/modules/eva/src/Plugin/views/display/Eva.php
+++ /dev/null
@@ -1,297 +0,0 @@
-<?php
-
-namespace Drupal\eva\Plugin\views\display;
-
-use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Component\Utility\Html;
-use Drupal\Core\Url;
-
-/**
- * The plugin that handles an EVA display in views.
- *
- *
- * @ingroup views_display_plugins
- *
- * @ViewsDisplay(
- *   id = "entity_view",
- *   title = @Translation("EVA"),
- *   admin = @Translation("EVA"),
- *   help = @Translation("Attach a view to an entity"),
- *   theme = "eva_display_entity_view",
- *   uses_menu_links = FALSE,
- *   uses_hook_entity_view = TRUE,
- * )
- */
-
-class Eva extends DisplayPluginBase {
-
-  /**
-   * Overrides \Drupal\views\Plugin\views\display\PathPluginBase::defineOptions().
-   */
-  protected function defineOptions() {
-    $options = parent::defineOptions();
-
-    $options['entity_type']['default'] = '';
-    $options['bundles']['default'] = array();
-    $options['argument_mode']['default'] = 'id';
-    $options['default_argument']['default'] = '';
-
-
-    $options['title']['default'] = '';
-    $options['defaults']['default']['title'] = FALSE;
-
-    return $options;
-  }
-
-  /**
-   * Overrides \Drupal\views\Plugin\views\display\DisplayPluginBase::optionsSummary().
-   */
-  public function optionsSummary(&$categories, &$options) {
-    parent::optionsSummary($categories, $options);
-
-    $categories['entity_view'] = array(
-      'title' => $this->t('Entity content settings'),
-      'column' => 'second',
-      'build' => array(
-        '#weight' => -10,
-      ),
-    );
-
-    if ($entity_type = $this->getOption('entity_type')) {
-      $entity_info = \Drupal::entityManager()->getDefinition($entity_type);
-      $type_name = $entity_info->get('label');
-
-      $bundle_names = array();
-      $bundle_info = \Drupal::entityManager()->getBundleInfo($entity_type);
-      foreach ($this->getOption('bundles') as $bundle) {
-        $bundle_names[] = $bundle_info[$bundle]['label'];
-      }
-    }
-
-    $options['entity_type'] = array(
-      'category' => 'entity_view',
-      'title' => $this->t('Entity type'),
-      'value' => empty($type_name) ? $this->t('None') : $type_name,
-    );
-
-    $options['bundles'] = array(
-      'category' => 'entity_view',
-      'title' => $this->t('Bundles'),
-      'value' => empty($bundle_names) ? $this->t('All') : implode(', ', $bundle_names),
-    );
-
-    $argument_mode = $this->getOption('argument_mode');
-    $options['arguments'] = array(
-      'category' => 'entity_view',
-      'title' => $this->t('Arguments'),
-      'value' => empty($argument_mode) ? $this->t('None') : SafeMarkup::checkPlain($argument_mode),
-    );
-
-    $options['show_title'] = array(
-      'category' => 'entity_view',
-      'title' => $this->t('Show title'),
-      'value' => $this->getOption('show_title') ? $this->t('Yes') : $this->t('No'),
-    );
-  }
-
-  /**
-   * Overrides \Drupal\views\Plugin\views\display\callbackPluginBase::buildOptionsForm().
-   */
-  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
-    parent::buildOptionsForm($form, $form_state);
-
-    $entity_info = \Drupal::entityManager()->getDefinitions();
-    $entity_type = $this->getOption('entity_type');
-
-    switch ($form_state->get('section')) {
-      case 'entity_type':
-        foreach ($entity_info as $type => $info) {
-          // is this a content/front-facing entity?
-          if ($info instanceof \Drupal\Core\Entity\ContentEntityType) {
-            $entity_names[$type] = $info->get('label');
-          }
-        }
-
-        $form['#title'] .= $this->t('Entity type');
-        $form['entity_type'] = array(
-          '#type' => 'radios',
-          '#required' => TRUE,
-          '#validated' => TRUE,
-          '#title' => $this->t('Attach this display to the following entity type'),
-          '#options' => $entity_names,
-          '#default_value' => $this->getOption('entity_type'),
-        );
-        break;
-
-      case 'bundles':
-        $options = array();
-        foreach (\Drupal::entityManager()->getBundleInfo($entity_type) as $bundle => $info) {
-          $options[$bundle] = $info['label'];
-        }
-        $form['#title'] .= $this->t('Bundles');
-        $form['bundles'] = array(
-          '#type' => 'checkboxes',
-          '#title' => $this->t('Attach this display to the following bundles.  If no bundles are selected, the display will be attached to all.'),
-          '#options' => $options,
-          '#default_value' => $this->getOption('bundles'),
-        );
-        break;
-
-      case 'arguments':
-        $form['#title'] .= $this->t('Arguments');
-        $default = $this->getOption('argument_mode');
-        $options = array(
-          'None' => $this->t("No special handling"),
-          'id' => $this->t("Use the ID of the entity the view is attached to"),
-          'token' => $this->t("Use tokens from the entity the view is attached to"),
-        );
-
-        $form['argument_mode'] = array(
-          '#type' => 'radios',
-          '#title' => $this->t("How should this display populate the view's arguments?"),
-          '#options' => $options,
-          '#default_value' => $default,
-        );
-
-        $form['token'] = array(
-          '#type' => 'fieldset',
-          '#title' => $this->t('Token replacement'),
-          '#collapsible' => TRUE,
-          '#states' => array(
-            'visible' => array(
-              ':input[name=argument_mode]' => array('value' => 'token'),
-            ),
-          ),
-        );
-
-        $form['token']['default_argument'] = array(
-          '#title' => $this->t('Arguments'),
-          '#type' => 'textfield',
-          '#default_value' => $this->getOption('default_argument'),
-          '#description' => $this->t('You may use token replacement to provide arguments based on the current entity. Separate arguments with "/".'),
-        );
-        break;
-
-      case 'show_title':
-        $form['#title'] .= $this->t('Show title');
-        $form['show_title'] = array(
-          '#type' => 'checkbox',
-          '#title' => $this->t('Show the title of the view above the attached view.'),
-          '#default_value' => $this->getOption('show_title'),
-        );
-        break;
-    }
-  }
-
-  public function validateOptionsForm(&$form, FormStateInterface $form_state) {
-    switch ($form_state->get('section')) {
-      case 'entity_type':
-        if (empty($form_state->getValue('entity_type'))) {
-          $form_state->setError($form['entity_type'], $this->t('Must select an entity'));
-        }
-        break;
-    }
-  }
-
-  public function validate() {
-    $errors = array();
-    if (empty($this->getOption('entity_type'))) {
-      $errors[] = $this->t('Display "@display" must be attached to an entity.', array('@display' => $this->display['display_title']));
-    }
-    return $errors;
-  }
-
-  public function submitOptionsForm(&$form, FormStateInterface $form_state) {
-    parent::submitOptionsForm($form, $form_state);
-
-    switch ($form_state->get('section')) {
-      case 'entity_type':
-        $new_entity = $form_state->getValue('entity_type');
-        $old_entity = $this->getOption('entity_type');
-        $this->setOption('entity_type', $new_entity);
-
-        if ($new_entity != $old_entity) {
-          // Each entity has its own list of bundles and view modes. If there's
-          // only one on the new type, we can select it automatically. Otherwise
-          // we need to wipe the options and start over.
-          $new_entity_info = \Drupal::entityManager()->getDefinition($new_entity);
-          $new_bundles_keys = \Drupal::entityManager()->getBundleInfo($new_entity);
-          $new_bundles = array();
-          if (count($new_bundles_keys) == 1) {
-            $new_bundles[] = $new_bundles_keys[0];
-          }
-          $this->setOption('bundles', $new_bundles);
-        }
-        break;
-      case 'bundles':
-        $this->setOption('bundles', array_values(array_filter($form_state->getValue('bundles'))));
-        break;
-      case 'arguments':
-        $this->setOption('argument_mode', $form_state->getValue('argument_mode'));
-        if ($form_state->getValue('argument_mode') == 'token') {
-          $this->setOption('default_argument', $form_state->getValue('default_argument'));
-        }
-        else {
-          $this->setOption('default_argument', NULL);
-        }
-        break;
-      case 'show_title':
-        $this->setOption('show_title', $form_state->getValue('show_title'));
-        break;
-    }
-  }
-
-  public function preExecute() {
-    parent::preExecute();
-    
-    if (isset($this->view->current_entity)) {
-      $entity = $this->view->current_entity;
-      $entity_type = $this->view->display_handler->getOption('entity_type');
-      $entity_info = \Drupal::entityManager()->getDefinition($entity_type);
-  
-      $arg_mode = $this->view->display_handler->getOption('argument_mode');
-      if ($arg_mode == 'token') {
-        if ($token_string = $this->view->display_handler->getOption('default_argument')) {
-          // Now do the token replacement.
-          $token_values = eva_get_arguments_from_token_string($token_string, $entity_type, $entity);
-          $new_args = array();
-          // We have to be careful to only replace arguments that have tokens.
-          foreach ($token_values as $key => $value) {
-            $new_args[Html::escape($key)] = Html::escape($value);
-          }
-  
-          $this->view->args = $new_args;
-        }
-      }
-      elseif ($arg_mode == 'id') {
-        $this->view->args = array($entity->id());
-      }
-    }
-  }
-  
-  public function getPath() {
-    if (isset($this->view->current_entity)) {
-      $uri = $this->view->current_entity->url();
-      if ($uri) {
-        $uri['options']['absolute'] = TRUE;
-        return url($uri['path'], $uri['options']);
-      }
-    }
-    return parent::getPath();
-  }
- 
-  function execute() {
-    // Prior to this being called, the $view should already be set to this
-    // display, and arguments should be set on the view.
-    if (!isset($this->view->override_path)) {
-      $this->view->override_path = \Drupal::service('path.current')->getPath();
-    }
-
-    $element = $this->view->render();
-    if (!empty($this->view->result) || $this->getOption('empty') || !empty($this->view->style_plugin->definition['even empty'])) {
-      return $element;
-    }
-  }
-}
diff --git a/web/modules/eva/templates/eva-display-entity-view.html.twig b/web/modules/eva/templates/eva-display-entity-view.html.twig
deleted file mode 100644
index d9a0da9f5f..0000000000
--- a/web/modules/eva/templates/eva-display-entity-view.html.twig
+++ /dev/null
@@ -1,80 +0,0 @@
-{#
-/**
- * @file
- * eva theme implementation for main view template.
- *
- * the main difference between this and the canonical template
- * is the exposed form is removed (because it is displayed as
- * a separate field)
- *
- * Available variables:
- * - attributes: Remaining HTML attributes for the element.
- * - css_name: A css-safe version of the view name.
- * - css_class: The user-specified classes names, if any.
- * - header: The optional header.
- * - footer: The optional footer.
- * - rows: The results of the view query, if any.
- * - empty: The content to display if there are no rows.
- * - pager: The optional pager next/prev links to display.
- * - exposed: Exposed widget form/info to display.
- * - feed_icons: Optional feed icons to display.
- * - more: An optional link to the next page of results.
- * - title: Title of the view, only used when displaying in the admin preview.
- * - title_prefix: Additional output populated by modules, intended to be
- *   displayed in front of the view title.
- * - title_suffix: Additional output populated by modules, intended to be
- *   displayed after the view title.
- * - attachment_before: An optional attachment view to be displayed before the
- *   view content.
- * - attachment_after: An optional attachment view to be displayed after the
- *   view content.
- * - dom_id: Unique id for every view being printed to give unique class for
- *   Javascript.
- *
- * @see template_preprocess_views_view()
- *
- * @ingroup themeable
- */
-#}
-{%
-  set classes = [
-    'view',
-    'view-eva',
-    'view-' ~ id|clean_class,
-    'view-id-' ~ id,
-    'view-display-id-' ~ display_id,
-    dom_id ? 'js-view-dom-id-' ~ dom_id,
-  ]
-%}
-<div{{ attributes.addClass(classes) }}>
-  {{ title_prefix }}
-  {% if title %}
-    {{ title }}
-  {% endif %}
-  {{ title_suffix }}
-
-  {% if header %}
-    <header>
-      {{ header }}
-    </header>
-  {% endif %}
-
-  {{ attachment_before }}
-
-  {{ rows }}
-  {{ empty }}
-  {{ pager }}
-
-  {{ attachment_after }}
-  {{ more }}
-
-  {% if footer %}
-    <footer>
-      {{ footer }}
-    </footer>
-  {% endif %}
-
-  {% if feed_icons %}
-  {{ feed_icons }}
-  {% endif %}
-</div>
-- 
GitLab