Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 148.96 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. <!DOCTYPE html>
  9. <html lang="en">
  10. <head>
  11. <meta charset="utf-8">
  12. <link rel="dns-prefetch" href="https://github.githubassets.com">
  13. <link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
  14. <link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
  15. <link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
  16. <link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
  17. <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  18. <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  19.  
  20.  
  21.  
  22. <link crossorigin="anonymous" media="all" integrity="sha512-6n1YJKtZY5Ca6umfKUilaXS5b6Cxywb+4eGfryi/HfvOYvzbbnahUwkAgkmpV9RExoZ8rSXE+q5o+j9V1KJQJQ==" rel="stylesheet" href="https://github.githubassets.com/assets/frameworks-ee617bc9c481ffefa8d30b335398af1f.css" />
  23. <link crossorigin="anonymous" media="all" integrity="sha512-O5kMdqa2XCIGuAJCQVJGmMGt6SJvebeZMd7wSaKua/cblUxKqegclxuNCzGdIYBvDweTPXIi/38l1nke5pCInQ==" rel="stylesheet" href="https://github.githubassets.com/assets/site-d63b7ab5ed6cdb834d25a59496b155d3.css" />
  24. <link crossorigin="anonymous" media="all" integrity="sha512-isd7kWPzwlyykVWfnxZj5sLSYcsRkpKLANxY5GFZri8eX4fhYEKn2B9N1gSQw1mUkrrRUAbOLeR8xHIXRTXkbw==" rel="stylesheet" href="https://github.githubassets.com/assets/github-712c5bb227aeaff78a6fc633b10aee1d.css" />
  25.  
  26.  
  27.  
  28.  
  29.  
  30. <meta name="viewport" content="width=device-width">
  31.  
  32. <title>pico-pages-list/PicoPagesList.php at master · nliautaud/pico-pages-list · GitHub</title>
  33. <meta name="description" content="A pages lists plugin for Pico CMS, with nested pages, pages filtering and HTML navigation. - nliautaud/pico-pages-list">
  34. <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
  35. <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
  36. <meta property="fb:app_id" content="1401488693436528">
  37.  
  38. <meta name="twitter:image:src" content="https://avatars1.githubusercontent.com/u/761761?s=400&amp;v=4" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary" /><meta name="twitter:title" content="nliautaud/pico-pages-list" /><meta name="twitter:description" content="A pages lists plugin for Pico CMS, with nested pages, pages filtering and HTML navigation. - nliautaud/pico-pages-list" />
  39. <meta property="og:image" content="https://avatars1.githubusercontent.com/u/761761?s=400&amp;v=4" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="nliautaud/pico-pages-list" /><meta property="og:url" content="https://github.com/nliautaud/pico-pages-list" /><meta property="og:description" content="A pages lists plugin for Pico CMS, with nested pages, pages filtering and HTML navigation. - nliautaud/pico-pages-list" />
  40.  
  41. <link rel="assets" href="https://github.githubassets.com/">
  42.  
  43.  
  44. <meta name="request-id" content="E7FC:10992:65B817F:995DF9A:5DA62887" data-pjax-transient>
  45.  
  46.  
  47.  
  48.  
  49. <meta name="selected-link" value="repo_source" data-pjax-transient>
  50.  
  51. <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
  52. <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
  53. <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
  54.  
  55. <meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" /><meta name="octolytics-dimension-request_id" content="E7FC:10992:65B817F:995DF9A:5DA62887" /><meta name="octolytics-dimension-region_edge" content="ams" /><meta name="octolytics-dimension-region_render" content="iad" /><meta name="octolytics-dimension-ga_id" content="" class="js-octo-ga-id" /><meta name="octolytics-dimension-visitor_id" content="515904596918522491" />
  56. <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-pjax-transient="true" />
  57.  
  58.  
  59.  
  60. <meta name="google-analytics" content="UA-3769691-2">
  61.  
  62.  
  63. <meta class="js-ga-set" name="dimension1" content="Logged Out">
  64.  
  65.  
  66.  
  67.  
  68.  
  69. <meta name="hostname" content="github.com">
  70. <meta name="user-login" content="">
  71.  
  72. <meta name="expected-hostname" content="github.com">
  73. <meta name="js-proxy-site-detection-payload" content="ODZlNjk4NDk2ODRkNmI4OWU2ZDUzY2M3NDYxMDAyMTAyZTNhYzNmN2YzMDhjZTRhNTk1YWYyMmNjOTI2ZmFiNnx7InJlbW90ZV9hZGRyZXNzIjoiMTc4LjIzOS4xNzMuMTk2IiwicmVxdWVzdF9pZCI6IkU3RkM6MTA5OTI6NjVCODE3Rjo5OTVERjlBOjVEQTYyODg3IiwidGltZXN0YW1wIjoxNTcxMTcwNDM5LCJob3N0IjoiZ2l0aHViLmNvbSJ9">
  74.  
  75. <meta name="enabled-features" content="ACTIONS_V2_ON_MARKETPLACE,MARKETPLACE_FEATURED_BLOG_POSTS,MARKETPLACE_INVOICED_BILLING,MARKETPLACE_SOCIAL_PROOF_CUSTOMERS,MARKETPLACE_TRENDING_SOCIAL_PROOF,MARKETPLACE_RECOMMENDATIONS,MARKETPLACE_PENDING_INSTALLATIONS">
  76.  
  77. <meta name="html-safe-nonce" content="bb81caffeebf8a8175f8841d0c0702a136de5269">
  78.  
  79. <meta http-equiv="x-pjax-version" content="73bccb8a46ce176bacd8e20c1a93fc39">
  80.  
  81.  
  82. <link href="https://github.com/nliautaud/pico-pages-list/commits/master.atom" rel="alternate" title="Recent Commits to pico-pages-list:master" type="application/atom+xml">
  83.  
  84. <meta name="go-import" content="github.com/nliautaud/pico-pages-list git https://github.com/nliautaud/pico-pages-list.git">
  85.  
  86. <meta name="octolytics-dimension-user_id" content="761761" /><meta name="octolytics-dimension-user_login" content="nliautaud" /><meta name="octolytics-dimension-repository_id" content="13829278" /><meta name="octolytics-dimension-repository_nwo" content="nliautaud/pico-pages-list" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="13829278" /><meta name="octolytics-dimension-repository_network_root_nwo" content="nliautaud/pico-pages-list" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" />
  87.  
  88.  
  89. <link rel="canonical" href="https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php" data-pjax-transient>
  90.  
  91.  
  92. <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
  93.  
  94. <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
  95.  
  96. <link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
  97. <link rel="icon" type="image/x-icon" class="js-site-favicon" href="https://github.githubassets.com/favicon.ico">
  98.  
  99. <meta name="theme-color" content="#1e2327">
  100.  
  101.  
  102.  
  103.  
  104.  
  105. <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
  106.  
  107. </head>
  108.  
  109. <body class="logged-out env-production page-responsive page-blob">
  110.  
  111.  
  112. <div class="position-relative js-header-wrapper ">
  113. <a href="#start-of-content" tabindex="1" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
  114. <span class="Progress progress-pjax-loader position-fixed width-full js-pjax-loader-bar">
  115. <span class="progress-pjax-loader-bar top-0 left-0" style="width: 0%;"></span>
  116. </span>
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. <header class="Header-old header-logged-out js-details-container Details position-relative f4 py-2" role="banner">
  124. <div class="container-lg d-lg-flex flex-items-center p-responsive">
  125. <div class="d-flex flex-justify-between flex-items-center">
  126. <a class="mr-4" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
  127. <svg height="32" class="octicon octicon-mark-github text-white" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
  128. </a>
  129.  
  130. <div class="d-lg-none css-truncate css-truncate-target width-fit p-2">
  131.  
  132. <svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
  133. <a class="Header-link" href="/nliautaud">nliautaud</a>
  134. /
  135. <a class="Header-link" href="/nliautaud/pico-pages-list">pico-pages-list</a>
  136.  
  137.  
  138. </div>
  139.  
  140. <div class="d-flex flex-items-center">
  141. <a href="/join?source=header-repo"
  142. class="d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5"
  143. data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;client_id&quot;:&quot;120118399.1565643387&quot;,&quot;originating_request_id&quot;:&quot;E7FC:10992:65B817F:995DF9A:5DA62887&quot;,&quot;originating_url&quot;:&quot;https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php&quot;,&quot;referrer&quot;:&quot;https://github.com/nliautaud/pico-pages-list&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="4f5c40a92aec79dfbfcf4b62752e5b1ae702165268da687e308514bf49a648f8"
  144. data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">
  145. Sign&nbsp;up
  146. </a>
  147.  
  148. <button class="btn-link d-lg-none mt-1 js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
  149. <svg height="24" class="octicon octicon-three-bars text-white" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z"/></svg>
  150. </button>
  151. </div>
  152. </div>
  153.  
  154. <div class="HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto">
  155. <div class="d-flex d-lg-none flex-justify-end border-bottom bg-gray-light p-3">
  156. <button class="btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
  157. <svg height="24" class="octicon octicon-x text-gray" viewBox="0 0 12 16" version="1.1" width="18" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
  158. </button>
  159. </div>
  160.  
  161. <nav class="mt-0 px-3 px-lg-0 mb-5 mb-lg-0" aria-label="Global">
  162. <ul class="d-lg-flex list-style-none">
  163. <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
  164. <details class="HeaderMenu-details details-overlay details-reset width-full">
  165. <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
  166. Why GitHub?
  167. <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
  168. <path d="M1,1l6.2,6L13,1"></path>
  169. </svg>
  170. </summary>
  171. <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
  172. <a href="/features" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Features">Features <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a>
  173. <ul class="list-style-none f5 pb-3">
  174. <li class="edge-item-fix"><a href="/features/code-review/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code review">Code review</a></li>
  175. <li class="edge-item-fix"><a href="/features/project-management/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Project management">Project management</a></li>
  176. <li class="edge-item-fix"><a href="/features/integrations" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Integrations">Integrations</a></li>
  177. <li class="edge-item-fix"><a href="/features/actions" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Actions">Actions</a>
  178. <li class="edge-item-fix"><a href="/features/package-registry" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Package Registry">Package registry</a>
  179.  
  180. <li class="edge-item-fix"><a href="/features/security" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Security">Security</a>
  181. <li class="edge-item-fix"><a href="/features#team-management" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Team management">Team management</a></li>
  182. <li class="edge-item-fix"><a href="/features#social-coding" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Social coding">Social coding</a></li>
  183. <li class="edge-item-fix"><a href="/features#documentation" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Documentation">Documentation</a></li>
  184. <li class="edge-item-fix"><a href="/features#code-hosting" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code hosting">Code hosting</a></li>
  185. </ul>
  186.  
  187. <ul class="list-style-none mb-0 border-lg-top pt-lg-3">
  188. <li class="edge-item-fix"><a href="/customer-stories" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Customer stories">Customer stories <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
  189. <li class="edge-item-fix"><a href="/security" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Security">Security <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
  190. </ul>
  191. </div>
  192. </details>
  193. </li>
  194. <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
  195. <a href="/enterprise" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Enterprise">Enterprise</a>
  196. </li>
  197.  
  198. <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
  199. <details class="HeaderMenu-details details-overlay details-reset width-full">
  200. <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
  201. Explore
  202. <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
  203. <path d="M1,1l6.2,6L13,1"></path>
  204. </svg>
  205. </summary>
  206.  
  207. <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
  208. <ul class="list-style-none mb-3">
  209. <li class="edge-item-fix"><a href="/explore" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Explore">Explore GitHub <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
  210. </ul>
  211.  
  212. <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Learn &amp; contribute</h4>
  213. <ul class="list-style-none mb-3">
  214. <li class="edge-item-fix"><a href="/topics" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Topics">Topics</a></li>
  215. <li class="edge-item-fix"><a href="/collections" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Collections">Collections</a></li>
  216. <li class="edge-item-fix"><a href="/trending" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Trending">Trending</a></li>
  217. <li class="edge-item-fix"><a href="https://lab.github.com/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Learning lab">Learning Lab</a></li>
  218. <li class="edge-item-fix"><a href="https://opensource.guide" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Open source guides">Open source guides</a></li>
  219. </ul>
  220.  
  221. <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Connect with others</h4>
  222. <ul class="list-style-none mb-0">
  223. <li class="edge-item-fix"><a href="https://github.com/events" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Events">Events</a></li>
  224. <li class="edge-item-fix"><a href="https://github.community" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Community forum">Community forum</a></li>
  225. <li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Education">GitHub Education</a></li>
  226. </ul>
  227. </div>
  228. </details>
  229. </li>
  230.  
  231. <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
  232. <a href="/marketplace" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Marketplace">Marketplace</a>
  233. </li>
  234.  
  235. <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
  236. <details class="HeaderMenu-details details-overlay details-reset width-full">
  237. <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
  238. Pricing
  239. <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
  240. <path d="M1,1l6.2,6L13,1"></path>
  241. </svg>
  242. </summary>
  243.  
  244. <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-4 mt-0 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
  245. <a href="/pricing" class="pb-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Pricing">Plans <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a>
  246.  
  247. <ul class="list-style-none mb-3">
  248. <li class="edge-item-fix"><a href="/pricing#feature-comparison" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Compare plans">Compare plans</a></li>
  249. <li class="edge-item-fix"><a href="https://enterprise.github.com/contact" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Contact Sales">Contact Sales</a></li>
  250. </ul>
  251.  
  252. <ul class="list-style-none mb-0 border-lg-top pt-lg-3">
  253. <li class="edge-item-fix"><a href="/nonprofit" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Nonprofits">Nonprofit <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
  254. <li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Education">Education <span class="Bump-link-symbol float-right text-normal text-gray-light">&rarr;</span></a></li>
  255. </ul>
  256. </div>
  257. </details>
  258. </li>
  259. </ul>
  260. </nav>
  261.  
  262. <div class="d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left">
  263. <div class="d-lg-flex mb-3 mb-lg-0">
  264. <div class="header-search flex-self-stretch flex-lg-self-auto mr-0 mr-lg-3 mb-3 mb-lg-0 scoped-search site-scoped-search js-site-search position-relative js-jump-to"
  265. role="combobox"
  266. aria-owns="jump-to-results"
  267. aria-label="Search or jump to"
  268. aria-haspopup="listbox"
  269. aria-expanded="false"
  270. >
  271. <div class="position-relative">
  272. <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="13829278" data-scoped-search-url="/nliautaud/pico-pages-list/search" data-unscoped-search-url="/search" action="/nliautaud/pico-pages-list/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
  273. <label class="form-control input-sm header-search-wrapper p-0 header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center js-chromeless-input-container">
  274. <input type="text"
  275. class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
  276. data-hotkey="s,/"
  277. name="q"
  278. value=""
  279. placeholder="Search"
  280. data-unscoped-placeholder="Search GitHub"
  281. data-scoped-placeholder="Search"
  282. autocapitalize="off"
  283. aria-autocomplete="list"
  284. aria-controls="jump-to-results"
  285. aria-label="Search"
  286. data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations#csrf-token=G0+GjQu087zXQ+1fQicNbrHJSTuAoXZQ4tAsBgwobDSyVzxf4lR7dd2eSmQo1+XLf7rIy+wMZxY+/yi8xxxh9Q=="
  287. spellcheck="false"
  288. autocomplete="off"
  289. >
  290. <input type="hidden" class="js-site-search-type-field" name="type" >
  291. <img src="https://github.githubassets.com/images/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
  292.  
  293. <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
  294.  
  295. <ul class="d-none js-jump-to-suggestions-template-container">
  296.  
  297.  
  298. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
  299. <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
  300. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  301. <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
  302. <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
  303. <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
  304. </div>
  305.  
  306. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  307.  
  308. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  309. </div>
  310.  
  311. <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
  312. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  313. In this repository
  314. </span>
  315. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  316. All GitHub
  317. </span>
  318. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
  319. </div>
  320.  
  321. <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  322. Jump to
  323. <span class="d-inline-block ml-1 v-align-middle">↵</span>
  324. </div>
  325. </a>
  326. </li>
  327.  
  328. </ul>
  329.  
  330. <ul class="d-none js-jump-to-no-results-template-container">
  331. <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
  332. <span class="text-gray">No suggested jump to results</span>
  333. </li>
  334. </ul>
  335.  
  336. <ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
  337.  
  338.  
  339. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
  340. <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
  341. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  342. <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
  343. <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
  344. <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
  345. </div>
  346.  
  347. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  348.  
  349. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  350. </div>
  351.  
  352. <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
  353. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  354. In this repository
  355. </span>
  356. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  357. All GitHub
  358. </span>
  359. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
  360. </div>
  361.  
  362. <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  363. Jump to
  364. <span class="d-inline-block ml-1 v-align-middle">↵</span>
  365. </div>
  366. </a>
  367. </li>
  368.  
  369.  
  370.  
  371. <li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
  372. <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="">
  373. <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
  374. <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 12 16" version="1.1" role="img"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
  375. <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 15 16" version="1.1" role="img"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
  376. <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z"/></svg>
  377. </div>
  378.  
  379. <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
  380.  
  381. <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
  382. </div>
  383.  
  384. <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
  385. <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
  386. In this repository
  387. </span>
  388. <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
  389. All GitHub
  390. </span>
  391. <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
  392. </div>
  393.  
  394. <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
  395. Jump to
  396. <span class="d-inline-block ml-1 v-align-middle">↵</span>
  397. </div>
  398. </a>
  399. </li>
  400.  
  401.  
  402. </ul>
  403.  
  404. </div>
  405. </label>
  406. </form> </div>
  407. </div>
  408.  
  409. </div>
  410.  
  411. <a href="/login?return_to=%2Fnliautaud%2Fpico-pages-list%2Fblob%2Fmaster%2FPicoPagesList.php"
  412. class="HeaderMenu-link no-underline mr-3"
  413. data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;client_id&quot;:&quot;120118399.1565643387&quot;,&quot;originating_request_id&quot;:&quot;E7FC:10992:65B817F:995DF9A:5DA62887&quot;,&quot;originating_url&quot;:&quot;https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php&quot;,&quot;referrer&quot;:&quot;https://github.com/nliautaud/pico-pages-list&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cac48c0f0eb70e1ffb95226a5c779c50ccfa9893b6d320f782fd94d5ad2f3cfe"
  414. data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">
  415. Sign&nbsp;in
  416. </a>
  417. <a href="/join?source=header-repo"
  418. class="HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1"
  419. data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;client_id&quot;:&quot;120118399.1565643387&quot;,&quot;originating_request_id&quot;:&quot;E7FC:10992:65B817F:995DF9A:5DA62887&quot;,&quot;originating_url&quot;:&quot;https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php&quot;,&quot;referrer&quot;:&quot;https://github.com/nliautaud/pico-pages-list&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cac48c0f0eb70e1ffb95226a5c779c50ccfa9893b6d320f782fd94d5ad2f3cfe"
  420. data-ga-click="(Logged out) Header, clicked Sign up, text:sign-up">
  421. Sign&nbsp;up
  422. </a>
  423. </div>
  424. </div>
  425. </div>
  426. </header>
  427.  
  428. </div>
  429.  
  430. <div id="start-of-content" class="show-on-focus"></div>
  431.  
  432.  
  433. <div id="js-flash-container">
  434.  
  435. </div>
  436.  
  437.  
  438.  
  439. <div class="application-main " data-commit-hovercards-enabled>
  440. <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
  441. <main >
  442.  
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456. <div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav pt-0 pt-lg-4 ">
  457. <div class="repohead-details-container clearfix container-lg p-responsive d-none d-lg-block">
  458.  
  459. <ul class="pagehead-actions">
  460.  
  461.  
  462.  
  463.  
  464. <li>
  465.  
  466. <a class="tooltipped tooltipped-s btn btn-sm btn-with-count" aria-label="You must be signed in to watch a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;client_id&quot;:&quot;120118399.1565643387&quot;,&quot;originating_request_id&quot;:&quot;E7FC:10992:65B817F:995DF9A:5DA62887&quot;,&quot;originating_url&quot;:&quot;https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php&quot;,&quot;referrer&quot;:&quot;https://github.com/nliautaud/pico-pages-list&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c05b559710e8036049153bd0e1515a3d97ee189a4e6da83f72205d1a381d20bc" href="/login?return_to=%2Fnliautaud%2Fpico-pages-list">
  467. <svg class="octicon octicon-eye v-align-text-bottom" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
  468. Watch
  469. </a> <a class="social-count" href="/nliautaud/pico-pages-list/watchers"
  470. aria-label="1 user is watching this repository">
  471. 1
  472. </a>
  473.  
  474. </li>
  475.  
  476. <li>
  477. <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to star a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:13829278,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;client_id&quot;:&quot;120118399.1565643387&quot;,&quot;originating_request_id&quot;:&quot;E7FC:10992:65B817F:995DF9A:5DA62887&quot;,&quot;originating_url&quot;:&quot;https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php&quot;,&quot;referrer&quot;:&quot;https://github.com/nliautaud/pico-pages-list&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="14368abdc39716d7db847e832c5364b41434ab1b6eb9e9da95d29c37bdfb4fc9" href="/login?return_to=%2Fnliautaud%2Fpico-pages-list">
  478. <svg class="octicon octicon-star v-align-text-bottom" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74L14 6z"/></svg>
  479. Star
  480. </a>
  481. <a class="social-count js-social-count" href="/nliautaud/pico-pages-list/stargazers"
  482. aria-label="7 users starred this repository">
  483. 7
  484. </a>
  485.  
  486. </li>
  487.  
  488. <li>
  489. <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to fork a repository" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:13829278,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;client_id&quot;:&quot;120118399.1565643387&quot;,&quot;originating_request_id&quot;:&quot;E7FC:10992:65B817F:995DF9A:5DA62887&quot;,&quot;originating_url&quot;:&quot;https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php&quot;,&quot;referrer&quot;:&quot;https://github.com/nliautaud/pico-pages-list&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9108dd6fa68e704039359411c8ad790238628629da88c84e836494d6632122f7" href="/login?return_to=%2Fnliautaud%2Fpico-pages-list">
  490. <svg class="octicon octicon-repo-forked v-align-text-bottom" viewBox="0 0 10 16" version="1.1" width="10" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
  491. Fork
  492. </a>
  493. <a href="/nliautaud/pico-pages-list/network/members" class="social-count"
  494. aria-label="5 users forked this repository">
  495. 5
  496. </a>
  497. </li>
  498. </ul>
  499.  
  500. <h1 class="public ">
  501. <svg class="octicon octicon-repo" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
  502. <span class="author" itemprop="author"><a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/hovercards?user_id=761761" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/nliautaud">nliautaud</a></span><!--
  503. --><span class="path-divider">/</span><!--
  504. --><strong itemprop="name"><a data-pjax="#js-repo-pjax-container" href="/nliautaud/pico-pages-list">pico-pages-list</a></strong>
  505.  
  506.  
  507. </h1>
  508.  
  509. </div>
  510.  
  511. <nav class="hx_reponav reponav js-repo-nav js-sidenav-container-pjax container-lg p-responsive d-none d-lg-block"
  512. itemscope
  513. itemtype="http://schema.org/BreadcrumbList"
  514. aria-label="Repository"
  515. data-pjax="#js-repo-pjax-container">
  516.  
  517. <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
  518. <a class="js-selected-navigation-item selected reponav-item" itemprop="url" data-hotkey="g c" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /nliautaud/pico-pages-list" href="/nliautaud/pico-pages-list">
  519. <svg class="octicon octicon-code" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
  520. <span itemprop="name">Code</span>
  521. <meta itemprop="position" content="1">
  522. </a> </span>
  523.  
  524. <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
  525. <a itemprop="url" data-hotkey="g i" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /nliautaud/pico-pages-list/issues" href="/nliautaud/pico-pages-list/issues">
  526. <svg class="octicon octicon-issue-opened" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg>
  527. <span itemprop="name">Issues</span>
  528. <span class="Counter">0</span>
  529. <meta itemprop="position" content="2">
  530. </a> </span>
  531.  
  532. <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
  533. <a data-hotkey="g p" itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /nliautaud/pico-pages-list/pulls" href="/nliautaud/pico-pages-list/pulls">
  534. <svg class="octicon octicon-git-pull-request" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
  535. <span itemprop="name">Pull requests</span>
  536. <span class="Counter">1</span>
  537. <meta itemprop="position" content="3">
  538. </a> </span>
  539.  
  540.  
  541. <a data-hotkey="g b" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /nliautaud/pico-pages-list/projects" href="/nliautaud/pico-pages-list/projects">
  542. <svg class="octicon octicon-project" viewBox="0 0 15 16" version="1.1" width="15" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
  543. Projects
  544. <span class="Counter" >0</span>
  545. </a>
  546.  
  547.  
  548. <a data-skip-pjax="true" class="js-selected-navigation-item reponav-item" data-selected-links="security alerts policy code_scanning /nliautaud/pico-pages-list/security/advisories" href="/nliautaud/pico-pages-list/security/advisories">
  549. <svg class="octicon octicon-shield" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 2l7-2 7 2v6.02C14 12.69 8.69 16 7 16c-1.69 0-7-3.31-7-7.98V2zm1 .75L7 1l6 1.75v5.268C13 12.104 8.449 15 7 15c-1.449 0-6-2.896-6-6.982V2.75zm1 .75L7 2v12c-1.207 0-5-2.482-5-5.985V3.5z"/></svg>
  550. Security
  551. </a>
  552. <a class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors dependency_graph pulse people /nliautaud/pico-pages-list/pulse" href="/nliautaud/pico-pages-list/pulse">
  553. <svg class="octicon octicon-graph" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
  554. Insights
  555. </a>
  556.  
  557. </nav>
  558.  
  559. <div class="reponav-wrapper reponav-small d-lg-none">
  560. <nav class="reponav js-reponav text-center no-wrap"
  561. itemscope
  562. itemtype="http://schema.org/BreadcrumbList">
  563.  
  564. <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
  565. <a class="js-selected-navigation-item selected reponav-item" itemprop="url" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages /nliautaud/pico-pages-list" href="/nliautaud/pico-pages-list">
  566. <span itemprop="name">Code</span>
  567. <meta itemprop="position" content="1">
  568. </a> </span>
  569.  
  570. <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
  571. <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_issues repo_labels repo_milestones /nliautaud/pico-pages-list/issues" href="/nliautaud/pico-pages-list/issues">
  572. <span itemprop="name">Issues</span>
  573. <span class="Counter">0</span>
  574. <meta itemprop="position" content="2">
  575. </a> </span>
  576.  
  577. <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
  578. <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_pulls checks /nliautaud/pico-pages-list/pulls" href="/nliautaud/pico-pages-list/pulls">
  579. <span itemprop="name">Pull requests</span>
  580. <span class="Counter">1</span>
  581. <meta itemprop="position" content="3">
  582. </a> </span>
  583.  
  584. <span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
  585. <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /nliautaud/pico-pages-list/projects" href="/nliautaud/pico-pages-list/projects">
  586. <span itemprop="name">Projects</span>
  587. <span class="Counter">0</span>
  588. <meta itemprop="position" content="4">
  589. </a> </span>
  590.  
  591.  
  592. <a itemprop="url" class="js-selected-navigation-item reponav-item" data-selected-links="security alerts policy code_scanning /nliautaud/pico-pages-list/security/advisories" href="/nliautaud/pico-pages-list/security/advisories">
  593. <span itemprop="name">Security</span>
  594. <meta itemprop="position" content="6">
  595. </a>
  596. <a class="js-selected-navigation-item reponav-item" data-selected-links="pulse /nliautaud/pico-pages-list/pulse" href="/nliautaud/pico-pages-list/pulse">
  597. Pulse
  598. </a>
  599.  
  600. </nav>
  601. </div>
  602.  
  603.  
  604. </div>
  605. <div class="container-lg clearfix new-discussion-timeline experiment-repo-nav p-responsive">
  606. <div class="repository-content ">
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615. <a class="d-none js-permalink-shortcut" data-hotkey="y" href="/nliautaud/pico-pages-list/blob/ead799adc5724ffdac095c173633d6837b4145c2/PicoPagesList.php">Permalink</a>
  616.  
  617. <!-- blob contrib key: blob_contributors:v21:4ac2efd5113cdce510771906ed12214a -->
  618. <div class="signup-prompt-bg rounded-1">
  619. <div class="signup-prompt p-4 text-center mb-4 rounded-1">
  620. <div class="position-relative">
  621. <!-- '"` --><!-- </textarea></xmp> --></option></form><form action="/prompt_dismissals/signup" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" /><input type="hidden" name="_method" value="put" /><input type="hidden" name="authenticity_token" value="mqCswdYMEchwh7AanuMJ1S1u1bjaa9p0dHNfdJm4Es+KDWvFhgnghK01jOH4T4ztXPZG5A8KnJCSE+zKTbK2Mw==" />
  622. <button type="submit" class="position-absolute top-0 right-0 btn-link link-gray" data-ga-click="(Logged out) Sign up prompt, clicked Dismiss, text:dismiss">
  623. Dismiss
  624. </button>
  625. </form> <h3 class="pt-2">Join GitHub today</h3>
  626. <p class="col-6 mx-auto">GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.</p>
  627. <a class="btn btn-primary" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;files signup prompt&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;client_id&quot;:&quot;120118399.1565643387&quot;,&quot;originating_request_id&quot;:&quot;E7FC:10992:65B817F:995DF9A:5DA62887&quot;,&quot;originating_url&quot;:&quot;https://github.com/nliautaud/pico-pages-list/blob/master/PicoPagesList.php&quot;,&quot;referrer&quot;:&quot;https://github.com/nliautaud/pico-pages-list&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8d73330328f9049a47980d948199d84d58c7f359b19272b1e8b624caca7e81ec" data-ga-click="(Logged out) Sign up prompt, clicked Sign up, text:sign-up" href="/join?source=prompt-blob-show">Sign up</a>
  628. </div>
  629. </div>
  630. </div>
  631.  
  632.  
  633. <div class="d-flex flex-items-start flex-shrink-0 pb-3 flex-column flex-md-row">
  634. <span class="d-flex flex-justify-between width-full width-md-auto">
  635.  
  636. <details class="details-reset details-overlay select-menu branch-select-menu hx_rsm" id="branch-select-menu">
  637. <summary class="btn btn-sm select-menu-button css-truncate"
  638. data-hotkey="w"
  639. title="Switch branches or tags">
  640. <i>Branch:</i>
  641. <span class="css-truncate-target" data-menu-button>master</span>
  642. </summary>
  643.  
  644. <details-menu class="select-menu-modal hx_rsm-modal position-absolute" style="z-index: 99;" src="/nliautaud/pico-pages-list/ref-list/master/PicoPagesList.php?source_action=show&amp;source_controller=blob" preload>
  645. <include-fragment class="select-menu-loading-overlay anim-pulse">
  646. <svg height="32" class="octicon octicon-octoface" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M14.7 5.34c.13-.32.55-1.59-.13-3.31 0 0-1.05-.33-3.44 1.3-1-.28-2.07-.32-3.13-.32s-2.13.04-3.13.32c-2.39-1.64-3.44-1.3-3.44-1.3-.68 1.72-.26 2.99-.13 3.31C.49 6.21 0 7.33 0 8.69 0 13.84 3.33 15 7.98 15S16 13.84 16 8.69c0-1.36-.49-2.48-1.3-3.35zM8 14.02c-3.3 0-5.98-.15-5.98-3.35 0-.76.38-1.48 1.02-2.07 1.07-.98 2.9-.46 4.96-.46 2.07 0 3.88-.52 4.96.46.65.59 1.02 1.3 1.02 2.07 0 3.19-2.68 3.35-5.98 3.35zM5.49 9.01c-.66 0-1.2.8-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.54-1.78-1.2-1.78zm5.02 0c-.66 0-1.2.79-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.53-1.78-1.2-1.78z"/></svg>
  647. </include-fragment>
  648. </details-menu>
  649. </details>
  650.  
  651. <div class="BtnGroup flex-shrink-0 d-md-none">
  652. <a href="/nliautaud/pico-pages-list/find/master"
  653. class="js-pjax-capture-input btn btn-sm BtnGroup-item"
  654. data-pjax
  655. data-hotkey="t">
  656. Find file
  657. </a>
  658. <clipboard-copy value="PicoPagesList.php" class="btn btn-sm BtnGroup-item">
  659. Copy path
  660. </clipboard-copy>
  661. </div>
  662. </span>
  663. <h2 id="blob-path" class="breadcrumb flex-auto min-width-0 text-normal flex-md-self-center ml-md-2 mr-md-3 my-2 my-md-0">
  664. <span class="js-repo-root text-bold"><span class="js-path-segment"><a data-pjax="true" href="/nliautaud/pico-pages-list"><span>pico-pages-list</span></a></span></span><span class="separator">/</span><strong class="final-path">PicoPagesList.php</strong>
  665. </h2>
  666.  
  667. <div class="BtnGroup flex-shrink-0 d-none d-md-inline-block">
  668. <a href="/nliautaud/pico-pages-list/find/master"
  669. class="js-pjax-capture-input btn btn-sm BtnGroup-item"
  670. data-pjax
  671. data-hotkey="t">
  672. Find file
  673. </a>
  674. <clipboard-copy value="PicoPagesList.php" class="btn btn-sm BtnGroup-item">
  675. Copy path
  676. </clipboard-copy>
  677. </div>
  678. </div>
  679.  
  680.  
  681.  
  682. <include-fragment src="/nliautaud/pico-pages-list/contributors/master/PicoPagesList.php" class="Box Box--condensed commit-loader">
  683. <div class="Box-body bg-blue-light f6">
  684. Fetching contributors&hellip;
  685. </div>
  686.  
  687. <div class="Box-body d-flex flex-items-center" >
  688. <img alt="" class="loader-loading mr-2" src="https://github.githubassets.com/images/spinners/octocat-spinner-32-EAF2F5.gif" width="16" height="16" />
  689. <span class="text-red h6 loader-error">Cannot retrieve contributors at this time</span>
  690. </div>
  691. </include-fragment>
  692.  
  693.  
  694.  
  695.  
  696. <div class="Box mt-3 position-relative">
  697.  
  698. <div class="Box-header py-2 d-flex flex-column flex-shrink-0 flex-md-row flex-md-items-center">
  699. <div class="text-mono f6 flex-auto pr-3 flex-order-2 flex-md-order-1 mt-2 mt-md-0">
  700.  
  701. 264 lines (242 sloc)
  702. <span class="file-info-divider"></span>
  703. 8.51 KB
  704. </div>
  705.  
  706. <div class="d-flex py-1 py-md-0 flex-auto flex-order-1 flex-md-order-2 flex-sm-grow-0 flex-justify-between">
  707.  
  708. <div class="BtnGroup">
  709. <a id="raw-url" class="btn btn-sm BtnGroup-item" href="/nliautaud/pico-pages-list/raw/master/PicoPagesList.php">Raw</a>
  710. <a class="btn btn-sm js-update-url-with-hash BtnGroup-item" data-hotkey="b" href="/nliautaud/pico-pages-list/blame/master/PicoPagesList.php">Blame</a>
  711. <a rel="nofollow" class="btn btn-sm BtnGroup-item" href="/nliautaud/pico-pages-list/commits/master/PicoPagesList.php">History</a>
  712. </div>
  713.  
  714.  
  715. <div>
  716. <a class="btn-octicon tooltipped tooltipped-nw hide-sm"
  717. href="https://desktop.github.com"
  718. aria-label="Open this file in GitHub Desktop"
  719. data-ga-click="Repository, open with desktop, type:windows">
  720. <svg class="octicon octicon-device-desktop" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
  721. </a>
  722.  
  723. <button type="button" class="btn-octicon disabled tooltipped tooltipped-nw"
  724. aria-label="You must be signed in to make or propose changes">
  725. <svg class="octicon octicon-pencil" viewBox="0 0 14 16" version="1.1" width="14" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M0 12v3h3l8-8-3-3-8 8zm3 2H1v-2h1v1h1v1zm10.3-9.3L12 6 9 3l1.3-1.3a.996.996 0 0 1 1.41 0l1.59 1.59c.39.39.39 1.02 0 1.41z"/></svg>
  726. </button>
  727. <button type="button" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
  728. aria-label="You must be signed in to make or propose changes">
  729. <svg class="octicon octicon-trashcan" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
  730. </button>
  731. </div>
  732. </div>
  733. </div>
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740. <div itemprop="text" class="Box-body p-0 blob-wrapper data type-php ">
  741.  
  742. <table class="highlight tab-size js-file-line-container" data-tab-size="8">
  743. <tr>
  744. <td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
  745. <td id="LC1" class="blob-code blob-code-inner js-file-line"><span class="pl-pse">&lt;?php</span><span class="pl-s1"></span></td>
  746. </tr>
  747. <tr>
  748. <td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
  749. <td id="LC2" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  750. </tr>
  751. <tr>
  752. <td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
  753. <td id="LC3" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Flat and nested pages list navigation for Pico CMS.</span></span></td>
  754. </tr>
  755. <tr>
  756. <td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
  757. <td id="LC4" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  758. </tr>
  759. <tr>
  760. <td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
  761. <td id="LC5" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * - Adds twig global `{{ nested_pages }}` in addition to `{{ pages }}`</span></span></td>
  762. </tr>
  763. <tr>
  764. <td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
  765. <td id="LC6" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * - Render flat or nested HTML navigation tree with `navigation` twig filter</span></span></td>
  766. </tr>
  767. <tr>
  768. <td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
  769. <td id="LC7" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * - Filter pages and nested pages by paths with `exclude()` and `only()` twig filters</span></span></td>
  770. </tr>
  771. <tr>
  772. <td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
  773. <td id="LC8" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  774. </tr>
  775. <tr>
  776. <td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
  777. <td id="LC9" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Examples :</span></span></td>
  778. </tr>
  779. <tr>
  780. <td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
  781. <td id="LC10" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  782. </tr>
  783. <tr>
  784. <td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
  785. <td id="LC11" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * {{ pages | navigation }} // output a flat pages list</span></span></td>
  786. </tr>
  787. <tr>
  788. <td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
  789. <td id="LC12" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * {{ nested_pages | navigation }} // output a nested pages list</span></span></td>
  790. </tr>
  791. <tr>
  792. <td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
  793. <td id="LC13" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * {{ nested_pages | exclude(&#39;sub/page&#39;) | navigation }} // filtered nested pages list</span></span></td>
  794. </tr>
  795. <tr>
  796. <td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
  797. <td id="LC14" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * {% assign filtered = pages | only(&#39;sub/path/&#39;) %} // get filtered flat pages array</span></span></td>
  798. </tr>
  799. <tr>
  800. <td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
  801. <td id="LC15" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  802. </tr>
  803. <tr>
  804. <td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
  805. <td id="LC16" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@author</span> Nicolas Liautaud</span></span></td>
  806. </tr>
  807. <tr>
  808. <td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
  809. <td id="LC17" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@link</span> https://github.com/nliautaud/pico-pages-list</span></span></td>
  810. </tr>
  811. <tr>
  812. <td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
  813. <td id="LC18" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@link</span> http://picocms.org</span></span></td>
  814. </tr>
  815. <tr>
  816. <td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
  817. <td id="LC19" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@license</span> http://opensource.org/licenses/MIT The MIT License</span></span></td>
  818. </tr>
  819. <tr>
  820. <td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
  821. <td id="LC20" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  822. </tr>
  823. <tr>
  824. <td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
  825. <td id="LC21" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-k">class</span> <span class="pl-en">PicoPagesList</span> <span class="pl-k">extends</span> <span class="pl-e">AbstractPicoPlugin</span></span></td>
  826. </tr>
  827. <tr>
  828. <td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
  829. <td id="LC22" class="blob-code blob-code-inner js-file-line"><span class="pl-s1">{</span></td>
  830. </tr>
  831. <tr>
  832. <td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
  833. <td id="LC23" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">const</span> <span class="pl-c1">API_VERSION</span> <span class="pl-k">=</span> <span class="pl-c1">2</span>;</span></td>
  834. </tr>
  835. <tr>
  836. <td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
  837. <td id="LC24" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">public</span> <span class="pl-smi">$items</span>;</span></td>
  838. </tr>
  839. <tr>
  840. <td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
  841. <td id="LC25" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">private</span> <span class="pl-smi">$currentPagePath</span>;</span></td>
  842. </tr>
  843. <tr>
  844. <td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
  845. <td id="LC26" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  846. </tr>
  847. <tr>
  848. <td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
  849. <td id="LC27" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  850. </tr>
  851. <tr>
  852. <td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
  853. <td id="LC28" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Construct the nested pages array.</span></span></td>
  854. </tr>
  855. <tr>
  856. <td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
  857. <td id="LC29" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  858. </tr>
  859. <tr>
  860. <td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
  861. <td id="LC30" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Triggered after Pico has read all known pages</span></span></td>
  862. </tr>
  863. <tr>
  864. <td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
  865. <td id="LC31" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  866. </tr>
  867. <tr>
  868. <td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
  869. <td id="LC32" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * See {<span class="pl-k">@link</span> DummyPlugin::onSinglePageLoaded()} for details about the</span></span></td>
  870. </tr>
  871. <tr>
  872. <td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
  873. <td id="LC33" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * structure of the page data.</span></span></td>
  874. </tr>
  875. <tr>
  876. <td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
  877. <td id="LC34" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  878. </tr>
  879. <tr>
  880. <td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
  881. <td id="LC35" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> Pico::getPages()</span></span></td>
  882. </tr>
  883. <tr>
  884. <td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
  885. <td id="LC36" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array[] &amp;$pages data of all known pages</span></span></td>
  886. </tr>
  887. <tr>
  888. <td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
  889. <td id="LC37" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> void</span></span></td>
  890. </tr>
  891. <tr>
  892. <td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
  893. <td id="LC38" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  894. </tr>
  895. <tr>
  896. <td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
  897. <td id="LC39" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">onPagesLoaded</span>(<span class="pl-k">array</span> <span class="pl-k">&amp;</span><span class="pl-smi">$pages</span>)</span></td>
  898. </tr>
  899. <tr>
  900. <td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
  901. <td id="LC40" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  902. </tr>
  903. <tr>
  904. <td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
  905. <td id="LC41" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">items</span> <span class="pl-k">=</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span>nestedPages(<span class="pl-smi">$pages</span>);</span></td>
  906. </tr>
  907. <tr>
  908. <td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
  909. <td id="LC42" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  910. </tr>
  911. <tr>
  912. <td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
  913. <td id="LC43" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  914. </tr>
  915. <tr>
  916. <td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
  917. <td id="LC44" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  918. </tr>
  919. <tr>
  920. <td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
  921. <td id="LC45" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  922. </tr>
  923. <tr>
  924. <td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
  925. <td id="LC46" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Store the current url.</span></span></td>
  926. </tr>
  927. <tr>
  928. <td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
  929. <td id="LC47" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  930. </tr>
  931. <tr>
  932. <td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
  933. <td id="LC48" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Triggered after Pico has found the current page and possible siblings</span></span></td>
  934. </tr>
  935. <tr>
  936. <td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
  937. <td id="LC49" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  938. </tr>
  939. <tr>
  940. <td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
  941. <td id="LC50" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * See {<span class="pl-k">@link</span> DummyPlugin::onSinglePageLoaded()} for details about the</span></span></td>
  942. </tr>
  943. <tr>
  944. <td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
  945. <td id="LC51" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * structure of the page data.</span></span></td>
  946. </tr>
  947. <tr>
  948. <td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
  949. <td id="LC52" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  950. </tr>
  951. <tr>
  952. <td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
  953. <td id="LC53" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> Pico::getCurrentPage()</span></span></td>
  954. </tr>
  955. <tr>
  956. <td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
  957. <td id="LC54" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> Pico::getPreviousPage()</span></span></td>
  958. </tr>
  959. <tr>
  960. <td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
  961. <td id="LC55" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> Pico::getNextPage()</span></span></td>
  962. </tr>
  963. <tr>
  964. <td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
  965. <td id="LC56" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array|null &amp;$currentPage data of the page being served</span></span></td>
  966. </tr>
  967. <tr>
  968. <td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
  969. <td id="LC57" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array|null &amp;$previousPage data of the previous page</span></span></td>
  970. </tr>
  971. <tr>
  972. <td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
  973. <td id="LC58" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array|null &amp;$nextPage data of the next page</span></span></td>
  974. </tr>
  975. <tr>
  976. <td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
  977. <td id="LC59" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> void</span></span></td>
  978. </tr>
  979. <tr>
  980. <td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
  981. <td id="LC60" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  982. </tr>
  983. <tr>
  984. <td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
  985. <td id="LC61" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">protected</span> <span class="pl-k">function</span> <span class="pl-en">onCurrentPageDiscovered</span>(</span></td>
  986. </tr>
  987. <tr>
  988. <td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
  989. <td id="LC62" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">array</span> <span class="pl-k">&amp;</span><span class="pl-smi">$currentPage</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>,</span></td>
  990. </tr>
  991. <tr>
  992. <td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
  993. <td id="LC63" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">array</span> <span class="pl-k">&amp;</span><span class="pl-smi">$previousPage</span> <span class="pl-k">=</span> <span class="pl-c1">null</span>,</span></td>
  994. </tr>
  995. <tr>
  996. <td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
  997. <td id="LC64" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">array</span> <span class="pl-k">&amp;</span><span class="pl-smi">$nextPage</span> <span class="pl-k">=</span> <span class="pl-c1">null</span></span></td>
  998. </tr>
  999. <tr>
  1000. <td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
  1001. <td id="LC65" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> ) {</span></td>
  1002. </tr>
  1003. <tr>
  1004. <td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
  1005. <td id="LC66" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$base_url</span> <span class="pl-k">=</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span>getConfig(<span class="pl-s"><span class="pl-pds">&#39;</span>base_url<span class="pl-pds">&#39;</span></span>);</span></td>
  1006. </tr>
  1007. <tr>
  1008. <td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
  1009. <td id="LC67" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">currentPagePath</span> <span class="pl-k">=</span> <span class="pl-c1">str_replace</span>(<span class="pl-c1">array</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>?<span class="pl-pds">&#39;</span></span>, <span class="pl-smi">$base_url</span>), <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span>, <span class="pl-c1">urldecode</span>(<span class="pl-smi">$currentPage</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>url<span class="pl-pds">&#39;</span></span>]));</span></td>
  1010. </tr>
  1011. <tr>
  1012. <td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
  1013. <td id="LC68" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1014. </tr>
  1015. <tr>
  1016. <td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
  1017. <td id="LC69" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1018. </tr>
  1019. <tr>
  1020. <td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
  1021. <td id="LC70" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1022. </tr>
  1023. <tr>
  1024. <td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
  1025. <td id="LC71" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Register `$this` in the Twig `{{ PagesList }}` variable.</span></span></td>
  1026. </tr>
  1027. <tr>
  1028. <td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
  1029. <td id="LC72" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1030. </tr>
  1031. <tr>
  1032. <td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
  1033. <td id="LC73" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1034. </tr>
  1035. <tr>
  1036. <td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
  1037. <td id="LC74" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> Pico::getTwig()</span></span></td>
  1038. </tr>
  1039. <tr>
  1040. <td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
  1041. <td id="LC75" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> Twig_Environment &amp;$twig Twig instance</span></span></td>
  1042. </tr>
  1043. <tr>
  1044. <td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
  1045. <td id="LC76" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> void</span></span></td>
  1046. </tr>
  1047. <tr>
  1048. <td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
  1049. <td id="LC77" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1050. </tr>
  1051. <tr>
  1052. <td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
  1053. <td id="LC78" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">onTwigRegistered</span>(<span class="pl-c1">Twig_Environment</span> <span class="pl-k">&amp;</span><span class="pl-smi">$twig</span>)</span></td>
  1054. </tr>
  1055. <tr>
  1056. <td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
  1057. <td id="LC79" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1058. </tr>
  1059. <tr>
  1060. <td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
  1061. <td id="LC80" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$twig</span><span class="pl-k">-&gt;</span>addFilter(<span class="pl-k">new</span> <span class="pl-c1">Twig_SimpleFilter</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>navigation<span class="pl-pds">&#39;</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">$pages</span>) {</span></td>
  1062. </tr>
  1063. <tr>
  1064. <td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
  1065. <td id="LC81" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span>output(<span class="pl-smi">$pages</span>);</span></td>
  1066. </tr>
  1067. <tr>
  1068. <td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
  1069. <td id="LC82" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }));</span></td>
  1070. </tr>
  1071. <tr>
  1072. <td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
  1073. <td id="LC83" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1074. </tr>
  1075. <tr>
  1076. <td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
  1077. <td id="LC84" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$twig</span><span class="pl-k">-&gt;</span>addFilter(<span class="pl-k">new</span> <span class="pl-c1">Twig_SimpleFilter</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>exclude<span class="pl-pds">&#39;</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">$pages</span>, <span class="pl-k">array</span> <span class="pl-smi">$paths</span> <span class="pl-k">=</span> <span class="pl-c1">array</span>()) {</span></td>
  1078. </tr>
  1079. <tr>
  1080. <td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
  1081. <td id="LC85" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span>filterPages(<span class="pl-smi">$pages</span>, <span class="pl-smi">$paths</span>);</span></td>
  1082. </tr>
  1083. <tr>
  1084. <td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
  1085. <td id="LC86" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }, <span class="pl-c1">array</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>is_variadic<span class="pl-pds">&#39;</span></span> <span class="pl-k">=&gt;</span> <span class="pl-c1">true</span>)));</span></td>
  1086. </tr>
  1087. <tr>
  1088. <td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
  1089. <td id="LC87" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1090. </tr>
  1091. <tr>
  1092. <td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
  1093. <td id="LC88" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$twig</span><span class="pl-k">-&gt;</span>addFilter(<span class="pl-k">new</span> <span class="pl-c1">Twig_SimpleFilter</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>only<span class="pl-pds">&#39;</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">$pages</span>, <span class="pl-k">array</span> <span class="pl-smi">$paths</span> <span class="pl-k">=</span> <span class="pl-c1">array</span>()) {</span></td>
  1094. </tr>
  1095. <tr>
  1096. <td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
  1097. <td id="LC89" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span>filterPages(<span class="pl-smi">$pages</span>, <span class="pl-smi">$paths</span>, <span class="pl-c1">true</span>);</span></td>
  1098. </tr>
  1099. <tr>
  1100. <td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
  1101. <td id="LC90" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }, <span class="pl-c1">array</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>is_variadic<span class="pl-pds">&#39;</span></span> <span class="pl-k">=&gt;</span> <span class="pl-c1">true</span>)));</span></td>
  1102. </tr>
  1103. <tr>
  1104. <td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
  1105. <td id="LC91" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1106. </tr>
  1107. <tr>
  1108. <td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
  1109. <td id="LC92" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1110. </tr>
  1111. <tr>
  1112. <td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
  1113. <td id="LC93" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1114. </tr>
  1115. <tr>
  1116. <td id="L94" class="blob-num js-line-number" data-line-number="94"></td>
  1117. <td id="LC94" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Register `$this` in the Twig `{{ PagesList }}` variable.</span></span></td>
  1118. </tr>
  1119. <tr>
  1120. <td id="L95" class="blob-num js-line-number" data-line-number="95"></td>
  1121. <td id="LC95" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1122. </tr>
  1123. <tr>
  1124. <td id="L96" class="blob-num js-line-number" data-line-number="96"></td>
  1125. <td id="LC96" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Triggered before Pico renders the page</span></span></td>
  1126. </tr>
  1127. <tr>
  1128. <td id="L97" class="blob-num js-line-number" data-line-number="97"></td>
  1129. <td id="LC97" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1130. </tr>
  1131. <tr>
  1132. <td id="L98" class="blob-num js-line-number" data-line-number="98"></td>
  1133. <td id="LC98" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> Pico::getTwig()</span></span></td>
  1134. </tr>
  1135. <tr>
  1136. <td id="L99" class="blob-num js-line-number" data-line-number="99"></td>
  1137. <td id="LC99" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> DummyPlugin::onPageRendered()</span></span></td>
  1138. </tr>
  1139. <tr>
  1140. <td id="L100" class="blob-num js-line-number" data-line-number="100"></td>
  1141. <td id="LC100" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> string &amp;$templateName file name of the template</span></span></td>
  1142. </tr>
  1143. <tr>
  1144. <td id="L101" class="blob-num js-line-number" data-line-number="101"></td>
  1145. <td id="LC101" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array &amp;$twigVariables template variables</span></span></td>
  1146. </tr>
  1147. <tr>
  1148. <td id="L102" class="blob-num js-line-number" data-line-number="102"></td>
  1149. <td id="LC102" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> void</span></span></td>
  1150. </tr>
  1151. <tr>
  1152. <td id="L103" class="blob-num js-line-number" data-line-number="103"></td>
  1153. <td id="LC103" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1154. </tr>
  1155. <tr>
  1156. <td id="L104" class="blob-num js-line-number" data-line-number="104"></td>
  1157. <td id="LC104" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1158. </tr>
  1159. <tr>
  1160. <td id="L105" class="blob-num js-line-number" data-line-number="105"></td>
  1161. <td id="LC105" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">public</span> <span class="pl-k">function</span> <span class="pl-en">onPageRendering</span>(<span class="pl-k">string</span> <span class="pl-k">&amp;</span><span class="pl-smi">$templateName</span>, <span class="pl-k">array</span> <span class="pl-k">&amp;</span><span class="pl-smi">$twigVariables</span>)</span></td>
  1162. </tr>
  1163. <tr>
  1164. <td id="L106" class="blob-num js-line-number" data-line-number="106"></td>
  1165. <td id="LC106" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1166. </tr>
  1167. <tr>
  1168. <td id="L107" class="blob-num js-line-number" data-line-number="107"></td>
  1169. <td id="LC107" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$twigVariables</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>nested_pages<span class="pl-pds">&#39;</span></span>] <span class="pl-k">=</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">items</span>;</span></td>
  1170. </tr>
  1171. <tr>
  1172. <td id="L108" class="blob-num js-line-number" data-line-number="108"></td>
  1173. <td id="LC108" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1174. </tr>
  1175. <tr>
  1176. <td id="L109" class="blob-num js-line-number" data-line-number="109"></td>
  1177. <td id="LC109" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1178. </tr>
  1179. <tr>
  1180. <td id="L110" class="blob-num js-line-number" data-line-number="110"></td>
  1181. <td id="LC110" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1182. </tr>
  1183. <tr>
  1184. <td id="L111" class="blob-num js-line-number" data-line-number="111"></td>
  1185. <td id="LC111" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Create the nested pages array according to the pages paths.</span></span></td>
  1186. </tr>
  1187. <tr>
  1188. <td id="L112" class="blob-num js-line-number" data-line-number="112"></td>
  1189. <td id="LC112" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1190. </tr>
  1191. <tr>
  1192. <td id="L113" class="blob-num js-line-number" data-line-number="113"></td>
  1193. <td id="LC113" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@see</span> nested_path</span></span></td>
  1194. </tr>
  1195. <tr>
  1196. <td id="L114" class="blob-num js-line-number" data-line-number="114"></td>
  1197. <td id="LC114" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $pages Pico pages flat array</span></span></td>
  1198. </tr>
  1199. <tr>
  1200. <td id="L115" class="blob-num js-line-number" data-line-number="115"></td>
  1201. <td id="LC115" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1202. </tr>
  1203. <tr>
  1204. <td id="L116" class="blob-num js-line-number" data-line-number="116"></td>
  1205. <td id="LC116" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">private</span> <span class="pl-k">function</span> <span class="pl-en">nestedPages</span>(<span class="pl-smi">$pages</span>)</span></td>
  1206. </tr>
  1207. <tr>
  1208. <td id="L117" class="blob-num js-line-number" data-line-number="117"></td>
  1209. <td id="LC117" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1210. </tr>
  1211. <tr>
  1212. <td id="L118" class="blob-num js-line-number" data-line-number="118"></td>
  1213. <td id="LC118" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">items</span> <span class="pl-k">=</span> <span class="pl-c1">array</span>();</span></td>
  1214. </tr>
  1215. <tr>
  1216. <td id="L119" class="blob-num js-line-number" data-line-number="119"></td>
  1217. <td id="LC119" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">foreach</span> (<span class="pl-smi">$pages</span> <span class="pl-k">as</span> <span class="pl-smi">$page</span>) {</span></td>
  1218. </tr>
  1219. <tr>
  1220. <td id="L120" class="blob-num js-line-number" data-line-number="120"></td>
  1221. <td id="LC120" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$nested_path</span> <span class="pl-k">=</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span>nested_path(<span class="pl-smi">$page</span>);</span></td>
  1222. </tr>
  1223. <tr>
  1224. <td id="L121" class="blob-num js-line-number" data-line-number="121"></td>
  1225. <td id="LC121" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">items</span> <span class="pl-k">=</span> <span class="pl-c1">array_replace_recursive</span>(<span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">items</span>, <span class="pl-smi">$nested_path</span>);</span></td>
  1226. </tr>
  1227. <tr>
  1228. <td id="L122" class="blob-num js-line-number" data-line-number="122"></td>
  1229. <td id="LC122" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1230. </tr>
  1231. <tr>
  1232. <td id="L123" class="blob-num js-line-number" data-line-number="123"></td>
  1233. <td id="LC123" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">items</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>];</span></td>
  1234. </tr>
  1235. <tr>
  1236. <td id="L124" class="blob-num js-line-number" data-line-number="124"></td>
  1237. <td id="LC124" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1238. </tr>
  1239. <tr>
  1240. <td id="L125" class="blob-num js-line-number" data-line-number="125"></td>
  1241. <td id="LC125" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1242. </tr>
  1243. <tr>
  1244. <td id="L126" class="blob-num js-line-number" data-line-number="126"></td>
  1245. <td id="LC126" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1246. </tr>
  1247. <tr>
  1248. <td id="L127" class="blob-num js-line-number" data-line-number="127"></td>
  1249. <td id="LC127" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Create a nested array of a given path, with the page at the end.</span></span></td>
  1250. </tr>
  1251. <tr>
  1252. <td id="L128" class="blob-num js-line-number" data-line-number="128"></td>
  1253. <td id="LC128" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Each path fragment is in &quot;_childs&quot; of the parent.</span></span></td>
  1254. </tr>
  1255. <tr>
  1256. <td id="L129" class="blob-num js-line-number" data-line-number="129"></td>
  1257. <td id="LC129" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1258. </tr>
  1259. <tr>
  1260. <td id="L130" class="blob-num js-line-number" data-line-number="130"></td>
  1261. <td id="LC130" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $page the page array</span></span></td>
  1262. </tr>
  1263. <tr>
  1264. <td id="L131" class="blob-num js-line-number" data-line-number="131"></td>
  1265. <td id="LC131" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> array the nested path</span></span></td>
  1266. </tr>
  1267. <tr>
  1268. <td id="L132" class="blob-num js-line-number" data-line-number="132"></td>
  1269. <td id="LC132" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1270. </tr>
  1271. <tr>
  1272. <td id="L133" class="blob-num js-line-number" data-line-number="133"></td>
  1273. <td id="LC133" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">private</span> <span class="pl-k">function</span> <span class="pl-en">nested_path</span>(<span class="pl-smi">$page</span>)</span></td>
  1274. </tr>
  1275. <tr>
  1276. <td id="L134" class="blob-num js-line-number" data-line-number="134"></td>
  1277. <td id="LC134" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1278. </tr>
  1279. <tr>
  1280. <td id="L135" class="blob-num js-line-number" data-line-number="135"></td>
  1281. <td id="LC135" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$path</span> <span class="pl-k">=</span> <span class="pl-k">self</span><span class="pl-k">::</span>rtrim(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>id<span class="pl-pds">&#39;</span></span>], <span class="pl-s"><span class="pl-pds">&#39;</span>/index<span class="pl-pds">&#39;</span></span>);</span></td>
  1282. </tr>
  1283. <tr>
  1284. <td id="L136" class="blob-num js-line-number" data-line-number="136"></td>
  1285. <td id="LC136" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$parts</span> <span class="pl-k">=</span> <span class="pl-c1">explode</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>/<span class="pl-pds">&#39;</span></span>, <span class="pl-smi">$path</span>);</span></td>
  1286. </tr>
  1287. <tr>
  1288. <td id="L137" class="blob-num js-line-number" data-line-number="137"></td>
  1289. <td id="LC137" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$count</span> <span class="pl-k">=</span> <span class="pl-c1">count</span>(<span class="pl-smi">$parts</span>);</span></td>
  1290. </tr>
  1291. <tr>
  1292. <td id="L138" class="blob-num js-line-number" data-line-number="138"></td>
  1293. <td id="LC138" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1294. </tr>
  1295. <tr>
  1296. <td id="L139" class="blob-num js-line-number" data-line-number="139"></td>
  1297. <td id="LC139" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$arr</span> <span class="pl-k">=</span> <span class="pl-c1">array</span>();</span></td>
  1298. </tr>
  1299. <tr>
  1300. <td id="L140" class="blob-num js-line-number" data-line-number="140"></td>
  1301. <td id="LC140" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$parent</span> <span class="pl-k">=</span> <span class="pl-k">&amp;</span><span class="pl-smi">$arr</span>;</span></td>
  1302. </tr>
  1303. <tr>
  1304. <td id="L141" class="blob-num js-line-number" data-line-number="141"></td>
  1305. <td id="LC141" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">foreach</span>(<span class="pl-smi">$parts</span> <span class="pl-k">as</span> <span class="pl-smi">$id</span> <span class="pl-k">=&gt;</span> <span class="pl-smi">$part</span>) {</span></td>
  1306. </tr>
  1307. <tr>
  1308. <td id="L142" class="blob-num js-line-number" data-line-number="142"></td>
  1309. <td id="LC142" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$value</span> <span class="pl-k">=</span> [];</span></td>
  1310. </tr>
  1311. <tr>
  1312. <td id="L143" class="blob-num js-line-number" data-line-number="143"></td>
  1313. <td id="LC143" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span>(<span class="pl-k">!</span><span class="pl-smi">$part</span> <span class="pl-k">||</span> <span class="pl-smi">$id</span> <span class="pl-k">==</span> <span class="pl-smi">$count</span><span class="pl-k">-</span><span class="pl-c1">1</span>) {</span></td>
  1314. </tr>
  1315. <tr>
  1316. <td id="L144" class="blob-num js-line-number" data-line-number="144"></td>
  1317. <td id="LC144" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$value</span> <span class="pl-k">=</span> <span class="pl-smi">$page</span>;</span></td>
  1318. </tr>
  1319. <tr>
  1320. <td id="L145" class="blob-num js-line-number" data-line-number="145"></td>
  1321. <td id="LC145" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> } <span class="pl-k">else</span> {</span></td>
  1322. </tr>
  1323. <tr>
  1324. <td id="L146" class="blob-num js-line-number" data-line-number="146"></td>
  1325. <td id="LC146" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$currpath</span> <span class="pl-k">=</span> <span class="pl-c1">implode</span>(<span class="pl-s"><span class="pl-pds">&#39;</span>/<span class="pl-pds">&#39;</span></span>, <span class="pl-c1">array_slice</span>(<span class="pl-smi">$parts</span>, <span class="pl-c1">0</span>, <span class="pl-smi">$id</span><span class="pl-k">+</span><span class="pl-c1">1</span>));</span></td>
  1326. </tr>
  1327. <tr>
  1328. <td id="L147" class="blob-num js-line-number" data-line-number="147"></td>
  1329. <td id="LC147" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$value</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>id<span class="pl-pds">&#39;</span></span>] <span class="pl-k">=</span> <span class="pl-smi">$currpath</span>;</span></td>
  1330. </tr>
  1331. <tr>
  1332. <td id="L148" class="blob-num js-line-number" data-line-number="148"></td>
  1333. <td id="LC148" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1334. </tr>
  1335. <tr>
  1336. <td id="L149" class="blob-num js-line-number" data-line-number="149"></td>
  1337. <td id="LC149" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span>(<span class="pl-smi">$path</span> <span class="pl-k">&amp;&amp;</span> <span class="pl-k">!</span><span class="pl-smi">$part</span>) {</span></td>
  1338. </tr>
  1339. <tr>
  1340. <td id="L150" class="blob-num js-line-number" data-line-number="150"></td>
  1341. <td id="LC150" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$parent</span> <span class="pl-k">=</span> <span class="pl-smi">$value</span>;</span></td>
  1342. </tr>
  1343. <tr>
  1344. <td id="L151" class="blob-num js-line-number" data-line-number="151"></td>
  1345. <td id="LC151" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">break</span>;</span></td>
  1346. </tr>
  1347. <tr>
  1348. <td id="L152" class="blob-num js-line-number" data-line-number="152"></td>
  1349. <td id="LC152" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1350. </tr>
  1351. <tr>
  1352. <td id="L153" class="blob-num js-line-number" data-line-number="153"></td>
  1353. <td id="LC153" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1354. </tr>
  1355. <tr>
  1356. <td id="L154" class="blob-num js-line-number" data-line-number="154"></td>
  1357. <td id="LC154" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$parent</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>][<span class="pl-smi">$part</span>] <span class="pl-k">=</span> <span class="pl-smi">$value</span>;</span></td>
  1358. </tr>
  1359. <tr>
  1360. <td id="L155" class="blob-num js-line-number" data-line-number="155"></td>
  1361. <td id="LC155" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$parent</span> <span class="pl-k">=</span> <span class="pl-k">&amp;</span><span class="pl-smi">$parent</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>][<span class="pl-smi">$part</span>];</span></td>
  1362. </tr>
  1363. <tr>
  1364. <td id="L156" class="blob-num js-line-number" data-line-number="156"></td>
  1365. <td id="LC156" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1366. </tr>
  1367. <tr>
  1368. <td id="L157" class="blob-num js-line-number" data-line-number="157"></td>
  1369. <td id="LC157" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-smi">$arr</span>;</span></td>
  1370. </tr>
  1371. <tr>
  1372. <td id="L158" class="blob-num js-line-number" data-line-number="158"></td>
  1373. <td id="LC158" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1374. </tr>
  1375. <tr>
  1376. <td id="L159" class="blob-num js-line-number" data-line-number="159"></td>
  1377. <td id="LC159" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1378. </tr>
  1379. <tr>
  1380. <td id="L160" class="blob-num js-line-number" data-line-number="160"></td>
  1381. <td id="LC160" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1382. </tr>
  1383. <tr>
  1384. <td id="L161" class="blob-num js-line-number" data-line-number="161"></td>
  1385. <td id="LC161" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Strip a substring from the end of a string</span></span></td>
  1386. </tr>
  1387. <tr>
  1388. <td id="L162" class="blob-num js-line-number" data-line-number="162"></td>
  1389. <td id="LC162" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1390. </tr>
  1391. <tr>
  1392. <td id="L163" class="blob-num js-line-number" data-line-number="163"></td>
  1393. <td id="LC163" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $str The input string.</span></span></td>
  1394. </tr>
  1395. <tr>
  1396. <td id="L164" class="blob-num js-line-number" data-line-number="164"></td>
  1397. <td id="LC164" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $substr The substring to remove.</span></span></td>
  1398. </tr>
  1399. <tr>
  1400. <td id="L165" class="blob-num js-line-number" data-line-number="165"></td>
  1401. <td id="LC165" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> string The modified string.</span></span></td>
  1402. </tr>
  1403. <tr>
  1404. <td id="L166" class="blob-num js-line-number" data-line-number="166"></td>
  1405. <td id="LC166" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1406. </tr>
  1407. <tr>
  1408. <td id="L167" class="blob-num js-line-number" data-line-number="167"></td>
  1409. <td id="LC167" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">private</span> <span class="pl-k">static</span> <span class="pl-k">function</span> <span class="pl-en">rtrim</span>(<span class="pl-smi">$str</span>, <span class="pl-smi">$substr</span>)</span></td>
  1410. </tr>
  1411. <tr>
  1412. <td id="L168" class="blob-num js-line-number" data-line-number="168"></td>
  1413. <td id="LC168" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1414. </tr>
  1415. <tr>
  1416. <td id="L169" class="blob-num js-line-number" data-line-number="169"></td>
  1417. <td id="LC169" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$length</span> <span class="pl-k">=</span> <span class="pl-c1">strlen</span>(<span class="pl-smi">$substr</span>);</span></td>
  1418. </tr>
  1419. <tr>
  1420. <td id="L170" class="blob-num js-line-number" data-line-number="170"></td>
  1421. <td id="LC170" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> (<span class="pl-c1">substr</span>(<span class="pl-smi">$str</span>, <span class="pl-k">-</span><span class="pl-smi">$length</span>) <span class="pl-k">===</span> <span class="pl-smi">$substr</span>) ? <span class="pl-c1">substr</span>(<span class="pl-smi">$str</span>, <span class="pl-c1">0</span>, <span class="pl-k">-</span><span class="pl-smi">$length</span>) : <span class="pl-smi">$str</span>;</span></td>
  1422. </tr>
  1423. <tr>
  1424. <td id="L171" class="blob-num js-line-number" data-line-number="171"></td>
  1425. <td id="LC171" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1426. </tr>
  1427. <tr>
  1428. <td id="L172" class="blob-num js-line-number" data-line-number="172"></td>
  1429. <td id="LC172" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1430. </tr>
  1431. <tr>
  1432. <td id="L173" class="blob-num js-line-number" data-line-number="173"></td>
  1433. <td id="LC173" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1434. </tr>
  1435. <tr>
  1436. <td id="L174" class="blob-num js-line-number" data-line-number="174"></td>
  1437. <td id="LC174" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Filter the pages array according to given paths, as exclusive or inclusive.</span></span></td>
  1438. </tr>
  1439. <tr>
  1440. <td id="L175" class="blob-num js-line-number" data-line-number="175"></td>
  1441. <td id="LC175" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1442. </tr>
  1443. <tr>
  1444. <td id="L176" class="blob-num js-line-number" data-line-number="176"></td>
  1445. <td id="LC176" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $pages The flat or nested pages array.</span></span></td>
  1446. </tr>
  1447. <tr>
  1448. <td id="L177" class="blob-num js-line-number" data-line-number="177"></td>
  1449. <td id="LC177" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $filteredPaths The paths to filter.</span></span></td>
  1450. </tr>
  1451. <tr>
  1452. <td id="L178" class="blob-num js-line-number" data-line-number="178"></td>
  1453. <td id="LC178" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> boolean $isInclusive If `true` only corresponding paths are kept.</span></span></td>
  1454. </tr>
  1455. <tr>
  1456. <td id="L179" class="blob-num js-line-number" data-line-number="179"></td>
  1457. <td id="LC179" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> array The filtered array of pages.</span></span></td>
  1458. </tr>
  1459. <tr>
  1460. <td id="L180" class="blob-num js-line-number" data-line-number="180"></td>
  1461. <td id="LC180" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1462. </tr>
  1463. <tr>
  1464. <td id="L181" class="blob-num js-line-number" data-line-number="181"></td>
  1465. <td id="LC181" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> <span class="pl-en">filterPages</span>(</span></td>
  1466. </tr>
  1467. <tr>
  1468. <td id="L182" class="blob-num js-line-number" data-line-number="182"></td>
  1469. <td id="LC182" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$pages</span>,</span></td>
  1470. </tr>
  1471. <tr>
  1472. <td id="L183" class="blob-num js-line-number" data-line-number="183"></td>
  1473. <td id="LC183" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$filteredPaths</span>,</span></td>
  1474. </tr>
  1475. <tr>
  1476. <td id="L184" class="blob-num js-line-number" data-line-number="184"></td>
  1477. <td id="LC184" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$isInclusive</span> <span class="pl-k">=</span> <span class="pl-c1">false</span>,</span></td>
  1478. </tr>
  1479. <tr>
  1480. <td id="L185" class="blob-num js-line-number" data-line-number="185"></td>
  1481. <td id="LC185" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$inclusiveOutput</span> <span class="pl-k">=</span> []</span></td>
  1482. </tr>
  1483. <tr>
  1484. <td id="L186" class="blob-num js-line-number" data-line-number="186"></td>
  1485. <td id="LC186" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> ) {</span></td>
  1486. </tr>
  1487. <tr>
  1488. <td id="L187" class="blob-num js-line-number" data-line-number="187"></td>
  1489. <td id="LC187" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">foreach</span>(<span class="pl-smi">$pages</span> <span class="pl-k">as</span> <span class="pl-smi">$i</span> <span class="pl-k">=&gt;</span> <span class="pl-smi">$page</span>) {</span></td>
  1490. </tr>
  1491. <tr>
  1492. <td id="L188" class="blob-num js-line-number" data-line-number="188"></td>
  1493. <td id="LC188" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">isset</span>(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>id<span class="pl-pds">&#39;</span></span>])) <span class="pl-k">return</span>;</span></td>
  1494. </tr>
  1495. <tr>
  1496. <td id="L189" class="blob-num js-line-number" data-line-number="189"></td>
  1497. <td id="LC189" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1498. </tr>
  1499. <tr>
  1500. <td id="L190" class="blob-num js-line-number" data-line-number="190"></td>
  1501. <td id="LC190" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$path</span> <span class="pl-k">=</span> <span class="pl-k">self</span><span class="pl-k">::</span>rtrim(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>id<span class="pl-pds">&#39;</span></span>], <span class="pl-s"><span class="pl-pds">&#39;</span>/index<span class="pl-pds">&#39;</span></span>);</span></td>
  1502. </tr>
  1503. <tr>
  1504. <td id="L191" class="blob-num js-line-number" data-line-number="191"></td>
  1505. <td id="LC191" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$isSubPath</span> <span class="pl-k">=</span> <span class="pl-k">self</span><span class="pl-k">::</span>isSubPath(<span class="pl-smi">$path</span>, <span class="pl-smi">$filteredPaths</span>);</span></td>
  1506. </tr>
  1507. <tr>
  1508. <td id="L192" class="blob-num js-line-number" data-line-number="192"></td>
  1509. <td id="LC192" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-smi">$isSubPath</span>) {</span></td>
  1510. </tr>
  1511. <tr>
  1512. <td id="L193" class="blob-num js-line-number" data-line-number="193"></td>
  1513. <td id="LC193" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-smi">$isInclusive</span>) <span class="pl-smi">$inclusiveOutput</span>[<span class="pl-smi">$i</span>] <span class="pl-k">=</span> <span class="pl-smi">$page</span>;</span></td>
  1514. </tr>
  1515. <tr>
  1516. <td id="L194" class="blob-num js-line-number" data-line-number="194"></td>
  1517. <td id="LC194" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">else</span> <span class="pl-c1">unset</span>(<span class="pl-smi">$pages</span>[<span class="pl-smi">$i</span>]);</span></td>
  1518. </tr>
  1519. <tr>
  1520. <td id="L195" class="blob-num js-line-number" data-line-number="195"></td>
  1521. <td id="LC195" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">continue</span>;</span></td>
  1522. </tr>
  1523. <tr>
  1524. <td id="L196" class="blob-num js-line-number" data-line-number="196"></td>
  1525. <td id="LC196" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1526. </tr>
  1527. <tr>
  1528. <td id="L197" class="blob-num js-line-number" data-line-number="197"></td>
  1529. <td id="LC197" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-c1">isset</span>(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>])) {</span></td>
  1530. </tr>
  1531. <tr>
  1532. <td id="L198" class="blob-num js-line-number" data-line-number="198"></td>
  1533. <td id="LC198" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$childs</span> <span class="pl-k">=</span> <span class="pl-k">self</span><span class="pl-k">::</span>filterPages(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>], <span class="pl-smi">$filteredPaths</span>, <span class="pl-smi">$isInclusive</span>, <span class="pl-smi">$inclusiveOutput</span>);</span></td>
  1534. </tr>
  1535. <tr>
  1536. <td id="L199" class="blob-num js-line-number" data-line-number="199"></td>
  1537. <td id="LC199" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-smi">$isInclusive</span>) <span class="pl-smi">$inclusiveOutput</span> <span class="pl-k">=</span> <span class="pl-smi">$childs</span>;</span></td>
  1538. </tr>
  1539. <tr>
  1540. <td id="L200" class="blob-num js-line-number" data-line-number="200"></td>
  1541. <td id="LC200" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">else</span> <span class="pl-smi">$pages</span>[<span class="pl-smi">$i</span>][<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>] <span class="pl-k">=</span> <span class="pl-smi">$childs</span>;</span></td>
  1542. </tr>
  1543. <tr>
  1544. <td id="L201" class="blob-num js-line-number" data-line-number="201"></td>
  1545. <td id="LC201" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1546. </tr>
  1547. <tr>
  1548. <td id="L202" class="blob-num js-line-number" data-line-number="202"></td>
  1549. <td id="LC202" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1550. </tr>
  1551. <tr>
  1552. <td id="L203" class="blob-num js-line-number" data-line-number="203"></td>
  1553. <td id="LC203" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-smi">$isInclusive</span> ? <span class="pl-smi">$inclusiveOutput</span> : <span class="pl-smi">$pages</span>;</span></td>
  1554. </tr>
  1555. <tr>
  1556. <td id="L204" class="blob-num js-line-number" data-line-number="204"></td>
  1557. <td id="LC204" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1558. </tr>
  1559. <tr>
  1560. <td id="L205" class="blob-num js-line-number" data-line-number="205"></td>
  1561. <td id="LC205" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1562. </tr>
  1563. <tr>
  1564. <td id="L206" class="blob-num js-line-number" data-line-number="206"></td>
  1565. <td id="LC206" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Return if the given path is a subpath of the given parent path(s)</span></span></td>
  1566. </tr>
  1567. <tr>
  1568. <td id="L207" class="blob-num js-line-number" data-line-number="207"></td>
  1569. <td id="LC207" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1570. </tr>
  1571. <tr>
  1572. <td id="L208" class="blob-num js-line-number" data-line-number="208"></td>
  1573. <td id="LC208" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> string $path</span></span></td>
  1574. </tr>
  1575. <tr>
  1576. <td id="L209" class="blob-num js-line-number" data-line-number="209"></td>
  1577. <td id="LC209" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $parentPaths array of paths</span></span></td>
  1578. </tr>
  1579. <tr>
  1580. <td id="L210" class="blob-num js-line-number" data-line-number="210"></td>
  1581. <td id="LC210" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> boolean</span></span></td>
  1582. </tr>
  1583. <tr>
  1584. <td id="L211" class="blob-num js-line-number" data-line-number="211"></td>
  1585. <td id="LC211" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1586. </tr>
  1587. <tr>
  1588. <td id="L212" class="blob-num js-line-number" data-line-number="212"></td>
  1589. <td id="LC212" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">private</span> <span class="pl-k">static</span> <span class="pl-k">function</span> <span class="pl-en">isSubPath</span>(<span class="pl-smi">$path</span>, <span class="pl-smi">$parentPaths</span>)</span></td>
  1590. </tr>
  1591. <tr>
  1592. <td id="L213" class="blob-num js-line-number" data-line-number="213"></td>
  1593. <td id="LC213" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1594. </tr>
  1595. <tr>
  1596. <td id="L214" class="blob-num js-line-number" data-line-number="214"></td>
  1597. <td id="LC214" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">foreach</span>(<span class="pl-smi">$parentPaths</span> <span class="pl-k">as</span> <span class="pl-smi">$p</span>) {</span></td>
  1598. </tr>
  1599. <tr>
  1600. <td id="L215" class="blob-num js-line-number" data-line-number="215"></td>
  1601. <td id="LC215" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">is_string</span>(<span class="pl-smi">$p</span>)) <span class="pl-k">continue</span>;</span></td>
  1602. </tr>
  1603. <tr>
  1604. <td id="L216" class="blob-num js-line-number" data-line-number="216"></td>
  1605. <td id="LC216" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-smi">$path</span> <span class="pl-k">==</span> <span class="pl-smi">$p</span>) <span class="pl-k">return</span> <span class="pl-c1">true</span>;</span></td>
  1606. </tr>
  1607. <tr>
  1608. <td id="L217" class="blob-num js-line-number" data-line-number="217"></td>
  1609. <td id="LC217" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-c1">strncmp</span>(<span class="pl-smi">$path</span>, <span class="pl-smi">$p</span>, <span class="pl-c1">strlen</span>(<span class="pl-smi">$p</span>)) <span class="pl-k">===</span> <span class="pl-c1">0</span>)</span></td>
  1610. </tr>
  1611. <tr>
  1612. <td id="L218" class="blob-num js-line-number" data-line-number="218"></td>
  1613. <td id="LC218" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-c1">true</span>;</span></td>
  1614. </tr>
  1615. <tr>
  1616. <td id="L219" class="blob-num js-line-number" data-line-number="219"></td>
  1617. <td id="LC219" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1618. </tr>
  1619. <tr>
  1620. <td id="L220" class="blob-num js-line-number" data-line-number="220"></td>
  1621. <td id="LC220" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-c1">false</span>;</span></td>
  1622. </tr>
  1623. <tr>
  1624. <td id="L221" class="blob-num js-line-number" data-line-number="221"></td>
  1625. <td id="LC221" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1626. </tr>
  1627. <tr>
  1628. <td id="L222" class="blob-num js-line-number" data-line-number="222"></td>
  1629. <td id="LC222" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1630. </tr>
  1631. <tr>
  1632. <td id="L223" class="blob-num js-line-number" data-line-number="223"></td>
  1633. <td id="LC223" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">/**</span></span></span></td>
  1634. </tr>
  1635. <tr>
  1636. <td id="L224" class="blob-num js-line-number" data-line-number="224"></td>
  1637. <td id="LC224" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * Return an html nested list based on a nested pages array.</span></span></td>
  1638. </tr>
  1639. <tr>
  1640. <td id="L225" class="blob-num js-line-number" data-line-number="225"></td>
  1641. <td id="LC225" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> *</span></span></td>
  1642. </tr>
  1643. <tr>
  1644. <td id="L226" class="blob-num js-line-number" data-line-number="226"></td>
  1645. <td id="LC226" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@param</span> array $pages a nested pages array</span></span></td>
  1646. </tr>
  1647. <tr>
  1648. <td id="L227" class="blob-num js-line-number" data-line-number="227"></td>
  1649. <td id="LC227" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> * <span class="pl-k">@return</span> string the html list</span></span></td>
  1650. </tr>
  1651. <tr>
  1652. <td id="L228" class="blob-num js-line-number" data-line-number="228"></td>
  1653. <td id="LC228" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"><span class="pl-c"> <span class="pl-c">*/</span></span></span></td>
  1654. </tr>
  1655. <tr>
  1656. <td id="L229" class="blob-num js-line-number" data-line-number="229"></td>
  1657. <td id="LC229" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">private</span> <span class="pl-k">function</span> <span class="pl-en">output</span>(<span class="pl-smi">$pages</span>)</span></td>
  1658. </tr>
  1659. <tr>
  1660. <td id="L230" class="blob-num js-line-number" data-line-number="230"></td>
  1661. <td id="LC230" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1662. </tr>
  1663. <tr>
  1664. <td id="L231" class="blob-num js-line-number" data-line-number="231"></td>
  1665. <td id="LC231" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">is_array</span>(<span class="pl-smi">$pages</span>)) <span class="pl-k">return</span>;</span></td>
  1666. </tr>
  1667. <tr>
  1668. <td id="L232" class="blob-num js-line-number" data-line-number="232"></td>
  1669. <td id="LC232" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$html</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&lt;ul&gt;<span class="pl-pds">&#39;</span></span>;</span></td>
  1670. </tr>
  1671. <tr>
  1672. <td id="L233" class="blob-num js-line-number" data-line-number="233"></td>
  1673. <td id="LC233" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">foreach</span> (<span class="pl-smi">$pages</span> <span class="pl-k">as</span> <span class="pl-smi">$pageID</span> <span class="pl-k">=&gt;</span> <span class="pl-smi">$page</span>)</span></td>
  1674. </tr>
  1675. <tr>
  1676. <td id="L234" class="blob-num js-line-number" data-line-number="234"></td>
  1677. <td id="LC234" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> {</span></td>
  1678. </tr>
  1679. <tr>
  1680. <td id="L235" class="blob-num js-line-number" data-line-number="235"></td>
  1681. <td id="LC235" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-k">!</span><span class="pl-c1">empty</span>(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>hidden<span class="pl-pds">&#39;</span></span>])) <span class="pl-k">continue</span>;</span></td>
  1682. </tr>
  1683. <tr>
  1684. <td id="L236" class="blob-num js-line-number" data-line-number="236"></td>
  1685. <td id="LC236" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1686. </tr>
  1687. <tr>
  1688. <td id="L237" class="blob-num js-line-number" data-line-number="237"></td>
  1689. <td id="LC237" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$childsOutput</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&#39;</span><span class="pl-pds">&#39;</span></span>;</span></td>
  1690. </tr>
  1691. <tr>
  1692. <td id="L238" class="blob-num js-line-number" data-line-number="238"></td>
  1693. <td id="LC238" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span>(<span class="pl-c1">isset</span>(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>])) {</span></td>
  1694. </tr>
  1695. <tr>
  1696. <td id="L239" class="blob-num js-line-number" data-line-number="239"></td>
  1697. <td id="LC239" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$childsOutput</span> <span class="pl-k">=</span> <span class="pl-smi">$this</span><span class="pl-k">-&gt;</span>output(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>_childs<span class="pl-pds">&#39;</span></span>]);</span></td>
  1698. </tr>
  1699. <tr>
  1700. <td id="L240" class="blob-num js-line-number" data-line-number="240"></td>
  1701. <td id="LC240" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1702. </tr>
  1703. <tr>
  1704. <td id="L241" class="blob-num js-line-number" data-line-number="241"></td>
  1705. <td id="LC241" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1706. </tr>
  1707. <tr>
  1708. <td id="L242" class="blob-num js-line-number" data-line-number="242"></td>
  1709. <td id="LC242" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$url</span> <span class="pl-k">=</span> <span class="pl-c1">isset</span>(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>url<span class="pl-pds">&#39;</span></span>]) ? <span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>url<span class="pl-pds">&#39;</span></span>] : <span class="pl-c1">false</span>;</span></td>
  1710. </tr>
  1711. <tr>
  1712. <td id="L243" class="blob-num js-line-number" data-line-number="243"></td>
  1713. <td id="LC243" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1714. </tr>
  1715. <tr>
  1716. <td id="L244" class="blob-num js-line-number" data-line-number="244"></td>
  1717. <td id="LC244" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">//</span> use title if the page have one, and make a link if the page exists.</span></span></td>
  1718. </tr>
  1719. <tr>
  1720. <td id="L245" class="blob-num js-line-number" data-line-number="245"></td>
  1721. <td id="LC245" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span>(<span class="pl-k">!</span><span class="pl-smi">$url</span>) <span class="pl-smi">$item</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;span&gt;<span class="pl-smi">$pageID</span>&lt;/span&gt;<span class="pl-pds">&quot;</span></span>;</span></td>
  1722. </tr>
  1723. <tr>
  1724. <td id="L246" class="blob-num js-line-number" data-line-number="246"></td>
  1725. <td id="LC246" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">else</span> {</span></td>
  1726. </tr>
  1727. <tr>
  1728. <td id="L247" class="blob-num js-line-number" data-line-number="247"></td>
  1729. <td id="LC247" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$name</span> <span class="pl-k">=</span> <span class="pl-k">!</span><span class="pl-c1">empty</span>(<span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>title<span class="pl-pds">&#39;</span></span>]) ? <span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>title<span class="pl-pds">&#39;</span></span>] : <span class="pl-smi">$pageID</span>;</span></td>
  1730. </tr>
  1731. <tr>
  1732. <td id="L248" class="blob-num js-line-number" data-line-number="248"></td>
  1733. <td id="LC248" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$item</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;a href=<span class="pl-cce">\&quot;</span><span class="pl-smi">$url</span><span class="pl-cce">\&quot;</span>&gt;<span class="pl-smi">$name</span>&lt;/a&gt;<span class="pl-pds">&quot;</span></span>;</span></td>
  1734. </tr>
  1735. <tr>
  1736. <td id="L249" class="blob-num js-line-number" data-line-number="249"></td>
  1737. <td id="LC249" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1738. </tr>
  1739. <tr>
  1740. <td id="L250" class="blob-num js-line-number" data-line-number="250"></td>
  1741. <td id="LC250" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1742. </tr>
  1743. <tr>
  1744. <td id="L251" class="blob-num js-line-number" data-line-number="251"></td>
  1745. <td id="LC251" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-c"><span class="pl-c">//</span> add the pageID in class, and indicates if is current or parent of current</span></span></td>
  1746. </tr>
  1747. <tr>
  1748. <td id="L252" class="blob-num js-line-number" data-line-number="252"></td>
  1749. <td id="LC252" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$class</span> <span class="pl-k">=</span> <span class="pl-smi">$pageID</span>;</span></td>
  1750. </tr>
  1751. <tr>
  1752. <td id="L253" class="blob-num js-line-number" data-line-number="253"></td>
  1753. <td id="LC253" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$class</span> <span class="pl-k">.=</span> <span class="pl-smi">$url</span> ? <span class="pl-s"><span class="pl-pds">&#39;</span> is-page<span class="pl-pds">&#39;</span></span> : <span class="pl-s"><span class="pl-pds">&#39;</span> is-directory<span class="pl-pds">&#39;</span></span>;</span></td>
  1754. </tr>
  1755. <tr>
  1756. <td id="L254" class="blob-num js-line-number" data-line-number="254"></td>
  1757. <td id="LC254" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-smi">$childsOutput</span>) <span class="pl-smi">$class</span> <span class="pl-k">.=</span> <span class="pl-s"><span class="pl-pds">&#39;</span> has-childs<span class="pl-pds">&#39;</span></span>;</span></td>
  1758. </tr>
  1759. <tr>
  1760. <td id="L255" class="blob-num js-line-number" data-line-number="255"></td>
  1761. <td id="LC255" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">currentPagePath</span> <span class="pl-k">==</span> <span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>id<span class="pl-pds">&#39;</span></span>]) <span class="pl-smi">$class</span> <span class="pl-k">.=</span> <span class="pl-s"><span class="pl-pds">&#39;</span> is-current<span class="pl-pds">&#39;</span></span>;</span></td>
  1762. </tr>
  1763. <tr>
  1764. <td id="L256" class="blob-num js-line-number" data-line-number="256"></td>
  1765. <td id="LC256" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">if</span> (<span class="pl-c1">strpos</span>(<span class="pl-smi">$this</span><span class="pl-k">-&gt;</span><span class="pl-smi">currentPagePath</span>, <span class="pl-smi">$page</span>[<span class="pl-s"><span class="pl-pds">&#39;</span>id<span class="pl-pds">&#39;</span></span>]) <span class="pl-k">===</span> <span class="pl-c1">0</span>) <span class="pl-smi">$class</span> <span class="pl-k">.=</span> <span class="pl-s"><span class="pl-pds">&#39;</span> is-active<span class="pl-pds">&#39;</span></span>;</span></td>
  1766. </tr>
  1767. <tr>
  1768. <td id="L257" class="blob-num js-line-number" data-line-number="257"></td>
  1769. <td id="LC257" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"></span></td>
  1770. </tr>
  1771. <tr>
  1772. <td id="L258" class="blob-num js-line-number" data-line-number="258"></td>
  1773. <td id="LC258" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$html</span> <span class="pl-k">.=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;li class=<span class="pl-cce">\&quot;</span><span class="pl-smi">$class</span><span class="pl-cce">\&quot;</span>&gt;<span class="pl-smi">$item$childsOutput</span>&lt;/li&gt;<span class="pl-pds">&quot;</span></span>;</span></td>
  1774. </tr>
  1775. <tr>
  1776. <td id="L259" class="blob-num js-line-number" data-line-number="259"></td>
  1777. <td id="LC259" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1778. </tr>
  1779. <tr>
  1780. <td id="L260" class="blob-num js-line-number" data-line-number="260"></td>
  1781. <td id="LC260" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-smi">$html</span> <span class="pl-k">.=</span> <span class="pl-s"><span class="pl-pds">&#39;</span>&lt;/ul&gt;<span class="pl-pds">&#39;</span></span>;</span></td>
  1782. </tr>
  1783. <tr>
  1784. <td id="L261" class="blob-num js-line-number" data-line-number="261"></td>
  1785. <td id="LC261" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> <span class="pl-k">return</span> <span class="pl-smi">$html</span>;</span></td>
  1786. </tr>
  1787. <tr>
  1788. <td id="L262" class="blob-num js-line-number" data-line-number="262"></td>
  1789. <td id="LC262" class="blob-code blob-code-inner js-file-line"><span class="pl-s1"> }</span></td>
  1790. </tr>
  1791. <tr>
  1792. <td id="L263" class="blob-num js-line-number" data-line-number="263"></td>
  1793. <td id="LC263" class="blob-code blob-code-inner js-file-line"><span class="pl-s1">}</span></td>
  1794. </tr>
  1795. </table>
  1796.  
  1797. <details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
  1798. <summary class="btn-octicon ml-0 px-2 p-0 bg-white border border-gray-dark rounded-1" aria-label="Inline file action toolbar">
  1799. <svg class="octicon octicon-kebab-horizontal" viewBox="0 0 13 16" version="1.1" width="13" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zm5 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3zM13 7.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z"/></svg>
  1800. </summary>
  1801. <details-menu>
  1802. <ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se mt-2" style="width:185px">
  1803. <li>
  1804. <clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;">
  1805. Copy lines
  1806. </clipboard-copy>
  1807. </li>
  1808. <li>
  1809. <clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;">
  1810. Copy permalink
  1811. </clipboard-copy>
  1812. </li>
  1813. <li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/nliautaud/pico-pages-list/blame/ead799adc5724ffdac095c173633d6837b4145c2/PicoPagesList.php">View git blame</a></li>
  1814. <li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/nliautaud/pico-pages-list/issues/new">Reference in new issue</a></li>
  1815. </ul>
  1816. </details-menu>
  1817. </details>
  1818.  
  1819. </div>
  1820.  
  1821. </div>
  1822.  
  1823.  
  1824.  
  1825. <details class="details-reset details-overlay details-overlay-dark">
  1826. <summary data-hotkey="l" aria-label="Jump to line"></summary>
  1827. <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
  1828. <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" />
  1829. <input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" aria-label="Jump to line" autofocus>
  1830. <button type="submit" class="btn" data-close-dialog>Go</button>
  1831. </form> </details-dialog>
  1832. </details>
  1833.  
  1834.  
  1835.  
  1836. </div>
  1837. </div>
  1838.  
  1839. </main>
  1840. </div>
  1841.  
  1842.  
  1843. </div>
  1844.  
  1845.  
  1846. <div class="footer container-lg width-full p-responsive" role="contentinfo">
  1847. <div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
  1848. <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
  1849. <li class="mr-3 mr-lg-0">&copy; 2019 <span title="0.18155s from unicorn-675464c4c6-4rzrh">GitHub</span>, Inc.</li>
  1850. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
  1851. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
  1852. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to security, text:security" href="https://github.com/security">Security</a></li>
  1853. <li class="mr-3 mr-lg-0"><a href="https://githubstatus.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
  1854. <li><a data-ga-click="Footer, go to help, text:help" href="https://help.github.com">Help</a></li>
  1855. </ul>
  1856.  
  1857. <a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com">
  1858. <svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
  1859. </a>
  1860. <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
  1861. <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
  1862. <li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
  1863. <li class="mr-3 mr-lg-0"><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
  1864. <li class="mr-3 mr-lg-0"><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
  1865. <li class="mr-3 mr-lg-0"><a href="https://github.blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
  1866. <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
  1867.  
  1868. </ul>
  1869. </div>
  1870. <div class="d-flex flex-justify-center pb-6">
  1871. <span class="f6 text-gray-light"></span>
  1872. </div>
  1873. </div>
  1874.  
  1875.  
  1876.  
  1877. <div id="ajax-error-message" class="ajax-error-message flash flash-error">
  1878. <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
  1879. <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
  1880. <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
  1881. </button>
  1882. You can’t perform that action at this time.
  1883. </div>
  1884.  
  1885.  
  1886.  
  1887. <script crossorigin="anonymous" integrity="sha512-sA+lEgnXmOy871vYNyQsifd+nFqwdkA542fF27f1ZYtoOC8jzpprt3YYIe9XtEgor4sdr2TUa0iiiyr3xGSH8A==" type="application/javascript" src="https://github.githubassets.com/assets/frameworks-dee75f37.js"></script>
  1888.  
  1889. <script crossorigin="anonymous" async="async" integrity="sha512-El+Il2131McbLNVDpFbjv/YGM//xENqFYke/1KlMEubSFqiSvRC2EjVI/6cBFIyVA3pfQLdUUDuRcsoReg3FJQ==" type="application/javascript" src="https://github.githubassets.com/assets/github-bootstrap-3cac36a3.js"></script>
  1890.  
  1891.  
  1892.  
  1893. <div class="js-stale-session-flash flash flash-warn flash-banner" hidden
  1894. >
  1895. <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg>
  1896. <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
  1897. <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
  1898. </div>
  1899. <template id="site-details-dialog">
  1900. <details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark hx_rsm" open>
  1901. <summary role="button" aria-label="Close dialog"></summary>
  1902. <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
  1903. <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
  1904. <svg class="octicon octicon-x" viewBox="0 0 12 16" version="1.1" width="12" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z"/></svg>
  1905. </button>
  1906. <div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
  1907. </details-dialog>
  1908. </details>
  1909. </template>
  1910.  
  1911. <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
  1912. <div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
  1913. </div>
  1914. </div>
  1915.  
  1916. <div aria-live="polite" class="js-global-screen-reader-notice sr-only"></div>
  1917.  
  1918. </body>
  1919. </html>
  1920.  
  1921. <br />
  1922. <b>Fatal error</b>: Uncaught RuntimeException: Unable to load plugin 'PicoPagesList' from 'PicoPagesList/PicoPagesList.php': Plugin class not found in C:\laragon\www\pico\vendor\picocms\pico\lib\Pico.php:669
  1923. Stack trace:
  1924. #0 C:\laragon\www\pico\vendor\picocms\pico\lib\Pico.php(520): Pico-&gt;loadLocalPlugins(Array)
  1925. #1 C:\laragon\www\pico\vendor\picocms\pico\lib\Pico.php(401): Pico-&gt;loadPlugins()
  1926. #2 C:\laragon\www\pico\index.php(39): Pico-&gt;run()
  1927. #3 {main}
  1928. thrown in <b>C:\laragon\www\pico\vendor\picocms\pico\lib\Pico.php</b> on line <b>669</b><br />
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement