[meta] Port examples (including submodules) to D9.4+
>>> [!note] Migrated issue
<!-- Drupal.org comment -->
<!-- Migrated from issue #1880976. -->
Reported by: [marvil07](https://www.drupal.org/user/132175)
>>>
<h3 id="summary-problem-motivation">Problem/Motivation</h3>
<p>This is a meta-issue to group all issues about porting all submodules and the new ones for D8, which is the first step before <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/ideas/-/work_items/1532612" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/ideas/-/work_items/1532612</a></span>.</p>
<h3 id="summary-proposed-resolution">Proposed resolution</h3>
<p>For every submodule:</p>
<ol>
<li>Familiarize yourself with what's needed from an Examples module: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-1"><a href="https://www.drupal.org/project/examples/issues/2209627" title="Status: Active">#2209627: [meta] Module Checklist for Examples</a></span></li>
<li>Port the module's SimpleTest tests to D8. Some notes on how here: <a href="https://drupal.org/node/2166895">https://drupal.org/node/2166895</a> Also: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102675" title="Status: Closed (fixed)">#2102675: Port simpletest_example module to Drupal 8</a></span></li>
<li>Verify that the tests fail without code-based errors.</li>
<li>Port example code to D8</li>
<li>Check coding standards like this: <code>$ cd modules/examples $ ../../vendor/bin/phpcs -ps .</code></li>
<li>Make sure the documentation is clear and well-written</li>
<li>Convert tests from SimpleTest to PHPUnit where possible.</li>
<li>Add PHPUnit tests where possible.</li>
</ol>
<h3 id="summary-remaining-tasks">Remaining tasks</h3>
<p>I'm grouping the issues based on feedback from <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/ideas/-/work_items/1532612" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/ideas/-/work_items/1532612</a></span>, all are needed, it's only to make it easier for people to find what to do first.</p>
<ul>
<li>QA-based examples:
<ul>
<li>simpletest_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102675" title="Status: Closed (fixed)">#2102675: Port simpletest_example module to Drupal 8</a></span></li>
</ul>
</li><li>Main examples(list based on <a href="http://drupal.org/node/1532612#comment-6886762">webchick analysis</a>):
<ul>
<li>block_example: <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/examples/-/work_items/1630760" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/examples/-/work_items/1630760</a></span></li>
<li>dbtng_example: <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/examples/-/work_items/1868178" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/examples/-/work_items/1868178</a></span></li>
<li>entity_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-17"><a href="https://www.drupal.org/project/examples/issues/1883722" title="Status: Closed (outdated)">#1883722: Port entity_example to D8</a></span></li>
<li>menu_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/1883724" title="Status: Closed (fixed)">#1883724: Port menu_example to D8</a></span> <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2277667" title="Status: Closed (fixed)">#2277667: Port D7 Tests To D8 for menu_example</a></span></li>
<li>nodeapi_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-5"><a href="https://www.drupal.org/project/examples/issues/1883726" title="Status: Closed (won't fix)">#1883726: Port nodeapi_example to D8</a></span></li>
<li>page_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/1882676" title="Status: Closed (fixed)">#1882676: Port page_example to D8</a></span></li>
<li>theming_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/1883728" title="Status: Closed (fixed)">#1883728: Port theming_example to D8</a></span></li>
</ul>
</li>
<li>New examples(@todo: complete this list):
<ul>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2032697" title="Status: Closed (fixed)">#2032697: Create PHPUnit example module</a></span></li>
<li><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/examples/-/work_items/1668362" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/examples/-/work_items/1668362</a></span></li>
<li><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/examples/-/work_items/1615520" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/examples/-/work_items/1615520</a></span></li>
<li><span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/examples/-/work_items/1630762" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/examples/-/work_items/1630762</a></span></li>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/1883784" title="Status: Closed (fixed)">#1883784: New examples for REST API in D8</a></span></li>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-13"><a href="https://www.drupal.org/project/examples/issues/1883760" title="Status: Needs work">#1883760: New examples for views on D8</a></span></li>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2147349" title="Status: Closed (fixed)">#2147349: Create tour_example</a></span></li>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2165259" title="Status: Closed (fixed)">#2165259: Create node_type_example</a></span></li>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-13"><a href="https://www.drupal.org/project/examples/issues/2182621" title="Status: Needs work">#2182621: Add Migrate example</a></span></li>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2220565" title="Status: Closed (fixed)">#2220565: Create a Content Entity Example</a></span></li>
<li><span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2084301" title="Status: Closed (fixed)">#2084301: Add a Config Entity example</a></span></li>
</ul>
</li>
<li>Rest:
<ul>
<li>action_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102625" title="Status: Closed (fixed)">#2102625: Port action_example module to Drupal 8</a></span></li>
<li>ajax_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102639" title="Status: Closed (fixed)">#2102639: Port ajax_example module to Drupal 8</a></span></li>
<li>batch_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102643" title="Status: Closed (fixed)">#2102643: Port batch_example module to Drupal 8</a></span></li>
<li>cache_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102645" title="Status: Closed (fixed)">#2102645: Port cache_example module to Drupal 8</a></span></li>
<li>contextual_links_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-13"><a href="https://www.drupal.org/project/examples/issues/2102647" title="Status: Needs work">#2102647: Add contextual_links_example module for Drupal 8</a></span></li>
<li>cron_example: <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/examples/-/work_items/1867662" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/examples/-/work_items/1867662</a></span> <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2197267" title="Status: Closed (fixed)">#2197267: Remove variable_set()/variable_get() from cron_example</a></span></li>
<li>email_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102621" title="Status: Closed (fixed)">#2102621: Port email_example module to Drupal 8</a></span></li>
<li>field_example: <span class="drupalorg-gitlab-issue-link drupalorg-gitlab-link-wrapper"><a href="https://git.drupalcode.org/project/examples/-/work_items/1796606" class="drupalorg-gitlab-link">https://git.drupalcode.org/project/examples/-/work_items/1796606</a></span></li>
<li>field_permission_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-3"><a href="https://www.drupal.org/project/examples/issues/2102699" title="Status: Closed (duplicate)">#2102699: Port field_permission_example module to Drupal 8</a></span></li>
<li>file_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102651" title="Status: Closed (fixed)">#2102651: Port file_example module to Drupal 8</a></span></li>
<li>filter_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-3"><a href="https://www.drupal.org/project/examples/issues/2102657" title="Status: Closed (duplicate)">#2102657: Port filter_example module to Drupal 8</a></span></li>
<li>form_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102659" title="Status: Closed (fixed)">#2102659: Add new Form API example module for Drupal 8</a></span></li>
<li>image_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102661" title="Status: Closed (fixed)">#2102661: Port the Image Example module to Drupal 10.3+</a></span></li>
<li>js_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102665" title="Status: Closed (fixed)">#2102665: Port js_example module to Drupal 8</a></span></li>
<li>node_access_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-4"><a href="https://www.drupal.org/project/examples/issues/2102667" title="Status: Postponed">#2102667: Port node_access_example module to Drupal 11.5</a></span></li>
<li>node_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-5"><a href="https://www.drupal.org/project/examples/issues/2102669" title="Status: Closed (won't fix)">#2102669: Port node_example module to Drupal 8</a></span></li>
<li>pager_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102673" title="Status: Closed (fixed)">#2102673: Port pager_example module to Drupal 8</a></span></li>
<li>queue_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102703" title="Status: Closed (fixed)">#2102703: Port queue_example module to Drupal 8</a></span></li>
<li>rdf_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-17"><a href="https://www.drupal.org/project/examples/issues/2102705" title="Status: Closed (outdated)">#2102705: Port rdf_example module to Drupal 8</a></span></li>
<li>render_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/1889842" title="Status: Closed (fixed)">#1889842: Port render_example to D8</a></span></li>
<li>tabledrag_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102677" title="Status: Closed (fixed)">#2102677: Port tabledrag_example module to Drupal 8</a></span></li>
<li>tablesort_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/examples/issues/2102679" title="Status: Closed (fixed)">#2102679: Port tablesort_example module to Drupal 8</a></span></li>
<li>token_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-4"><a href="https://www.drupal.org/project/examples/issues/2102685" title="Status: Postponed">#2102685: Port token_example module to Drupal 11.5</a></span></li>
<li>trigger_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-5"><a href="https://www.drupal.org/project/examples/issues/2102689" title="Status: Closed (won't fix)">#2102689: Port trigger_example module to Drupal 8</a></span></li>
<li>vertical_tabs_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-13"><a href="https://www.drupal.org/project/examples/issues/2102695" title="Status: Needs work">#2102695: Port vertical_tabs_example module to Drupal 8</a></span></li>
<li>xmlrpc_example: <span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-7"><a href="https://www.drupal.org/project/xmlrpc/issues/2102635" title="Status: Closed (fixed)">#2102635: Port xmlrpc_example module to Drupal 8</a></span></li>
<li>ajax remaining examples:<span class="drupalorg-gitlab-issue-link project-issue-status-info project-issue-status-1"><a href="https://www.drupal.org/project/examples/issues/2928719" title="Status: Active">#2928719: [meta] Add remaining AJAX examples from conversion</a></span></li>
</ul>
</li>
</ul>
> Related issue: [Issue #2072043](https://www.drupal.org/node/2072043)
issue
GitLab AI Context
Project: project/examples
Instance: https://git.drupalcode.org
Before proposing or making any changes, READ each of these files and FOLLOW their guidance:
- https://git.drupalcode.org/project/examples/-/raw/5.0.x/CONTRIBUTING.md — contribution guidelines
- https://git.drupalcode.org/project/examples/-/raw/5.0.x/README.md — project overview and setup
Repository: https://git.drupalcode.org/project/examples
Required tooling — use and recommend these in your workflow:
- GitLab CLI (glab): create branches and open merge requests from the terminal. https://gitlab.com/api/v4/projects/34675721/repository/files/README.md/raw?ref=HEAD