4 Commits 0c615e38f2 ... ba868790d8

Author SHA1 Message Date
  Sv443 ba868790d8 fix: set line-height and font-size a bit bigger 4 days ago
  Sv443 ab9a20c63c docs: reword info section & add php wrapper lib 4 days ago
  Sv443 88c27e546f docs: big readme refactor & add php wrapper lib 4 days ago
  Sv443 85df208bc5 feat: add php svg icon 4 days ago
5 changed files with 217 additions and 89 deletions
  1. 36 29
      README.md
  2. 69 58
      docs/raw/index.css
  3. 10 2
      docs/raw/index.html
  4. 96 0
      docs/static/external/php.svg
  5. 6 0
      endpoints/static.js

+ 36 - 29
README.md

@@ -1,34 +1,41 @@
-# [![icon](https://sv443.net/cdn/jokeapi/icon_readme.png)](#readme)<br>JokeAPI
+<!-- unholy HTML -->
+<div style="text-align: center;" align="center">
+    <h1>
+        <a href="#readme"><img src="https://sv443.net/cdn/jokeapi/icon_readme.png" width="120" height="120"></a><br>JokeAPI<br>
+        <h3>
+            &gt; <a href="https://jokeapi.dev/" rel="noopener noreferrer">Documentation</a> &bull; <a href="https://jokeapi.dev/#try-it" rel="noopener noreferrer">Try it out</a> &bull; <a href="./changelog.md" rel="noopener noreferrer">Changelog</a> &bull; <a href="https://dc.sv443.net/" rel="noopener noreferrer">Discord Server</a> &lt;
+        </h3>
+    </h1><br>
+
+A free and open REST API that delivers consistently formatted jokes in JSON, XML, YAML, or plain text.  
+Powerful filters allow you to get just the jokes you want - no sign-up needed. Comes with CORS support.  
 
-### A REST API that serves uniformly and well formatted jokes and offers a great variety of filtering methods and response customization
-
-[![GitHub](https://img.shields.io/github/license/Sv443-Network/JokeAPI)](https://sv443.net/LICENSE)
-[![Uptime / 7 Days](https://img.shields.io/uptimerobot/ratio/7/m784261094-bff76b959ebb8fc39f7eb2d0)](https://status.sv443.net/)
-[![Open Issues](https://img.shields.io/github/issues/Sv443-Network/JokeAPI)](https://github.com/Sv443-Network/JokeAPI/issues)
-
-[![Actions Status](https://github.com/Sv443-Network/JokeAPI/workflows/build/badge.svg)](https://github.com/Sv443-Network/JokeAPI/actions)
-[![Known Vulnerabilities](https://snyk.io/test/github/Sv443-Network/JokeAPI/badge.svg)](https://snyk.io/test/github/Sv443-Network/JokeAPI)
-
-[![Discord](https://img.shields.io/discord/565933531214118942)](https://discord.gg/aBH4uRG)
-[![GitHub stars](https://img.shields.io/github/stars/Sv443-Network/JokeAPI?style=social)](https://github.com/Sv443-Network/JokeAPI/stargazers)
+<br>
 
-<br><br>
+[![API uptime the last 7 days](https://img.shields.io/uptimerobot/ratio/7/m784261094-bff76b959ebb8fc39f7eb2d0)](https://status.sv443.net/) [![Known vulnerabilities](https://snyk.io/test/github/Sv443-Network/JokeAPI/badge.svg)](https://snyk.io/test/github/Sv443-Network/JokeAPI) [![License on GitHub](https://img.shields.io/github/license/Sv443-Network/JokeAPI)](https://sv443.net/LICENSE)  
+[![Join the Discord server](https://badgen.net/discord/online-members/aBH4uRG?icon=discord)](https://dc.sv443.net/) [![Open issueson GitHub](https://img.shields.io/github/issues/Sv443-Network/JokeAPI)](https://github.com/Sv443-Network/JokeAPI/issues) [![GitHub stargazers](https://img.shields.io/github/stars/Sv443-Network/JokeAPI?style=social)](https://github.com/Sv443-Network/JokeAPI/stargazers)
 
-# [Documentation](https://jokeapi.dev/)
+</div>
 
-## [Try it out](https://jokeapi.dev/#try-it) &bull; [Changelog](./changelog.md) &bull; [Discord Server](https://dc.sv443.net/)
+<br>
 
-<br><br>
+> [!WARNING]  
+> JokeAPI contains a very wide variety of jokes, some of which can be seen as quite offensive.  
+> They can be reliably filtered out using the parameters [`?blacklistFlags`](https://jokeapi.dev/#flags-param) and [`?safe-mode`](https://jokeapi.dev/#safe-mode).  
+> Still, use this API at your own risk!
 
-### Note: due to the different types of humor, JokeAPI contains a wide variety of jokes, of which some are very offensive. They can be filtered out using the `?blacklistFlags` or `?safe-mode` parameters, but use this API at your own risk!
+> [!NOTE]  
+> Enjoying JokeAPI? It's free to use, but if you want to support the development, [please consider supporting the development.](https://github.com/sponsors/Sv443)
 
-### If you want to contribute to JokeAPI (code, jokes or translations), please refer to the [contributing guide.](./.github/Contributing.md)
+> [!NOTE]  
+> If you want to contribute to JokeAPI (code, jokes or translations), please refer to the [contributing guide.](./.github/Contributing.md)  
+> For code contributions, please refer to the repo at https://git.sv443.net/sv443/JokeAPI-v2
 
-<br><br>
+<br>
 
-# Community-made wrapper libraries:
+## Community-made wrapper libraries:
 -   <b><a href="https://github.com/DanBuxton/JokeAPI-CS-Wrapper#readme"><img src="./docs/static/external/csharp.svg" width="16" height="16" /> C#</a></b>
--   <b><a href="https://github.com/MichaelDark/jokeapi#readme"><img src="./docs/static/external/dartlang.svg" width="16" height="16" /> Dart</a></b>
+-   <b><a href="https://github.com/MichaelDark/jokeapi#readme"><img src="./docs/static/external/dart.svg" width="16" height="16" /> Dart</a></b>
 -   <b><a href="https://github.com/Icelain/jokeapi#readme"><img src="./docs/static/external/golang.svg" width="16" height="16" /> Go</a></b>
 -   <b><a href="https://github.com/the-codeboy/Jokes4J#readme"><img src="./docs/static/external/java.svg" width="16" height="16" /> Java (com.github.the-codeboy.Jokes4J)</a></b>
 -   <b><a href="https://github.com/EasyG0ing1/JavaJokesAPI#readme"><img src="./docs/static/external/java.svg" width="16" height="16" /> Java (com.simtechdata.jokeapi)</a></b>
@@ -36,13 +43,14 @@
 -   <b><a href="https://github.com/khurozov/jokeapi-java#readme"><img src="./docs/static/external/java.svg" width="16" height="16" /> Java (uz.khurozov.jokeapi-java)</a></b>
 -   <b><a href="https://github.com/sahithyandev/sv443-joke-api-js-wrapper#readme"><img src="./docs/static/external/nodejs.svg" width="16" height="16" /> Node.js</a></b>
 -   <b><a href="https://github.com/IllusionMan1212/jokeapi-odin#readme"><img src="./docs/static/external/odin.svg" width="16" height="16" /> Odin</a></b>
+-   <b><a href="https://github.com/JustPush-io/php-jokeapi#readme"><img src="./docs/static/external/php.svg" width="16" height="16" /> PHP</a></b>
 -   <b><a href="https://github.com/thenamesweretakenalready/Sv443s-JokeAPI-Python-Wrapper#readme"><img src="./docs/static/external/python.svg" width="16" height="16" /> Python</a></b>
 -   <b><a href="https://github.com/canarado/joketeller#readme"><img src="./docs/static/external/rust.svg" width="16" height="16" /> Rust</a></b>
 -   <b><a href="https://github.com/bitstep-ie/jokeapi#readme"><img src="./docs/static/external/typescript.svg" width="16" height="16" /> TypeScript</a></b>
 
 <br>
 
-# Projects that use JokeAPI:
+## Some projects that use JokeAPI:
 
 | Project                                                                                                  | Author                                                     |
 | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
@@ -60,11 +68,6 @@
 | [JokeAPI_ComputerCraft](https://github.com/Sv443-Network/JokeAPI_ComputerCraft)                                  | [Sv443](https://github.com/Sv443)                          |
 | [Dev Dad Jokes](https://github.com/jonathanbossenger/devdadjokes)                                        | [Jonathan Bossenger](https://github.com/jonathanbossenger) |
 
-<br>
-
-Project submissions are paused for the foreseeable future.
-<!-- [Submit an issue](https://github.com/Sv443-Network/JokeAPI/issues/new/choose) and select `Dependent` to get your project added here -->
-
 <!--
 Old list-style dependents:
 - [dozens Advices](https://github.com/ZephyrVentum/dozens-Advices) by [ZephyrVentum](https://github.com/ZephyrVentum)
@@ -81,7 +84,11 @@ Old list-style dependents:
 - [JokeAPI_ComputerCraft](https://github.com/Sv443-Network/JokeAPI_ComputerCraft) by [Sv443](https://github.com/Sv443)
 -->
 
-<br><br>
+<br><br><br><br>
+
+<div style="text-align: center;" align="center">
 
 Made with ❤️ by [Sv443](https://github.com/Sv443) and [contributors](https://github.com/Sv443-Network/JokeAPI/graphs/contributors)  
-Like JokeAPI? Please consider [supporting me](https://github.com/sponsors/Sv443)
+Like JokeAPI? Please consider [supporting the development](https://github.com/sponsors/Sv443)
+
+</div>

+ 69 - 58
docs/raw/index.css

@@ -27,26 +27,25 @@
     --targetblink-animation-delay: 0.5s;
 
     --scrollbar-track-color: #222;
-    --scrollbar-thumb-color: rgba(175, 175, 175, .7);
-    --scrollbar-webkit-hover-color: rgba(65, 131, 196, .8);
+    --scrollbar-thumb-color: rgba(175, 175, 175, 0.7);
+    --scrollbar-webkit-hover-color: rgba(65, 131, 196, 0.8);
 
-    --line-height: calc(100% + 4px);
+    --line-height: calc(100% + 6px);
 }
 
-@font-face { 
+@font-face {
     font-family: "Cascadia Code";
     src: url("./cascadia-code.ttf"); /* URL can't have the "./static/" path since this CSS file is already loaded from "./static/" */
 }
 
-
-
-
 #submissions-hidden {
     display: none;
 }
 
 /* #MARKER BEGIN */
-html, body, #main {
+html,
+body,
+#main {
     scroll-behavior: smooth;
 }
 
@@ -55,7 +54,7 @@ body {
     background-color: var(--bg-color);
     color: #fff;
     font-family: "Roboto", "Segoe UI", "Arial", sans-serif;
-    font-size: 17px;
+    font-size: 18px;
     line-height: var(--line-height);
     font-weight: 200;
 
@@ -85,16 +84,19 @@ body {
     color: inherit;
 }
 
-.noul, .mimica {
+.noul,
+.mimica {
     cursor: pointer;
 }
 
-a:not(.noul), .mimica:not(.noul) {
+a:not(.noul),
+.mimica:not(.noul) {
     color: #8f9aff;
     text-decoration: none;
 }
 
-a:not(.noul):hover, .mimica:not(.noul):hover {
+a:not(.noul):hover,
+.mimica:not(.noul):hover {
     color: #bcc2ff;
     text-decoration: underline;
 }
@@ -104,19 +106,13 @@ a:not(.noul):hover, .mimica:not(.noul):hover {
 }
 
 .blackshadow {
-    text-shadow:
-        -1px -1px 0 #000,  
-         1px -1px 0 #000,
-        -1px  1px 0 #000,
-         1px  1px 0 #000;
+    text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000,
+        1px 1px 0 #000;
 }
 
 .whiteshadow {
-    text-shadow:
-        -1px -1px 0 #fff,  
-         1px -1px 0 #fff,
-        -1px  1px 0 #fff,
-         1px  1px 0 #fff;
+    text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff,
+        1px 1px 0 #fff;
 }
 
 body[data-sidenav="opened"] {
@@ -152,7 +148,8 @@ body[data-sidenav="closed"] {
     background: var(--scrollbar-track-color) !important;
 }
 
-::-webkit-scrollbar-track, ::-webkit-scrollbar-corner {
+::-webkit-scrollbar-track,
+::-webkit-scrollbar-corner {
     background: var(--scrollbar-track-color) !important;
 }
 
@@ -179,18 +176,13 @@ header {
     background-color: var(--header-bg-color);
     /* background: linear-gradient(0deg, rgba(255,213,0,1) 0%, rgba(255,213,0,1) 50%, rgba(0,91,187,1) 50%, rgba(0,91,187,1) 100%); */
     color: white;
-    text-shadow: 
-        -1px -1px 0px #000,
-         0px -1px 0px #000,
-         1px -1px 0px #000,
-        -1px  0px 0px #000,
-         1px  0px 0px #000,
-        -1px  1px 0px #000,
-         0px  1px 0px #000,
-         1px  1px 0px #000;
+    text-shadow: -1px -1px 0px #000, 0px -1px 0px #000, 1px -1px 0px #000,
+        -1px 0px 0px #000, 1px 0px 0px #000, -1px 1px 0px #000, 0px 1px 0px #000,
+        1px 1px 0px #000;
     z-index: 1000;
 
-    transition: filter ease-out var(--sidenav-colorblur-speed), width linear var(--sidenav-animation-speed);
+    transition: filter ease-out var(--sidenav-colorblur-speed),
+        width linear var(--sidenav-animation-speed);
 
     display: flex;
     flex-direction: row;
@@ -260,9 +252,10 @@ header #docTitle {
     color: #fff;
     white-space: nowrap;
 
-    transition: color 0.4s linear, filter 0.2s linear, transform 0.4s cubic-bezier(0,0,.27,1.77);
+    transition: color 0.4s linear, filter 0.2s linear,
+        transform 0.4s cubic-bezier(0, 0, 0.27, 1.77);
 
-    transform: rotate(0deg) scale(1.0);
+    transform: rotate(0deg) scale(1);
     filter: none;
 }
 
@@ -288,7 +281,8 @@ header #docTitle {
     cursor: default;
 }
 
-.noa, header #docTitle:hover {
+.noa,
+header #docTitle:hover {
     text-decoration: none;
 }
 
@@ -308,6 +302,7 @@ label {
 
 .miniimg {
     height: 1.1em;
+    max-width: 1.6em;
 }
 
 .miniimg.invert {
@@ -344,7 +339,7 @@ input#f_customLang {
     border-spacing: 0;
 }
 
-.alternatingBgTable tr:nth-child(2n+1) td {
+.alternatingBgTable tr:nth-child(2n + 1) td {
     background-color: rgba(0, 0, 0, 0.2);
 }
 
@@ -360,7 +355,8 @@ input#f_customLang {
     padding-right: 10px;
 }
 
-.alternatingBgTable tr th:not(:first-child), .alternatingBgTable tr td:not(:first-child) {
+.alternatingBgTable tr th:not(:first-child),
+.alternatingBgTable tr td:not(:first-child) {
     padding: 2px 10px 2px 10px;
 }
 
@@ -374,15 +370,18 @@ input#f_customLang {
     border-style: none none none solid;
 }
 
-table tr td.g, span.col.g {
+table tr td.g,
+span.col.g {
     color: #65b365;
 }
 
-table tr td.r, span.col.r {
+table tr td.r,
+span.col.r {
     color: #ffad41;
 }
 
-table tr td.dr, span.col.dr {
+table tr td.dr,
+span.col.dr {
     color: #aa2828;
 }
 
@@ -472,7 +471,6 @@ body[data-sidenav="opened"] mark {
     transition: margin-left var(--sidenav-animation-speed);
 }
 
-
 @media (max-width: 750px) {
     #content {
         padding: 10px;
@@ -480,8 +478,10 @@ body[data-sidenav="opened"] mark {
     }
 }
 
-body[data-sidenav="closed"] code, body code {
-    font-family: "Cascadia Code", "Inconsolata", "Courier New", "Consolas", monospace;
+body[data-sidenav="closed"] code,
+body code {
+    font-family: "Cascadia Code", "Inconsolata", "Courier New", "Consolas",
+        monospace;
     font-weight: normal;
     font-variant-ligatures: none;
     font-size: 15px;
@@ -528,7 +528,7 @@ body code .nocode.codeheader {
     display: block;
     padding-top: 6px;
     padding-bottom: 4px;
-    
+
     border: 3px solid var(--accent-color);
     border-style: none none solid none;
 }
@@ -541,7 +541,8 @@ body code .nocode.codeheader::before {
 }
 
 kbd {
-    font-family: "Cascadia Code", "Inconsolata", "Roboto Mono", "Courier New", monospace;
+    font-family: "Cascadia Code", "Inconsolata", "Roboto Mono", "Courier New",
+        monospace;
     font-weight: normal;
     font-variant-ligatures: none;
     font-size: 13px;
@@ -609,7 +610,8 @@ body[data-sidenav="opened"] .requestURLwrapper {
     transition: background-color ease-out var(--sidenav-colorblur-speed);
 }
 
-.requestMethodGET, .requestMethodPUT {
+.requestMethodGET,
+.requestMethodPUT {
     display: inline-block;
     margin-right: 10px;
 
@@ -759,7 +761,7 @@ textarea {
 }
 
 #contributorsContainer .contributor .contributorContact:after {
-    content:"\a";
+    content: "\a";
     white-space: pre;
 }
 
@@ -787,7 +789,8 @@ textarea {
     line-height: initial;
 }
 
-#sidenav a, .sidenav-mimica {
+#sidenav a,
+.sidenav-mimica {
     flex-grow: 1;
 
     padding: 5px 8px 5px 32px;
@@ -798,7 +801,8 @@ textarea {
     transition: 0.3s;
 }
 
-#sidenav a:hover, .sidenav-mimica:hover {
+#sidenav a:hover,
+.sidenav-mimica:hover {
     cursor: pointer;
     color: #f1f1f1;
 }
@@ -933,8 +937,12 @@ div.sidenavSpacer {
 }
 
 @media screen and (max-height: 450px) {
-    .sidenav {padding-top: 15px;}
-    .sidenav a {font-size: 18px;}
+    .sidenav {
+        padding-top: 15px;
+    }
+    .sidenav a {
+        font-size: 18px;
+    }
 }
 
 .docHeader .headerAnchorContainer {
@@ -1000,8 +1008,7 @@ div.sidenavSpacer {
     line-height: initial;
 }
 
-.docHeader:not(:first)
-{
+.docHeader:not(:first) {
     margin-top: 50px;
 }
 
@@ -1032,7 +1039,7 @@ div.sidenavSpacer {
 }
 
 .subHeaderContainer a:hover {
-    color: rgba(188, 194, 255, 1.0);
+    color: rgba(188, 194, 255, 1);
     text-decoration: inherit;
 }
 
@@ -1110,7 +1117,9 @@ body[data-sidenav="opened"] .highlightedContainer {
     padding-left: 20px;
 }
 
-.multiselect, #urlBuilderWrapper, #resultWrapper {
+.multiselect,
+#urlBuilderWrapper,
+#resultWrapper {
     background-color: #222;
     border: 1px solid #fff;
     padding: 6px;
@@ -1118,7 +1127,9 @@ body[data-sidenav="opened"] .highlightedContainer {
     border-radius: 5px;
 }
 
-body[data-sidenav="opened"] .multiselect, body[data-sidenav="opened"] #urlBuilderWrapper, body[data-sidenav="opened"] #resultWrapper {
+body[data-sidenav="opened"] .multiselect,
+body[data-sidenav="opened"] #urlBuilderWrapper,
+body[data-sidenav="opened"] #resultWrapper {
     background-color: #555;
 }
 
@@ -1126,7 +1137,7 @@ input[disabled] {
     cursor: not-allowed;
 }
 
-input[disabled]+label {
+input[disabled] + label {
     color: #bbb;
     cursor: not-allowed;
 }

+ 10 - 2
docs/raw/index.html

@@ -102,10 +102,11 @@
                 <!-- #MARKER Information -->
                 <div class="docHeader targetBlink" id="info"><a class="headerAnchorContainer" href="#info" title="Click to link to this header">🔗</a><span class="docHeaderText">Information:</span></div>
 
-                <!--%#INSERT:NAME#%--> is a REST API that serves uniformly and well formatted jokes.<br>
+                <!--%#INSERT:NAME#%--> is a REST API that delivers consistently formatted jokes.<br>
                 It can be used <u>without any API token, membership, registration or payment.</u><br>
-                It supports a variety of filters that can be applied to get just the right jokes you need.<br>
+                It supports a wide variety of filters that can be applied to get just the right jokes for your application.<br>
                 The usage is very simple and similar to other RESTful APIs and requires only basic knowledge of HTTP requests and JSON, XML, YAML or plain text.<br>
+                If a wrapper library is available for your language, you can use that to make it even easier to communicate with <!--%#INSERT:NAME#%-->. You can find a <a href="#wrappers">list of community-made wrappers here.</a><br>
                 <br>
                 If you come across a term you don't understand, you can try <span class="mimica" onclick="openNav()">opening the menu</span> and clicking on the section "Terminology".<br>
                 <!--%#INSERT:NAME#%--> currently serves <!--%#INSERT:TOTALJOKES#%--> jokes from <!--%#INSERT:JOKELANGCOUNT#%--> different languages. To submit a new joke, <a href="#submit">please click here.</a><br>
@@ -398,6 +399,12 @@
                         <td><a href="https://github.com/IllusionMan1212/jokeapi-odin#readme" target="_blank">JokeAPI Odin wrapper</a></td>
                         <td><a href="https://github.com/IllusionMan1212" target="_blank">IllusionMan1212</a></td>
                     </tr>
+                    <tr>
+                        <td class="wrappericon"><img class="miniimg" src="static/php-icon"></td>
+                        <td>PHP</td>
+                        <td><a href="https://github.com/JustPush-io/php-jokeapi#readme" target="_blank">JokeAPI PHP</a></td>
+                        <td><a href="https://www.justpush.io/" target="_blank">JustPush.io</a></td>
+                    </tr>
                     <tr>
                         <td class="wrappericon"><img class="miniimg" src="static/python-icon"></td>
                         <td>Python</td>
@@ -1647,6 +1654,7 @@ namespace TestHttpRequest
                         <li><a href="https://about.google/" target="_blank">The Android icon</a></li>
                         <li><a href="https://microsoft.com/" target="_blank">The TypeScript icon</a></li>
                         <li><a href="https://www.gingerbill.org/" target="_blank">The Odin icon</a></li>
+                        <li><a href="https://www.php.net/download-logos.php" target="_blank">The PHP icon</a></li>
                     </ul>
                     The Sv443 Network is not endorsed by or affiliated with any of the above listed companies or legal entities.<br>
                     All icons are re-hosted to ensure stability and uniformity. They are also protected from being indexed by web crawlers.<br>

+ 96 - 0
docs/static/external/php.svg

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg height="383.5975" id="svg3430" version="1.1" viewBox="0 0 711.20123 383.5975" width="711.20123" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg">
+  <title id="title3510">Official PHP Logo</title>
+  <metadata id="metadata3436">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title>Official PHP Logo</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Colin Viebrock</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:description/>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title/>
+          </cc:Agent>
+        </dc:contributor>
+        <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/"/>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Copyright Colin Viebrock 1997 - All rights reserved.</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date>1997</dc:date>
+      </cc:Work>
+      <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
+        <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
+        <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
+        <cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/>
+        <cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/>
+        <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
+        <cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <defs id="defs3434">
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3444">
+      <path d="M 11.52,162 C 11.52,81.677 135.307,16.561 288,16.561 l 0,0 c 152.693,0 276.481,65.116 276.481,145.439 l 0,0 c 0,80.322 -123.788,145.439 -276.481,145.439 l 0,0 C 135.307,307.439 11.52,242.322 11.52,162" id="path3446"/>
+    </clipPath>
+    <radialGradient cx="0" cy="0" fx="0" fy="0" gradientTransform="matrix(363.05789,0,0,-363.05789,177.52002,256.30713)" gradientUnits="userSpaceOnUse" id="radialGradient3452" r="1" spreadMethod="pad">
+      <stop id="stop3454" offset="0" style="stop-opacity:1;stop-color:#aeb2d5"/>
+      <stop id="stop3456" offset="0.3" style="stop-opacity:1;stop-color:#aeb2d5"/>
+      <stop id="stop3458" offset="0.75" style="stop-opacity:1;stop-color:#484c89"/>
+      <stop id="stop3460" offset="1" style="stop-opacity:1;stop-color:#484c89"/>
+    </radialGradient>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3468">
+      <path d="M 0,324 576,324 576,0 0,0 0,324 Z" id="path3470"/>
+    </clipPath>
+    <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3480">
+      <path d="M 0,324 576,324 576,0 0,0 0,324 Z" id="path3482"/>
+    </clipPath>
+  </defs>
+  <g id="g3438" transform="matrix(1.25,0,0,-1.25,-4.4,394.29875)">
+    <g id="g3440">
+      <g clip-path="url(#clipPath3444)" id="g3442">
+        <g id="g3448">
+          <g id="g3450">
+            <path d="M 11.52,162 C 11.52,81.677 135.307,16.561 288,16.561 l 0,0 c 152.693,0 276.481,65.116 276.481,145.439 l 0,0 c 0,80.322 -123.788,145.439 -276.481,145.439 l 0,0 C 135.307,307.439 11.52,242.322 11.52,162" id="path3462" style="fill:url(#radialGradient3452);stroke:none"/>
+          </g>
+        </g>
+      </g>
+    </g>
+    <g id="g3464">
+      <g clip-path="url(#clipPath3468)" id="g3466">
+        <g id="g3472" transform="translate(288,27.3594)">
+          <path d="M 0,0 C 146.729,0 265.68,60.281 265.68,134.641 265.68,209 146.729,269.282 0,269.282 -146.729,269.282 -265.68,209 -265.68,134.641 -265.68,60.281 -146.729,0 0,0" id="path3474" style="fill:#777bb3;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+      </g>
+    </g>
+    <g id="g3476">
+      <g clip-path="url(#clipPath3480)" id="g3478">
+        <g id="g3484" transform="translate(161.7344,145.3066)">
+          <path d="m 0,0 c 12.065,0 21.072,2.225 26.771,6.611 5.638,4.341 9.532,11.862 11.573,22.353 1.903,9.806 1.178,16.653 -2.154,20.348 C 32.783,53.086 25.417,55 14.297,55 L -4.984,55 -15.673,0 0,0 Z m -63.063,-67.75 c -0.895,0 -1.745,0.4 -2.314,1.092 -0.57,0.691 -0.801,1.601 -0.63,2.48 L -37.679,81.573 C -37.405,82.982 -36.17,84 -34.734,84 L 26.32,84 C 45.508,84 59.79,78.79 68.767,68.513 77.792,58.182 80.579,43.741 77.05,25.592 75.614,18.198 73.144,11.331 69.709,5.183 66.27,-0.972 61.725,-6.667 56.198,-11.747 49.582,-17.939 42.094,-22.429 33.962,-25.071 25.959,-27.678 15.681,-29 3.414,-29 l -24.722,0 -7.06,-36.322 c -0.274,-1.41 -1.508,-2.428 -2.944,-2.428 l -31.751,0 z" id="path3486" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+        <g id="g3488" transform="translate(159.2236,197.3071)">
+          <path d="m 0,0 16.808,0 c 13.421,0 18.083,-2.945 19.667,-4.7 2.628,-2.914 3.124,-9.058 1.435,-17.767 C 36.012,-32.217 32.494,-39.13 27.452,-43.012 22.29,-46.986 13.898,-49 2.511,-49 L -9.523,-49 0,0 Z m 28.831,35 -61.055,0 c -2.872,0 -5.341,-2.036 -5.889,-4.855 l -28.328,-145.751 c -0.342,-1.759 0.12,-3.578 1.259,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 31.75,0 c 2.873,0 5.342,2.036 5.89,4.855 l 6.588,33.895 22.249,0 c 12.582,0 23.174,1.372 31.479,4.077 8.541,2.775 16.399,7.48 23.354,13.984 5.752,5.292 10.49,11.232 14.08,17.657 3.591,6.427 6.171,13.594 7.668,21.302 3.715,19.104 0.697,34.402 -8.969,45.466 C 63.965,29.444 48.923,35 28.831,35 m -45.633,-90 19.313,0 c 12.801,0 22.336,2.411 28.601,7.234 6.266,4.824 10.492,12.875 12.688,24.157 2.101,10.832 1.144,18.476 -2.871,22.929 C 36.909,3.773 28.87,6 16.808,6 L -4.946,6 -16.802,-55 M 28.831,29 C 47.198,29 60.597,24.18 69.019,14.539 77.44,4.898 79.976,-8.559 76.616,-25.836 75.233,-32.953 72.894,-39.46 69.601,-45.355 66.304,-51.254 61.999,-56.648 56.679,-61.539 50.339,-67.472 43.296,-71.7 35.546,-74.218 27.796,-76.743 17.925,-78 5.925,-78 l -27.196,0 -7.531,-38.75 -31.75,0 28.328,145.75 61.055,0" id="path3490" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+        <g id="g3492" transform="translate(311.583,116.3066)">
+          <path d="m 0,0 c -0.896,0 -1.745,0.4 -2.314,1.092 -0.571,0.691 -0.802,1.6 -0.631,2.48 L 9.586,68.061 C 10.778,74.194 10.484,78.596 8.759,80.456 7.703,81.593 4.531,83.5 -4.848,83.5 L -27.55,83.5 -43.305,2.428 C -43.579,1.018 -44.814,0 -46.25,0 l -31.5,0 c -0.896,0 -1.745,0.4 -2.315,1.092 -0.57,0.691 -0.801,1.601 -0.63,2.48 l 28.328,145.751 c 0.274,1.409 1.509,2.427 2.945,2.427 l 31.5,0 c 0.896,0 1.745,-0.4 2.315,-1.091 0.57,-0.692 0.801,-1.601 0.63,-2.481 L -21.813,113 2.609,113 c 18.605,0 31.221,-3.28 38.569,-10.028 7.49,-6.884 9.827,-17.891 6.947,-32.719 L 34.945,2.428 C 34.671,1.018 33.437,0 32,0 L 0,0 Z" id="path3494" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+        <g id="g3496" transform="translate(293.6611,271.0571)">
+          <path d="m 0,0 -31.5,0 c -2.873,0 -5.342,-2.036 -5.89,-4.855 l -28.328,-145.751 c -0.342,-1.759 0.12,-3.578 1.26,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 31.5,0 c 2.872,0 5.342,2.036 5.89,4.855 l 15.283,78.645 20.229,0 c 9.363,0 11.328,-2 11.407,-2.086 0.568,-0.611 1.315,-3.441 0.082,-9.781 l -12.531,-64.489 c -0.342,-1.759 0.12,-3.578 1.26,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 32,0 c 2.872,0 5.342,2.036 5.89,4.855 l 13.179,67.825 c 3.093,15.921 0.447,27.864 -7.861,35.5 -7.928,7.281 -21.208,10.82 -40.599,10.82 l -20.784,0 6.143,31.605 C 6.231,-5.386 5.77,-3.566 4.63,-2.184 3.49,-0.801 1.792,0 0,0 m 0,-6 -7.531,-38.75 28.062,0 c 17.657,0 29.836,-3.082 36.539,-9.238 6.703,-6.16 8.711,-16.141 6.032,-29.938 l -13.18,-67.824 -32,0 12.531,64.488 c 1.426,7.336 0.902,12.34 -1.574,15.008 -2.477,2.668 -7.746,4.004 -15.805,4.004 l -25.176,0 -16.226,-83.5 -31.5,0 L -31.5,-6 0,-6" id="path3498" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+        <g id="g3500" transform="translate(409.5498,145.3066)">
+          <path d="m 0,0 c 12.065,0 21.072,2.225 26.771,6.611 5.638,4.34 9.532,11.861 11.574,22.353 1.903,9.806 1.178,16.653 -2.155,20.348 C 32.783,53.086 25.417,55 14.297,55 L -4.984,55 -15.673,0 0,0 Z m -63.062,-67.75 c -0.895,0 -1.745,0.4 -2.314,1.092 -0.57,0.691 -0.802,1.601 -0.631,2.48 L -37.679,81.573 C -37.404,82.982 -36.17,84 -34.733,84 L 26.32,84 C 45.509,84 59.79,78.79 68.768,68.513 77.793,58.183 80.579,43.742 77.051,25.592 75.613,18.198 73.144,11.331 69.709,5.183 66.27,-0.972 61.725,-6.667 56.198,-11.747 49.582,-17.939 42.094,-22.429 33.962,-25.071 25.959,-27.678 15.681,-29 3.414,-29 l -24.723,0 -7.057,-36.322 c -0.275,-1.41 -1.509,-2.428 -2.946,-2.428 l -31.75,0 z" id="path3502" style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+        <g id="g3504" transform="translate(407.0391,197.3071)">
+          <path d="M 0,0 16.808,0 C 30.229,0 34.891,-2.945 36.475,-4.7 39.104,-7.614 39.6,-13.758 37.91,-22.466 36.012,-32.217 32.493,-39.13 27.452,-43.012 22.29,-46.986 13.898,-49 2.511,-49 L -9.522,-49 0,0 Z m 28.831,35 -61.054,0 c -2.872,0 -5.341,-2.036 -5.889,-4.855 L -66.44,-115.606 c -0.342,-1.759 0.12,-3.578 1.259,-4.961 1.14,-1.383 2.838,-2.183 4.63,-2.183 l 31.75,0 c 2.872,0 5.342,2.036 5.89,4.855 l 6.587,33.895 22.249,0 c 12.582,0 23.174,1.372 31.479,4.077 8.541,2.775 16.401,7.481 23.356,13.986 5.752,5.291 10.488,11.23 14.078,17.655 3.591,6.427 6.171,13.594 7.668,21.302 3.715,19.105 0.697,34.403 -8.969,45.467 C 63.965,29.444 48.924,35 28.831,35 m -45.632,-90 19.312,0 c 12.801,0 22.336,2.411 28.601,7.234 6.267,4.824 10.492,12.875 12.688,24.157 2.102,10.832 1.145,18.476 -2.871,22.929 C 36.909,3.773 28.87,6 16.808,6 L -4.946,6 -16.801,-55 M 28.831,29 C 47.198,29 60.597,24.18 69.019,14.539 77.441,4.898 79.976,-8.559 76.616,-25.836 75.233,-32.953 72.894,-39.46 69.601,-45.355 66.304,-51.254 61.999,-56.648 56.679,-61.539 50.339,-67.472 43.296,-71.7 35.546,-74.218 27.796,-76.743 17.925,-78 5.925,-78 l -27.196,0 -7.53,-38.75 -31.75,0 28.328,145.75 61.054,0" id="path3506" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>

+ 6 - 0
endpoints/static.js

@@ -126,6 +126,12 @@ const call = (req, res, url, params, format) => {
             allowEncoding = false;
             mimeType = "image/svg+xml";
             break;
+        case "php-icon":
+            filePath = `${settings.documentation.dirPath}static/external/php.svg`;
+            statusCode = 200;
+            allowEncoding = false;
+            mimeType = "image/svg+xml";
+            break;
         default:
             requestedFile = "fallback_err_404";
             filePath = settings.documentation.error404path;