From abff2cba9ba6117ff00d6a017b7a88058fea16a0 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Mon, 24 Nov 2025 18:33:54 +0100 Subject: [PATCH 01/75] style d'impression --- assets/css/panel.css | 10 +++--- assets/css/src/generic.css | 3 ++ assets/css/src/print.css | 69 +++++++++++++++++++++++++++++++------- site/templates/linear.php | 4 +++ 4 files changed, 68 insertions(+), 18 deletions(-) diff --git a/assets/css/panel.css b/assets/css/panel.css index 33ce206..3b53cbb 100644 --- a/assets/css/panel.css +++ b/assets/css/panel.css @@ -1,12 +1,12 @@ .k-panel-menu { - background-color: var(--color-primary); + background-color: #000; } .k-panel-menu * { - color: var(--color-background); + color: #fff; } .k-panel-menu-button[aria-current] * { - color: var(--color-primary); + color: #000; } .k-panel[data-template="year"] .k-list-items .k-item:first-child { @@ -20,6 +20,6 @@ border-radius: var(--rounded-md) var(--rounded-md) 0 0; transform: translateY(0.3rem); - background-color: var(--color-primary); - color: var(--color-background); + background-color: #000; + color: #fff; } diff --git a/assets/css/src/generic.css b/assets/css/src/generic.css index 99508e2..bd94abc 100644 --- a/assets/css/src/generic.css +++ b/assets/css/src/generic.css @@ -138,5 +138,8 @@ button.less::after { width: 100%; margin-top: calc(var(--unit--vertical) / 2); } +.only-print{ + display: none; +} diff --git a/assets/css/src/print.css b/assets/css/src/print.css index 25c61bc..c608b47 100644 --- a/assets/css/src/print.css +++ b/assets/css/src/print.css @@ -1,8 +1,18 @@ @media print { /* Hide header / footer infos. */ + * { + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + } + @page { - margin: 0; + /*variable pas supporter dans les marges...*/ + /* + --unit--horizontal: 2.5vw; + --unit--vertical: 1.7rem; + */ + margin: 2.5vw 1.7rem; size: auto; @top-left { @@ -25,38 +35,58 @@ content: none; } } + .only-print{ + display: block; + } - .panel, nav { - display: none; + .panel, nav, .main-edito-btn, .theme-toggler, .page-cover .links, + [data-template="home"] .title-wrapper button.open-nav, #nav-overlay{ + display: none !important; } /* regle du light mode dupliqué*/ :root { - --color-background: #ffffff; - --color-primary: #000; + --color-background: #ffffff !important; + --color-primary: #000 !important; --color-secondary-rgb: 140, 140, 140; --font-weight-light: 240; + + --unit--vertical: 2cm; } body { - padding-top: 4rem; background-image: none; background-color: var(--color-background) !important; } - + #main-header { + position: relative; + page-break-after: always; + padding-top: 0; + } .minimized #inactuel{ transform: none !important; margin: 0 !important; } + #logo *{ + font-size: 27.3vw; + } #logo h1{ display: grid; grid-template-columns: 100%; grid-template-rows: auto; } + #logo span{ + padding: 0; + } #logo #actuel, #logo #inactuel{ grid-column: 1; grid-row: 1; } + [data-theme="light"] #logo #actuel, [data-theme="dark"] #logo #actuel, + [data-theme="light"] #logo #inactuel, [data-theme="dark"] #logo #inactuel{ + mix-blend-mode: normal; + } + #logo #actuel { font-weight: 550; color: rgb(254, 250, 254) !important; @@ -66,16 +96,19 @@ #logo #inactuel { z-index: 0; } + .page-cover{ + padding-top: 0; + position: absolute; + bottom: 0; + left: 0; + height: auto; + page-break-after: always; + } .main-title.fs-xxl { font-size: 7rem !important; line-height: 1 !important; } - - #main-header { - position: relative; - } - #entry-btns { display: none; } @@ -85,7 +118,17 @@ } article #main-content { - width: 60%; + /* width: 60%; */ margin: auto; } + main { + padding-left: 0; + } + /* .url{ + position: absolute; + transform: rotate(90deg); + transform-origin: top left; + bottom: 0; + right: 0; + } */ } diff --git a/site/templates/linear.php b/site/templates/linear.php index beab9b3..cd94c5e 100644 --- a/site/templates/linear.php +++ b/site/templates/linear.php @@ -20,6 +20,10 @@ / category() ?>

+

+ imprimé le format('d/m/Y'); ?>
+ url() ?> +

From d365abfdb9e6033ce690482d981f45292b62ad6d Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Thu, 27 Nov 2025 14:17:05 +0100 Subject: [PATCH 02/75] initialisation of the plugin web2print --- site/plugins/your-plugin/.editorconfig | 20 +++ site/plugins/your-plugin/.gitattributes | 11 ++ site/plugins/your-plugin/.gitignore | 14 +++ site/plugins/your-plugin/LICENSE.md | 21 ++++ site/plugins/your-plugin/README.md | 117 ++++++++++++++++++ site/plugins/your-plugin/SECURITY.md | 18 +++ site/plugins/your-plugin/composer.json | 21 ++++ site/plugins/your-plugin/composer.lock | 66 ++++++++++ site/plugins/your-plugin/index.css | 2 + site/plugins/your-plugin/index.js | 40 ++++++ site/plugins/your-plugin/index.php | 7 ++ site/plugins/your-plugin/package.json | 12 ++ .../src/components/DemoSection.vue | 17 +++ site/plugins/your-plugin/src/index.js | 7 ++ 14 files changed, 373 insertions(+) create mode 100644 site/plugins/your-plugin/.editorconfig create mode 100644 site/plugins/your-plugin/.gitattributes create mode 100644 site/plugins/your-plugin/.gitignore create mode 100644 site/plugins/your-plugin/LICENSE.md create mode 100644 site/plugins/your-plugin/README.md create mode 100644 site/plugins/your-plugin/SECURITY.md create mode 100644 site/plugins/your-plugin/composer.json create mode 100644 site/plugins/your-plugin/composer.lock create mode 100644 site/plugins/your-plugin/index.css create mode 100644 site/plugins/your-plugin/index.js create mode 100644 site/plugins/your-plugin/index.php create mode 100644 site/plugins/your-plugin/package.json create mode 100644 site/plugins/your-plugin/src/components/DemoSection.vue create mode 100644 site/plugins/your-plugin/src/index.js diff --git a/site/plugins/your-plugin/.editorconfig b/site/plugins/your-plugin/.editorconfig new file mode 100644 index 0000000..3b762c9 --- /dev/null +++ b/site/plugins/your-plugin/.editorconfig @@ -0,0 +1,20 @@ +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.php] +indent_size = 4 + +[*.md,*.txt] +trim_trailing_whitespace = false +insert_final_newline = false + +[composer.json] +indent_size = 4 diff --git a/site/plugins/your-plugin/.gitattributes b/site/plugins/your-plugin/.gitattributes new file mode 100644 index 0000000..033ba13 --- /dev/null +++ b/site/plugins/your-plugin/.gitattributes @@ -0,0 +1,11 @@ +# Note: You need to uncomment the lines you want to use; the other lines can be deleted + +# Git +# .gitattributes export-ignore +# .gitignore export-ignore + +# Tests +# /.coveralls.yml export-ignore +# /.travis.yml export-ignore +# /phpunit.xml.dist export-ignore +# /tests/ export-ignore diff --git a/site/plugins/your-plugin/.gitignore b/site/plugins/your-plugin/.gitignore new file mode 100644 index 0000000..4d81cf5 --- /dev/null +++ b/site/plugins/your-plugin/.gitignore @@ -0,0 +1,14 @@ +# OS files +.DS_Store + +# npm modules +/node_modules + +# Parcel cache folder +.cache + +# Composer files +/vendor + +# kirbyup temp development entry +/index.dev.mjs diff --git a/site/plugins/your-plugin/LICENSE.md b/site/plugins/your-plugin/LICENSE.md new file mode 100644 index 0000000..8e663d7 --- /dev/null +++ b/site/plugins/your-plugin/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/site/plugins/your-plugin/README.md b/site/plugins/your-plugin/README.md new file mode 100644 index 0000000..ad2b202 --- /dev/null +++ b/site/plugins/your-plugin/README.md @@ -0,0 +1,117 @@ +# Kirby Pluginkit: Example plugin for Kirby + +> Variant "Panel plugin setup" + +This is a boilerplate for a Kirby Panel plugin that can be installed via all three [supported installation methods](https://getkirby.com/docs/guide/plugins/plugin-setup-basic#the-three-plugin-installation-methods). + +You can find a list of Pluginkit variants on the [`master` branch](https://github.com/getkirby/pluginkit/tree/master). + +**** + +## How to use the Pluginkit + +1. Fork this repository +2. Change the plugin name and description in the `composer.json` +3. Change the plugin name in the `index.php` and `src/index.js` +4. Change the license if you don't want to publish under MIT +5. Add your plugin code to the `index.php` and `src/index.js` +6. Update this `README` with instructions for your plugin + +### Install the development and build setup + +We use [kirbyup](https://github.com/johannschopplich/kirbyup) for the development and build setup. + +You can start developing directly. kirbyup will be fetched remotely with your first `npm run` command, which may take a short amount of time. + +### Development + +You can start the dev process with: + +```bash +npm run dev +``` + +This will automatically update the `index.js` and `index.css` of your plugin as soon as you make changes. +Reload the Panel to see your code changes reflected. + +With kirbyup 2.0.0+ and Kirby 3.7.4+ you can alternatively use hot module reloading (HMR): + +```bash +npm run serve +``` + +This will start a development server that updates the page as soon as you make changes. Some updates are instant, like CSS or Vue template changes, others require a reload of the page, which happens automatically. + +> [!NOTE] +> The live reload functionality requires top level await, [which is only supported in modern browsers](https://caniuse.com/mdn-javascript_operators_await_top_level). If you're developing in older browsers, use `npm run dev` and reload the page manually to see changes. + +### Production + +As soon as you are happy with your plugin, you should build the final version with: + +```bash +npm run build +``` + +This will automatically create a minified and optimized version of your `index.js` and `index.css` +which you can ship with your plugin. + +We have a tutorial on how to build your own plugin based on the Pluginkit [in the Kirby documentation](https://getkirby.com/docs/guide/plugins/plugin-setup-basic). + +### Build reproducibility + +While kirbyup will stay backwards compatible, exact build reproducibility may be of importance to you. If so, we recommend to target a specific package version, rather than using npx: + +```json +{ + "scripts": { + "dev": "kirbyup src/index.js --watch", + "build": "kirbyup src/index.js" + }, + "devDependencies": { + "kirbyup": "^3.1.0" + } +} +``` + +What follows is an example README for your plugin. + +**** + +## Installation + +### Download + +Download and copy this repository to `/site/plugins/{{ plugin-name }}`. + +### Git submodule + +```bash +git submodule add https://github.com/{{ your-name }}/{{ plugin-name }}.git site/plugins/{{ plugin-name }} +``` + +### Composer + +```bash +composer require {{ your-name }}/{{ plugin-name }} +``` + +## Setup + +*Additional instructions on how to configure the plugin (e.g. blueprint setup, config options, etc.)* + +## Options + +*Document the options and APIs that this plugin offers* + +## Development + +*Add instructions on how to help working on the plugin (e.g. npm setup, Composer dev dependencies, etc.)* + +## License + +MIT + +## Credits + +- [Your Name](https://github.com/ghost) diff --git a/site/plugins/your-plugin/SECURITY.md b/site/plugins/your-plugin/SECURITY.md new file mode 100644 index 0000000..3726336 --- /dev/null +++ b/site/plugins/your-plugin/SECURITY.md @@ -0,0 +1,18 @@ +# Security Policy + +## Supported Versions + +*Use this section to tell people about which versions of your project are currently being supported with security updates.* + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +*Use this section to tell people how to report a vulnerability.* + +*Tell them where to go, how often they can expect to get an update on a reported vulnerability, what to expect if the vulnerability is accepted or declined, etc.* diff --git a/site/plugins/your-plugin/composer.json b/site/plugins/your-plugin/composer.json new file mode 100644 index 0000000..fa07b14 --- /dev/null +++ b/site/plugins/your-plugin/composer.json @@ -0,0 +1,21 @@ +{ + "name": "getkirby/pluginkit", + "description": "Kirby Example Plugin", + "license": "MIT", + "type": "kirby-plugin", + "version": "1.0.0", + "authors": [ + { + "name": "Your Name", + "email": "you@example.com" + } + ], + "require": { + "getkirby/composer-installer": "^1.1" + }, + "config": { + "allow-plugins": { + "getkirby/composer-installer": true + } + } +} diff --git a/site/plugins/your-plugin/composer.lock b/site/plugins/your-plugin/composer.lock new file mode 100644 index 0000000..a5ae0fa --- /dev/null +++ b/site/plugins/your-plugin/composer.lock @@ -0,0 +1,66 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "37a8e61308b9b6f49cb9835f477f0c64", + "packages": [ + { + "name": "getkirby/composer-installer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/getkirby/composer-installer.git", + "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getkirby/composer-installer/zipball/c98ece30bfba45be7ce457e1102d1b169d922f3d", + "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^1.8 || ^2.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Kirby\\ComposerInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "Kirby\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Kirby's custom Composer installer for the Kirby CMS and for Kirby plugins", + "homepage": "https://getkirby.com", + "support": { + "issues": "https://github.com/getkirby/composer-installer/issues", + "source": "https://github.com/getkirby/composer-installer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://getkirby.com/buy", + "type": "custom" + } + ], + "time": "2020-12-28T12:54:39+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/site/plugins/your-plugin/index.css b/site/plugins/your-plugin/index.css new file mode 100644 index 0000000..d9c4995 --- /dev/null +++ b/site/plugins/your-plugin/index.css @@ -0,0 +1,2 @@ + +/** Put your CSS here **/ diff --git a/site/plugins/your-plugin/index.js b/site/plugins/your-plugin/index.js new file mode 100644 index 0000000..89fa8b4 --- /dev/null +++ b/site/plugins/your-plugin/index.js @@ -0,0 +1,40 @@ +(function() { + "use strict"; + function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { + var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports; + if (render) { + options.render = render; + options.staticRenderFns = staticRenderFns; + options._compiled = true; + } + return { + exports: scriptExports, + options + }; + } + const _sfc_main = { + // Put your section logic here + }; + var _sfc_render = function render() { + var _vm = this; + _vm._self._c; + return _vm._m(0); + }; + var _sfc_staticRenderFns = [function() { + var _vm = this, _c = _vm._self._c; + return _c("section", { staticClass: "k-demo-section" }, [_c("header", { staticClass: "k-section-header" }, [_c("h2", { staticClass: "k-headline" }, [_vm._v("Your custom section")])])]); + }]; + _sfc_render._withStripped = true; + var __component__ = /* @__PURE__ */ normalizeComponent( + _sfc_main, + _sfc_render, + _sfc_staticRenderFns + ); + __component__.options.__file = "C:/Users/anton/Desktop/studioVariable/actuelleInactuelle/actuel-inactuel/site/plugins/your-plugin/src/components/DemoSection.vue"; + const DemoSection = __component__.exports; + window.panel.plugin("getkirby/pluginkit", { + sections: { + demo: DemoSection + } + }); +})(); diff --git a/site/plugins/your-plugin/index.php b/site/plugins/your-plugin/index.php new file mode 100644 index 0000000..e4f92c0 --- /dev/null +++ b/site/plugins/your-plugin/index.php @@ -0,0 +1,7 @@ + [ + 'demo' => [] + ], +]); diff --git a/site/plugins/your-plugin/package.json b/site/plugins/your-plugin/package.json new file mode 100644 index 0000000..1913c34 --- /dev/null +++ b/site/plugins/your-plugin/package.json @@ -0,0 +1,12 @@ +{ + "name": "getkirby/pluginkit", + "description": "Kirby Example Plugin", + "license": "MIT", + "type": "kirby-plugin", + "version": "1.0.0", + "scripts": { + "dev": "npx -y kirbyup src/index.js --watch", + "serve": "npx -y kirbyup serve src/index.js", + "build": "npx -y kirbyup src/index.js" + } +} diff --git a/site/plugins/your-plugin/src/components/DemoSection.vue b/site/plugins/your-plugin/src/components/DemoSection.vue new file mode 100644 index 0000000..b8e211a --- /dev/null +++ b/site/plugins/your-plugin/src/components/DemoSection.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/site/plugins/your-plugin/src/index.js b/site/plugins/your-plugin/src/index.js new file mode 100644 index 0000000..1c6306a --- /dev/null +++ b/site/plugins/your-plugin/src/index.js @@ -0,0 +1,7 @@ +import DemoSection from "./components/DemoSection.vue"; + +window.panel.plugin("getkirby/pluginkit", { + sections: { + demo: DemoSection + } +}); From 7d3d20d006a5e77f28fe0264783c2aecda88d4ea Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Fri, 28 Nov 2025 14:40:57 +0100 Subject: [PATCH 03/75] fin du tuto, les vrais galere commence --- site/blueprints/pages/author.yml | 2 + site/plugins/your-plugin/index.js | 2 +- site/plugins/your-plugin/index.php | 17 ++++++- .../src/components/DemoSection.vue | 51 +++++++++++++++++-- site/plugins/your-plugin/src/index.js | 2 +- 5 files changed, 66 insertions(+), 8 deletions(-) diff --git a/site/blueprints/pages/author.yml b/site/blueprints/pages/author.yml index 7860b89..f17f9f2 100644 --- a/site/blueprints/pages/author.yml +++ b/site/blueprints/pages/author.yml @@ -8,6 +8,8 @@ tabs: presentationSection: type: fields fields: + demo: + type: demo presentation: extends: fields/body label: Présentation diff --git a/site/plugins/your-plugin/index.js b/site/plugins/your-plugin/index.js index 89fa8b4..8b85eda 100644 --- a/site/plugins/your-plugin/index.js +++ b/site/plugins/your-plugin/index.js @@ -22,7 +22,7 @@ }; var _sfc_staticRenderFns = [function() { var _vm = this, _c = _vm._self._c; - return _c("section", { staticClass: "k-demo-section" }, [_c("header", { staticClass: "k-section-header" }, [_c("h2", { staticClass: "k-headline" }, [_vm._v("Your custom section")])])]); + return _c("section", { staticClass: "k-demo-section" }, [_c("header", { staticClass: "k-section-header" }, [_c("h2", { staticClass: "k-headline" }, [_vm._v("Test")])])]); }]; _sfc_render._withStripped = true; var __component__ = /* @__PURE__ */ normalizeComponent( diff --git a/site/plugins/your-plugin/index.php b/site/plugins/your-plugin/index.php index e4f92c0..1be738a 100644 --- a/site/plugins/your-plugin/index.php +++ b/site/plugins/your-plugin/index.php @@ -1,7 +1,20 @@ [ - 'demo' => [] + 'fields' => [ + 'demo' => [ + 'props' => [ + 'value' => function ($value = null) { + $margins = Yaml::decode($value); + return [ + 'top' => 0, + 'right' => 0, + 'bottom' => 0, + 'left' => 0, + ...$margins + ]; + } + ] + ] ], ]); diff --git a/site/plugins/your-plugin/src/components/DemoSection.vue b/site/plugins/your-plugin/src/components/DemoSection.vue index b8e211a..02accdc 100644 --- a/site/plugins/your-plugin/src/components/DemoSection.vue +++ b/site/plugins/your-plugin/src/components/DemoSection.vue @@ -1,14 +1,57 @@ diff --git a/site/plugins/your-plugin/src/index.js b/site/plugins/your-plugin/src/index.js index 1c6306a..a0895ca 100644 --- a/site/plugins/your-plugin/src/index.js +++ b/site/plugins/your-plugin/src/index.js @@ -1,7 +1,7 @@ import DemoSection from "./components/DemoSection.vue"; window.panel.plugin("getkirby/pluginkit", { - sections: { + fields: { demo: DemoSection } }); From 3df6ff186f1c4bcb9e990b94fe4ea51f8e3a29da Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Fri, 28 Nov 2025 17:58:50 +0100 Subject: [PATCH 04/75] tout doit disparaitre --- site/blueprints/pages/author.yml | 10 ++- site/plugins/your-plugin/index.css | 2 - site/plugins/your-plugin/index.js | 41 +------------ site/plugins/your-plugin/index.php | 30 ++++----- .../src/components/DemoSection.vue | 60 ------------------ .../src/components/Web2printField.vue | 61 +++++++++++++++++++ site/plugins/your-plugin/src/index.js | 6 +- 7 files changed, 86 insertions(+), 124 deletions(-) delete mode 100644 site/plugins/your-plugin/src/components/DemoSection.vue create mode 100644 site/plugins/your-plugin/src/components/Web2printField.vue diff --git a/site/blueprints/pages/author.yml b/site/blueprints/pages/author.yml index f17f9f2..598ce96 100644 --- a/site/blueprints/pages/author.yml +++ b/site/blueprints/pages/author.yml @@ -8,8 +8,14 @@ tabs: presentationSection: type: fields fields: - demo: - type: demo + + web2printTest: + type: web2print + options: + - summary + - page-number + - cover + presentation: extends: fields/body label: Présentation diff --git a/site/plugins/your-plugin/index.css b/site/plugins/your-plugin/index.css index d9c4995..e69de29 100644 --- a/site/plugins/your-plugin/index.css +++ b/site/plugins/your-plugin/index.css @@ -1,2 +0,0 @@ - -/** Put your CSS here **/ diff --git a/site/plugins/your-plugin/index.js b/site/plugins/your-plugin/index.js index 8b85eda..a149249 100644 --- a/site/plugins/your-plugin/index.js +++ b/site/plugins/your-plugin/index.js @@ -1,40 +1 @@ -(function() { - "use strict"; - function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { - var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports; - if (render) { - options.render = render; - options.staticRenderFns = staticRenderFns; - options._compiled = true; - } - return { - exports: scriptExports, - options - }; - } - const _sfc_main = { - // Put your section logic here - }; - var _sfc_render = function render() { - var _vm = this; - _vm._self._c; - return _vm._m(0); - }; - var _sfc_staticRenderFns = [function() { - var _vm = this, _c = _vm._self._c; - return _c("section", { staticClass: "k-demo-section" }, [_c("header", { staticClass: "k-section-header" }, [_c("h2", { staticClass: "k-headline" }, [_vm._v("Test")])])]); - }]; - _sfc_render._withStripped = true; - var __component__ = /* @__PURE__ */ normalizeComponent( - _sfc_main, - _sfc_render, - _sfc_staticRenderFns - ); - __component__.options.__file = "C:/Users/anton/Desktop/studioVariable/actuelleInactuelle/actuel-inactuel/site/plugins/your-plugin/src/components/DemoSection.vue"; - const DemoSection = __component__.exports; - window.panel.plugin("getkirby/pluginkit", { - sections: { - demo: DemoSection - } - }); -})(); +(function(){"use strict";function d(n,t,o,c,s,r,i,a){var e=typeof n=="function"?n.options:n;return t&&(e.render=t,e.staticRenderFns=o,e._compiled=!0),{exports:n,options:e}}const l={__name:"Web2PrintBtn",props:{htmlPageString:String},setup(n){const{htmlPageString:t}=n;async function o(){const r=await fetch("https://web2print.studio-variable.com",{method:"POST","Content-Type":"application/pdf","X-API-Key":"25377ab6e2153b159d1d5fa22501228810b6aec9d63346bd0614045dc167061c",body:{html:t}});if(r.ok){const i=await r.blob(),a=window.URL.createObjectURL(i),e=document.createElement("a");e.href=a,e.download="document.pdf",e.click()}else{const i=await r.json();console.error("Erreur:",i)}}return{__sfc:!0,getPdf:o}}};var u=function(){var t=this,o=t._self._c,c=t._self._setupProxy;return o("k-button",{attrs:{variant:"filled"},on:{click:function(s){return c.getPdf()}}},[t._v("Button")])},f=[],_=d(l,u,f);const p=_.exports;window.panel.plugin("studio-variable/web2print",{fields:{web2print:p}})})(); diff --git a/site/plugins/your-plugin/index.php b/site/plugins/your-plugin/index.php index 1be738a..2b8a31b 100644 --- a/site/plugins/your-plugin/index.php +++ b/site/plugins/your-plugin/index.php @@ -1,20 +1,16 @@ [ - 'demo' => [ - 'props' => [ - 'value' => function ($value = null) { - $margins = Yaml::decode($value); - return [ - 'top' => 0, - 'right' => 0, - 'bottom' => 0, - 'left' => 0, - ...$margins - ]; - } - ] - ] - ], +Kirby::plugin('studio-variable/web2print', [ + 'fields' => [ + 'web2print' => [ + 'props' => [ + 'options' => function ($options = []) { + return $options; + }, + 'value' => function ($value = []) { + return $value; + } + ], + ], + ], ]); diff --git a/site/plugins/your-plugin/src/components/DemoSection.vue b/site/plugins/your-plugin/src/components/DemoSection.vue deleted file mode 100644 index 02accdc..0000000 --- a/site/plugins/your-plugin/src/components/DemoSection.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - diff --git a/site/plugins/your-plugin/src/components/Web2printField.vue b/site/plugins/your-plugin/src/components/Web2printField.vue new file mode 100644 index 0000000..3d0d1af --- /dev/null +++ b/site/plugins/your-plugin/src/components/Web2printField.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/site/plugins/your-plugin/src/index.js b/site/plugins/your-plugin/src/index.js index a0895ca..288e91c 100644 --- a/site/plugins/your-plugin/src/index.js +++ b/site/plugins/your-plugin/src/index.js @@ -1,7 +1,7 @@ -import DemoSection from "./components/DemoSection.vue"; +import ToggleGroup from "./components/Web2printField.vue"; -window.panel.plugin("getkirby/pluginkit", { +window.panel.plugin("studio-variable/web2print", { fields: { - demo: DemoSection + web2print: ToggleGroup } }); From 20e305744f6a0b9f9216e26d93ac7d7ca8ea7449 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Fri, 28 Nov 2025 18:25:43 +0100 Subject: [PATCH 05/75] ajustement alignement toggle-mode ordi fix #42 --- assets/css/src/toggle-light-mode.css | 12 +- site/plugins/your-plugin/index.dev.mjs | 8 + .../node_modules/.vite/deps/_metadata.json | 8 + .../node_modules/.vite/deps/package.json | 3 + site/plugins/your-plugin/vendor/autoload.php | 25 + .../vendor/composer/ClassLoader.php | 579 ++++++ .../vendor/composer/InstalledVersions.php | 359 ++++ .../your-plugin/vendor/composer/LICENSE | 21 + .../vendor/composer/autoload_classmap.php | 10 + .../vendor/composer/autoload_namespaces.php | 9 + .../vendor/composer/autoload_psr4.php | 10 + .../vendor/composer/autoload_real.php | 36 + .../vendor/composer/autoload_static.php | 36 + .../vendor/composer/installed.json | 56 + .../your-plugin/vendor/composer/installed.php | 32 + .../getkirby/composer-installer/composer.json | 30 + .../getkirby/composer-installer/composer.lock | 1680 +++++++++++++++++ .../getkirby/composer-installer/readme.md | 104 + .../src/ComposerInstaller/CmsInstaller.php | 64 + .../src/ComposerInstaller/Installer.php | 105 ++ .../src/ComposerInstaller/Plugin.php | 59 + .../src/ComposerInstaller/PluginInstaller.php | 112 ++ 22 files changed, 3354 insertions(+), 4 deletions(-) create mode 100644 site/plugins/your-plugin/index.dev.mjs create mode 100644 site/plugins/your-plugin/node_modules/.vite/deps/_metadata.json create mode 100644 site/plugins/your-plugin/node_modules/.vite/deps/package.json create mode 100644 site/plugins/your-plugin/vendor/autoload.php create mode 100644 site/plugins/your-plugin/vendor/composer/ClassLoader.php create mode 100644 site/plugins/your-plugin/vendor/composer/InstalledVersions.php create mode 100644 site/plugins/your-plugin/vendor/composer/LICENSE create mode 100644 site/plugins/your-plugin/vendor/composer/autoload_classmap.php create mode 100644 site/plugins/your-plugin/vendor/composer/autoload_namespaces.php create mode 100644 site/plugins/your-plugin/vendor/composer/autoload_psr4.php create mode 100644 site/plugins/your-plugin/vendor/composer/autoload_real.php create mode 100644 site/plugins/your-plugin/vendor/composer/autoload_static.php create mode 100644 site/plugins/your-plugin/vendor/composer/installed.json create mode 100644 site/plugins/your-plugin/vendor/composer/installed.php create mode 100644 site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.json create mode 100644 site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.lock create mode 100644 site/plugins/your-plugin/vendor/getkirby/composer-installer/readme.md create mode 100644 site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php create mode 100644 site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php create mode 100644 site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php create mode 100644 site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php diff --git a/assets/css/src/toggle-light-mode.css b/assets/css/src/toggle-light-mode.css index d8d44ce..47b44e8 100644 --- a/assets/css/src/toggle-light-mode.css +++ b/assets/css/src/toggle-light-mode.css @@ -4,6 +4,7 @@ bottom: 0; padding: calc((var(--unit--vertical) / 2) / 2) calc(var(--unit--horizontal) / 2); margin: calc((var(--unit--vertical) / 2) / 2) calc(var(--unit--horizontal) / 2); + margin-bottom: calc(var(--unit--vertical) - ((var(--unit--vertical) / 2) / 2)); z-index: 100; } .theme-toggler-icon { @@ -19,9 +20,12 @@ -webkit-mask: var(--icon-theme-toggler) no-repeat center; } @media screen and (max-width: 640px) { -.theme-toggler-icon { - width: 1.1rem; - height: 1.1rem; -} + .theme-toggler{ + margin-bottom: calc((var(--unit--vertical) / 2) / 2); + } + .theme-toggler-icon { + width: 1.1rem; + height: 1.1rem; + } } \ No newline at end of file diff --git a/site/plugins/your-plugin/index.dev.mjs b/site/plugins/your-plugin/index.dev.mjs new file mode 100644 index 0000000..1b45508 --- /dev/null +++ b/site/plugins/your-plugin/index.dev.mjs @@ -0,0 +1,8 @@ +try { + await import("http://[::1]:5177/src/index.js"); +} catch (err) { + console.error( + "[kirbyup] Couldn't connect to the development server. Run `npm run serve` to start Vite or build the plugin with `npm run build` so Kirby uses the production version." + ); + throw err; +} diff --git a/site/plugins/your-plugin/node_modules/.vite/deps/_metadata.json b/site/plugins/your-plugin/node_modules/.vite/deps/_metadata.json new file mode 100644 index 0000000..a66f422 --- /dev/null +++ b/site/plugins/your-plugin/node_modules/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "2448440c", + "configHash": "ac82c898", + "lockfileHash": "e3b0c442", + "browserHash": "066a9804", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/site/plugins/your-plugin/node_modules/.vite/deps/package.json b/site/plugins/your-plugin/node_modules/.vite/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/site/plugins/your-plugin/node_modules/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/site/plugins/your-plugin/vendor/autoload.php b/site/plugins/your-plugin/vendor/autoload.php new file mode 100644 index 0000000..de891ee --- /dev/null +++ b/site/plugins/your-plugin/vendor/autoload.php @@ -0,0 +1,25 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var \Closure(string):void */ + private static $includeFile; + + /** @var string|null */ + private $vendorDir; + + // PSR-4 + /** + * @var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var list + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * List of PSR-0 prefixes + * + * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) + * + * @var array>> + */ + private $prefixesPsr0 = array(); + /** + * @var list + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var array + */ + private $missingClasses = array(); + + /** @var string|null */ + private $apcuPrefix; + + /** + * @var array + */ + private static $registeredLoaders = array(); + + /** + * @param string|null $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + self::initializeIncludeClosure(); + } + + /** + * @return array> + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return list + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return list + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return array Array of classname => path + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param array $classMap Class to filename map + * + * @return void + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param list|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + $paths = (array) $paths; + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param list|string $paths The PSR-0 base directories + * + * @return void + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param list|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + * + * @return void + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + * + * @return void + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + * + * @return void + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + $includeFile = self::$includeFile; + $includeFile($file); + + return true; + } + + return null; + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + /** + * Returns the currently registered loaders keyed by their corresponding vendor directories. + * + * @return array + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } + + /** + * @return void + */ + private static function initializeIncludeClosure() + { + if (self::$includeFile !== null) { + return; + } + + /** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + */ + self::$includeFile = \Closure::bind(static function($file) { + include $file; + }, null, null); + } +} diff --git a/site/plugins/your-plugin/vendor/composer/InstalledVersions.php b/site/plugins/your-plugin/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000..51e734a --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/InstalledVersions.php @@ -0,0 +1,359 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints((string) $constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ + $required = require $vendorDir.'/composer/installed.php'; + $installed[] = self::$installedByVendor[$vendorDir] = $required; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ + $required = require __DIR__ . '/installed.php'; + self::$installed = $required; + } else { + self::$installed = array(); + } + } + + if (self::$installed !== array()) { + $installed[] = self::$installed; + } + + return $installed; + } +} diff --git a/site/plugins/your-plugin/vendor/composer/LICENSE b/site/plugins/your-plugin/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/site/plugins/your-plugin/vendor/composer/autoload_classmap.php b/site/plugins/your-plugin/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..0fb0a2c --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/autoload_classmap.php @@ -0,0 +1,10 @@ + $vendorDir . '/composer/InstalledVersions.php', +); diff --git a/site/plugins/your-plugin/vendor/composer/autoload_namespaces.php b/site/plugins/your-plugin/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..15a2ff3 --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/getkirby/composer-installer/src'), +); diff --git a/site/plugins/your-plugin/vendor/composer/autoload_real.php b/site/plugins/your-plugin/vendor/composer/autoload_real.php new file mode 100644 index 0000000..ad1a32a --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/autoload_real.php @@ -0,0 +1,36 @@ +register(true); + + return $loader; + } +} diff --git a/site/plugins/your-plugin/vendor/composer/autoload_static.php b/site/plugins/your-plugin/vendor/composer/autoload_static.php new file mode 100644 index 0000000..42cf9a6 --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/autoload_static.php @@ -0,0 +1,36 @@ + + array ( + 'Kirby\\' => 6, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'Kirby\\' => + array ( + 0 => __DIR__ . '/..' . '/getkirby/composer-installer/src', + ), + ); + + public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInit37a8e61308b9b6f49cb9835f477f0c64::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit37a8e61308b9b6f49cb9835f477f0c64::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit37a8e61308b9b6f49cb9835f477f0c64::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/site/plugins/your-plugin/vendor/composer/installed.json b/site/plugins/your-plugin/vendor/composer/installed.json new file mode 100644 index 0000000..5402f5e --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/installed.json @@ -0,0 +1,56 @@ +{ + "packages": [ + { + "name": "getkirby/composer-installer", + "version": "1.2.1", + "version_normalized": "1.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/getkirby/composer-installer.git", + "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getkirby/composer-installer/zipball/c98ece30bfba45be7ce457e1102d1b169d922f3d", + "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^1.8 || ^2.0" + }, + "time": "2020-12-28T12:54:39+00:00", + "type": "composer-plugin", + "extra": { + "class": "Kirby\\ComposerInstaller\\Plugin" + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Kirby\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Kirby's custom Composer installer for the Kirby CMS and for Kirby plugins", + "homepage": "https://getkirby.com", + "support": { + "issues": "https://github.com/getkirby/composer-installer/issues", + "source": "https://github.com/getkirby/composer-installer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://getkirby.com/buy", + "type": "custom" + } + ], + "install-path": "../getkirby/composer-installer" + } + ], + "dev": true, + "dev-package-names": [] +} diff --git a/site/plugins/your-plugin/vendor/composer/installed.php b/site/plugins/your-plugin/vendor/composer/installed.php new file mode 100644 index 0000000..06008bc --- /dev/null +++ b/site/plugins/your-plugin/vendor/composer/installed.php @@ -0,0 +1,32 @@ + array( + 'name' => 'getkirby/pluginkit', + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'reference' => null, + 'type' => 'kirby-plugin', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => true, + ), + 'versions' => array( + 'getkirby/composer-installer' => array( + 'pretty_version' => '1.2.1', + 'version' => '1.2.1.0', + 'reference' => 'c98ece30bfba45be7ce457e1102d1b169d922f3d', + 'type' => 'composer-plugin', + 'install_path' => __DIR__ . '/../getkirby/composer-installer', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'getkirby/pluginkit' => array( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'reference' => null, + 'type' => 'kirby-plugin', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + ), +); diff --git a/site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.json b/site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.json new file mode 100644 index 0000000..e817b35 --- /dev/null +++ b/site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.json @@ -0,0 +1,30 @@ +{ + "name": "getkirby/composer-installer", + "description": "Kirby's custom Composer installer for the Kirby CMS and for Kirby plugins", + "type": "composer-plugin", + "license": "MIT", + "homepage": "https://getkirby.com", + "require": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^1.8 || ^2.0" + }, + "autoload": { + "psr-4": { + "Kirby\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Kirby\\": "tests/" + } + }, + "scripts": { + "fix": "php-cs-fixer fix --config .php_cs", + "test": "--stderr --coverage-html=tests/coverage" + }, + "extra": { + "class": "Kirby\\ComposerInstaller\\Plugin" + } +} diff --git a/site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.lock b/site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.lock new file mode 100644 index 0000000..8461817 --- /dev/null +++ b/site/plugins/your-plugin/vendor/getkirby/composer-installer/composer.lock @@ -0,0 +1,1680 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "981db668fb0d4f37f7b64daf03b5f131", + "packages": [], + "packages-dev": [ + { + "name": "composer/ca-bundle", + "version": "1.2.8", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "8a7ecad675253e4654ea05505233285377405215" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215", + "reference": "8a7ecad675253e4654ea05505233285377405215", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.2.8" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-08-23T12:54:47+00:00" + }, + { + "name": "composer/composer", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "62139b2806178adb979d76bd3437534a1a9fd490" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/62139b2806178adb979d76bd3437534a1a9fd490", + "reference": "62139b2806178adb979d76bd3437534a1a9fd490", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^3.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^1.1", + "justinrainbow/json-schema": "^5.2.10", + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0", + "react/promise": "^1.2 || ^2.7", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0" + }, + "require-dev": { + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^4.2 || ^5.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "https://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/2.0.8" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-12-03T16:20:39+00:00" + }, + { + "name": "composer/semver", + "version": "3.2.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.54", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.2.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-13T08:59:24+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.5", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "de30328a7af8680efdc03e396aad24befd513200" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/de30328a7af8680efdc03e396aad24befd513200", + "reference": "de30328a7af8680efdc03e396aad24befd513200", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-12-03T16:04:16+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "f28d44c286812c714741478d968104c5e604a1d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4", + "reference": "f28d44c286812c714741478d968104c5e604a1d4", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/1.4.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-13T08:04:11+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.10", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "reference": "2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.10" + }, + "time": "2020-05-27T16:41:55+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/master" + }, + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "react/promise", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.8.0" + }, + "time": "2020-05-12T15:16:56+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2020-11-11T09:19:24+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "reference": "8674b1d84ffb47cc59a101f5d5a3b61e87d23796", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ], + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/master" + }, + "time": "2020-07-07T18:42:57+00:00" + }, + { + "name": "symfony/console", + "version": "v5.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "47c02526c532fb381374dab26df05e7313978976" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/47c02526c532fb381374dab26df05e7313978976", + "reference": "47c02526c532fb381374dab26df05e7313978976", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v5.2.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-12-18T08:03:05+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v5.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "fa8f8cab6b65e2d99a118e082935344c5ba8c60d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/fa8f8cab6b65e2d99a118e082935344c5ba8c60d", + "reference": "fa8f8cab6b65e2d99a118e082935344c5ba8c60d", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.2.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-11-30T17:05:38+00:00" + }, + { + "name": "symfony/finder", + "version": "v5.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "0b9231a5922fd7287ba5b411893c0ecd2733e5ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/0b9231a5922fd7287ba5b411893c0ecd2733e5ba", + "reference": "0b9231a5922fd7287ba5b411893c0ecd2733e5ba", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v5.2.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-12-08T17:02:38+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "727d1096295d807c309fb01a851577302394c897" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", + "reference": "727d1096295d807c309fb01a851577302394c897", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", + "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php73", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", + "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, + { + "name": "symfony/process", + "version": "v5.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "bd8815b8b6705298beaa384f04fabd459c10bedd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/bd8815b8b6705298beaa384f04fabd459c10bedd", + "reference": "bd8815b8b6705298beaa384f04fabd459c10bedd", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v5.2.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-12-08T17:03:37+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/master" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" + }, + { + "name": "symfony/string", + "version": "v5.2.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed", + "reference": "5bd67751d2e3f7d6f770c9154b8fbcb2aa05f7ed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v5.2.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-12-05T07:33:16+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "platform-dev": [], + "plugin-api-version": "2.0.0" +} diff --git a/site/plugins/your-plugin/vendor/getkirby/composer-installer/readme.md b/site/plugins/your-plugin/vendor/getkirby/composer-installer/readme.md new file mode 100644 index 0000000..c5dab97 --- /dev/null +++ b/site/plugins/your-plugin/vendor/getkirby/composer-installer/readme.md @@ -0,0 +1,104 @@ +# Kirby Composer Installer + +[![CI Status](https://flat.badgen.net/github/checks/getkirby/composer-installer/master)](https://github.com/getkirby/composer-installer/actions?query=workflow%3ACI) +[![Coverage Status](https://flat.badgen.net/coveralls/c/github/getkirby/composer-installer)](https://coveralls.io/github/getkirby/composer-installer) + +This is Kirby's custom [Composer installer](https://getcomposer.org/doc/articles/custom-installers.md) for the Kirby CMS. +It is responsible for automatically choosing the correct installation paths if you install the CMS via Composer. + +It can also be used to automatically install Kirby plugins to the `site/plugins` directory. + +## Installing the CMS + +### Default configuration + +If you `require` the `getkirby/cms` package in your own `composer.json`, there is nothing else you need to do: + +```js +{ + "require": { + "getkirby/cms": "^3.0" + } +} +``` + +Kirby's Composer installer (this repo) will run automatically and will install the CMS to the `kirby` directory. + +### Custom installation path + +You might want to use a different installation path. The path can be configured like this in your `composer.json`: + +```js +{ + "require": { + "getkirby/cms": "^3.0" + }, + "extra": { + "kirby-cms-path": "kirby" // change this to your custom path + } +} +``` + +### Disable the installer for the CMS + +If you prefer to have the CMS installed to the `vendor` directory, you can disable the custom path entirely: + +```js +{ + "require": { + "getkirby/cms": "^3.0" + }, + "extra": { + "kirby-cms-path": false + } +} +``` + +Please note that you will need to modify your site's `index.php` to load the `vendor/autoload.php` file instead of Kirby's `bootstrap.php`. + +## Installing plugins + +### Support in published plugins + +Plugins need to require this installer as a Composer dependency to make use of the automatic installation to the `site/plugins` directory. + +You can find out more about this in our [plugin documentation](https://getkirby.com/docs/guide/plugins/plugin-setup-basic). + +### Usage for plugin users + +As a user of Kirby plugins that support this installer, you only need to `require` the plugins in your site's `composer.json`: + +```js +{ + "require": { + "getkirby/cms": "^3.0", + "superwoman/superplugin": "^1.0" + } +} +``` + +The installer (this repo) will run automatically, as the plugin dev added it to the plugin's `composer.json`. + +### Custom installation path + +If your `site/plugins` directory is at a custom path, you can configure the installation path like this in your `composer.json`: + +```js +{ + "require": { + "getkirby/cms": "^3.0", + "superwoman/superplugin": "^1.0" + }, + "extra": { + "kirby-plugin-path": "site/plugins" // change this to your custom path + } +} +``` + +## License + + + +## Author + +Lukas Bestle diff --git a/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php new file mode 100644 index 0000000..5dc9481 --- /dev/null +++ b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/CmsInstaller.php @@ -0,0 +1,64 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT + */ +class CmsInstaller extends Installer +{ + /** + * Decides if the installer supports the given type + * + * @param string $packageType + * @return bool + */ + public function supports($packageType): bool + { + return $packageType === 'kirby-cms'; + } + + /** + * Returns the installation path of a package + * + * @param \Composer\Package\PackageInterface $package + * @return string + */ + public function getInstallPath(PackageInterface $package): string + { + // get the extra configuration of the top-level package + if ($rootPackage = $this->composer->getPackage()) { + $extra = $rootPackage->getExtra(); + } else { + $extra = []; + } + + // use path from configuration, otherwise fall back to default + if (isset($extra['kirby-cms-path']) === true) { + $path = $extra['kirby-cms-path']; + } else { + $path = 'kirby'; + } + + // if explicitly set to something invalid (e.g. `false`), install to vendor dir + if (is_string($path) !== true) { + return parent::getInstallPath($package); + } + + // don't allow unsafe directories + $vendorDir = $this->composer->getConfig()->get('vendor-dir', Config::RELATIVE_PATHS) ?? 'vendor'; + if ($path === $vendorDir || $path === '.') { + throw new InvalidArgumentException('The path ' . $path . ' is an unsafe installation directory for ' . $package->getPrettyName() . '.'); + } + + return $path; + } +} diff --git a/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php new file mode 100644 index 0000000..34371dc --- /dev/null +++ b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Installer.php @@ -0,0 +1,105 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT + */ +class Installer extends LibraryInstaller +{ + /** + * Decides if the installer supports the given type + * + * @param string $packageType + * @return bool + */ + public function supports($packageType): bool + { + throw new RuntimeException('This method needs to be overridden.'); // @codeCoverageIgnore + } + + /** + * Installs a specific package + * + * @param \Composer\Repository\InstalledRepositoryInterface $repo Repository in which to check + * @param \Composer\Package\PackageInterface $package Package instance to install + * @return \React\Promise\PromiseInterface|null + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package) + { + // first install the package normally... + $promise = parent::install($repo, $package); + + // ...then run custom code + $postInstall = function () use ($package): void { + $this->postInstall($package); + }; + + // Composer 2 in async mode + if ($promise instanceof PromiseInterface) { + return $promise->then($postInstall); + } + + // Composer 1 or Composer 2 without async + $postInstall(); + } + + /** + * Updates a specific package + * + * @param \Composer\Repository\InstalledRepositoryInterface $repo Repository in which to check + * @param \Composer\Package\PackageInterface $initial Already installed package version + * @param \Composer\Package\PackageInterface $target Updated version + * @return \React\Promise\PromiseInterface|null + * + * @throws \InvalidArgumentException if $initial package is not installed + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + // first update the package normally... + $promise = parent::update($repo, $initial, $target); + + // ...then run custom code + $postInstall = function () use ($target): void { + $this->postInstall($target); + }; + + // Composer 2 in async mode + if ($promise instanceof PromiseInterface) { + return $promise->then($postInstall); + } + + // Composer 1 or Composer 2 without async + $postInstall(); + } + + /** + * Custom handler that will be called after each package + * installation or update + * + * @param \Composer\Package\PackageInterface $package + * @return void + */ + protected function postInstall(PackageInterface $package) + { + // remove the package's `vendor` directory to avoid duplicated autoloader and vendor code + $packageVendorDir = $this->getInstallPath($package) . '/vendor'; + if (is_dir($packageVendorDir) === true) { + $success = $this->filesystem->removeDirectory($packageVendorDir); + + if ($success !== true) { + throw new RuntimeException('Could not completely delete ' . $packageVendorDir . ', aborting.'); // @codeCoverageIgnore + } + } + } +} diff --git a/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php new file mode 100644 index 0000000..033cbc2 --- /dev/null +++ b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/Plugin.php @@ -0,0 +1,59 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT + */ +class Plugin implements PluginInterface +{ + /** + * Apply plugin modifications to Composer + * + * @param \Composer\Composer $composer + * @param \Composer\IO\IOInterface $io + * @return void + */ + public function activate(Composer $composer, IOInterface $io): void + { + $installationManager = $composer->getInstallationManager(); + $installationManager->addInstaller(new CmsInstaller($io, $composer)); + $installationManager->addInstaller(new PluginInstaller($io, $composer)); + } + + /** + * Remove any hooks from Composer + * + * @codeCoverageIgnore + * + * @param \Composer\Composer $composer + * @param \Composer\IO\IOInterface $io + * @return void + */ + public function deactivate(Composer $composer, IOInterface $io): void + { + // nothing to do + } + + /** + * Prepare the plugin to be uninstalled + * + * @codeCoverageIgnore + * + * @param Composer $composer + * @param IOInterface $io + * @return void + */ + public function uninstall(Composer $composer, IOInterface $io): void + { + // nothing to do + } +} diff --git a/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php new file mode 100644 index 0000000..ccdd188 --- /dev/null +++ b/site/plugins/your-plugin/vendor/getkirby/composer-installer/src/ComposerInstaller/PluginInstaller.php @@ -0,0 +1,112 @@ + + * @link https://getkirby.com + * @copyright Bastian Allgeier GmbH + * @license https://opensource.org/licenses/MIT + */ +class PluginInstaller extends Installer +{ + /** + * Decides if the installer supports the given type + * + * @param string $packageType + * @return bool + */ + public function supports($packageType): bool + { + return $packageType === 'kirby-plugin'; + } + + /** + * Returns the installation path of a package + * + * @param \Composer\Package\PackageInterface $package + * @return string path + */ + public function getInstallPath(PackageInterface $package): string + { + // place into `vendor` directory as usual if Pluginkit is not supported + if ($this->supportsPluginkit($package) !== true) { + return parent::getInstallPath($package); + } + + // get the extra configuration of the top-level package + if ($rootPackage = $this->composer->getPackage()) { + $extra = $rootPackage->getExtra(); + } else { + $extra = []; + } + + // use base path from configuration, otherwise fall back to default + $basePath = $extra['kirby-plugin-path'] ?? 'site/plugins'; + + if (is_string($basePath) !== true) { + throw new InvalidArgumentException('Invalid "kirby-plugin-path" option'); + } + + // determine the plugin name from its package name; + // can be overridden in the plugin's `composer.json` + $prettyName = $package->getPrettyName(); + $pluginExtra = $package->getExtra(); + if (empty($pluginExtra['installer-name']) === false) { + $name = $pluginExtra['installer-name']; + + if (is_string($name) !== true) { + throw new InvalidArgumentException('Invalid "installer-name" option in plugin ' . $prettyName); + } + } elseif (strpos($prettyName, '/') !== false) { + // use name after the slash + $name = explode('/', $prettyName)[1]; + } else { + $name = $prettyName; + } + + // build destination path from base path and plugin name + return $basePath . '/' . $name; + } + + /** + * Custom handler that will be called after each package + * installation or update + * + * @param \Composer\Package\PackageInterface $package + * @return void + */ + protected function postInstall(PackageInterface $package): void + { + // only continue if Pluginkit is supported + if ($this->supportsPluginkit($package) !== true) { + return; + } + + parent::postInstall($package); + } + + /** + * Checks if the package has explicitly required this installer; + * otherwise (if the Pluginkit is not yet supported by the plugin) + * the installer will fall back to the behavior of the LibraryInstaller + * + * @param \Composer\Package\PackageInterface $package + * @return bool + */ + protected function supportsPluginkit(PackageInterface $package): bool + { + foreach ($package->getRequires() as $link) { + if ($link->getTarget() === 'getkirby/composer-installer') { + return true; + } + } + + // no required package is the installer + return false; + } +} From 9aece684983c6e2da67eb54d7dd370c8a7bde439 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Tue, 2 Dec 2025 16:58:53 +0100 Subject: [PATCH 06/75] fix les couleur du panel --- assets/css/panel.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/assets/css/panel.css b/assets/css/panel.css index 33ce206..3b53cbb 100644 --- a/assets/css/panel.css +++ b/assets/css/panel.css @@ -1,12 +1,12 @@ .k-panel-menu { - background-color: var(--color-primary); + background-color: #000; } .k-panel-menu * { - color: var(--color-background); + color: #fff; } .k-panel-menu-button[aria-current] * { - color: var(--color-primary); + color: #000; } .k-panel[data-template="year"] .k-list-items .k-item:first-child { @@ -20,6 +20,6 @@ border-radius: var(--rounded-md) var(--rounded-md) 0 0; transform: translateY(0.3rem); - background-color: var(--color-primary); - color: var(--color-background); + background-color: #000; + color: #fff; } From c0ec5f30ad43981d9d0faaadce7800db9dff0550 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Wed, 3 Dec 2025 14:09:48 +0100 Subject: [PATCH 07/75] test --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 37636c1..59cab4a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,5 @@ image: node:latest - +#test stages: - build and deploy From 0c447209d95f5024a2cca6a7f5b58fd92ae5cc61 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Wed, 3 Dec 2025 14:49:24 +0100 Subject: [PATCH 08/75] supression your-plugin --- site/plugins/your-plugin/.editorconfig | 20 --- site/plugins/your-plugin/.gitattributes | 11 -- site/plugins/your-plugin/.gitignore | 14 --- site/plugins/your-plugin/LICENSE.md | 21 ---- site/plugins/your-plugin/README.md | 117 ------------------ site/plugins/your-plugin/SECURITY.md | 18 --- site/plugins/your-plugin/composer.json | 21 ---- site/plugins/your-plugin/composer.lock | 66 ---------- site/plugins/your-plugin/index.css | 0 site/plugins/your-plugin/index.js | 1 - site/plugins/your-plugin/index.php | 16 --- site/plugins/your-plugin/package.json | 12 -- .../src/components/Web2printField.vue | 61 --------- site/plugins/your-plugin/src/index.js | 7 -- 14 files changed, 385 deletions(-) delete mode 100644 site/plugins/your-plugin/.editorconfig delete mode 100644 site/plugins/your-plugin/.gitattributes delete mode 100644 site/plugins/your-plugin/.gitignore delete mode 100644 site/plugins/your-plugin/LICENSE.md delete mode 100644 site/plugins/your-plugin/README.md delete mode 100644 site/plugins/your-plugin/SECURITY.md delete mode 100644 site/plugins/your-plugin/composer.json delete mode 100644 site/plugins/your-plugin/composer.lock delete mode 100644 site/plugins/your-plugin/index.css delete mode 100644 site/plugins/your-plugin/index.js delete mode 100644 site/plugins/your-plugin/index.php delete mode 100644 site/plugins/your-plugin/package.json delete mode 100644 site/plugins/your-plugin/src/components/Web2printField.vue delete mode 100644 site/plugins/your-plugin/src/index.js diff --git a/site/plugins/your-plugin/.editorconfig b/site/plugins/your-plugin/.editorconfig deleted file mode 100644 index 3b762c9..0000000 --- a/site/plugins/your-plugin/.editorconfig +++ /dev/null @@ -1,20 +0,0 @@ -# This file is for unifying the coding style for different editors and IDEs -# editorconfig.org - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -[*.php] -indent_size = 4 - -[*.md,*.txt] -trim_trailing_whitespace = false -insert_final_newline = false - -[composer.json] -indent_size = 4 diff --git a/site/plugins/your-plugin/.gitattributes b/site/plugins/your-plugin/.gitattributes deleted file mode 100644 index 033ba13..0000000 --- a/site/plugins/your-plugin/.gitattributes +++ /dev/null @@ -1,11 +0,0 @@ -# Note: You need to uncomment the lines you want to use; the other lines can be deleted - -# Git -# .gitattributes export-ignore -# .gitignore export-ignore - -# Tests -# /.coveralls.yml export-ignore -# /.travis.yml export-ignore -# /phpunit.xml.dist export-ignore -# /tests/ export-ignore diff --git a/site/plugins/your-plugin/.gitignore b/site/plugins/your-plugin/.gitignore deleted file mode 100644 index 4d81cf5..0000000 --- a/site/plugins/your-plugin/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# OS files -.DS_Store - -# npm modules -/node_modules - -# Parcel cache folder -.cache - -# Composer files -/vendor - -# kirbyup temp development entry -/index.dev.mjs diff --git a/site/plugins/your-plugin/LICENSE.md b/site/plugins/your-plugin/LICENSE.md deleted file mode 100644 index 8e663d7..0000000 --- a/site/plugins/your-plugin/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/site/plugins/your-plugin/README.md b/site/plugins/your-plugin/README.md deleted file mode 100644 index ad2b202..0000000 --- a/site/plugins/your-plugin/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# Kirby Pluginkit: Example plugin for Kirby - -> Variant "Panel plugin setup" - -This is a boilerplate for a Kirby Panel plugin that can be installed via all three [supported installation methods](https://getkirby.com/docs/guide/plugins/plugin-setup-basic#the-three-plugin-installation-methods). - -You can find a list of Pluginkit variants on the [`master` branch](https://github.com/getkirby/pluginkit/tree/master). - -**** - -## How to use the Pluginkit - -1. Fork this repository -2. Change the plugin name and description in the `composer.json` -3. Change the plugin name in the `index.php` and `src/index.js` -4. Change the license if you don't want to publish under MIT -5. Add your plugin code to the `index.php` and `src/index.js` -6. Update this `README` with instructions for your plugin - -### Install the development and build setup - -We use [kirbyup](https://github.com/johannschopplich/kirbyup) for the development and build setup. - -You can start developing directly. kirbyup will be fetched remotely with your first `npm run` command, which may take a short amount of time. - -### Development - -You can start the dev process with: - -```bash -npm run dev -``` - -This will automatically update the `index.js` and `index.css` of your plugin as soon as you make changes. -Reload the Panel to see your code changes reflected. - -With kirbyup 2.0.0+ and Kirby 3.7.4+ you can alternatively use hot module reloading (HMR): - -```bash -npm run serve -``` - -This will start a development server that updates the page as soon as you make changes. Some updates are instant, like CSS or Vue template changes, others require a reload of the page, which happens automatically. - -> [!NOTE] -> The live reload functionality requires top level await, [which is only supported in modern browsers](https://caniuse.com/mdn-javascript_operators_await_top_level). If you're developing in older browsers, use `npm run dev` and reload the page manually to see changes. - -### Production - -As soon as you are happy with your plugin, you should build the final version with: - -```bash -npm run build -``` - -This will automatically create a minified and optimized version of your `index.js` and `index.css` -which you can ship with your plugin. - -We have a tutorial on how to build your own plugin based on the Pluginkit [in the Kirby documentation](https://getkirby.com/docs/guide/plugins/plugin-setup-basic). - -### Build reproducibility - -While kirbyup will stay backwards compatible, exact build reproducibility may be of importance to you. If so, we recommend to target a specific package version, rather than using npx: - -```json -{ - "scripts": { - "dev": "kirbyup src/index.js --watch", - "build": "kirbyup src/index.js" - }, - "devDependencies": { - "kirbyup": "^3.1.0" - } -} -``` - -What follows is an example README for your plugin. - -**** - -## Installation - -### Download - -Download and copy this repository to `/site/plugins/{{ plugin-name }}`. - -### Git submodule - -```bash -git submodule add https://github.com/{{ your-name }}/{{ plugin-name }}.git site/plugins/{{ plugin-name }} -``` - -### Composer - -```bash -composer require {{ your-name }}/{{ plugin-name }} -``` - -## Setup - -*Additional instructions on how to configure the plugin (e.g. blueprint setup, config options, etc.)* - -## Options - -*Document the options and APIs that this plugin offers* - -## Development - -*Add instructions on how to help working on the plugin (e.g. npm setup, Composer dev dependencies, etc.)* - -## License - -MIT - -## Credits - -- [Your Name](https://github.com/ghost) diff --git a/site/plugins/your-plugin/SECURITY.md b/site/plugins/your-plugin/SECURITY.md deleted file mode 100644 index 3726336..0000000 --- a/site/plugins/your-plugin/SECURITY.md +++ /dev/null @@ -1,18 +0,0 @@ -# Security Policy - -## Supported Versions - -*Use this section to tell people about which versions of your project are currently being supported with security updates.* - -| Version | Supported | -| ------- | ------------------ | -| 5.1.x | :white_check_mark: | -| 5.0.x | :x: | -| 4.0.x | :white_check_mark: | -| < 4.0 | :x: | - -## Reporting a Vulnerability - -*Use this section to tell people how to report a vulnerability.* - -*Tell them where to go, how often they can expect to get an update on a reported vulnerability, what to expect if the vulnerability is accepted or declined, etc.* diff --git a/site/plugins/your-plugin/composer.json b/site/plugins/your-plugin/composer.json deleted file mode 100644 index fa07b14..0000000 --- a/site/plugins/your-plugin/composer.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "getkirby/pluginkit", - "description": "Kirby Example Plugin", - "license": "MIT", - "type": "kirby-plugin", - "version": "1.0.0", - "authors": [ - { - "name": "Your Name", - "email": "you@example.com" - } - ], - "require": { - "getkirby/composer-installer": "^1.1" - }, - "config": { - "allow-plugins": { - "getkirby/composer-installer": true - } - } -} diff --git a/site/plugins/your-plugin/composer.lock b/site/plugins/your-plugin/composer.lock deleted file mode 100644 index a5ae0fa..0000000 --- a/site/plugins/your-plugin/composer.lock +++ /dev/null @@ -1,66 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "37a8e61308b9b6f49cb9835f477f0c64", - "packages": [ - { - "name": "getkirby/composer-installer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/getkirby/composer-installer.git", - "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/getkirby/composer-installer/zipball/c98ece30bfba45be7ce457e1102d1b169d922f3d", - "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0" - }, - "require-dev": { - "composer/composer": "^1.8 || ^2.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Kirby\\ComposerInstaller\\Plugin" - }, - "autoload": { - "psr-4": { - "Kirby\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Kirby's custom Composer installer for the Kirby CMS and for Kirby plugins", - "homepage": "https://getkirby.com", - "support": { - "issues": "https://github.com/getkirby/composer-installer/issues", - "source": "https://github.com/getkirby/composer-installer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://getkirby.com/buy", - "type": "custom" - } - ], - "time": "2020-12-28T12:54:39+00:00" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [], - "plugin-api-version": "2.6.0" -} diff --git a/site/plugins/your-plugin/index.css b/site/plugins/your-plugin/index.css deleted file mode 100644 index e69de29..0000000 diff --git a/site/plugins/your-plugin/index.js b/site/plugins/your-plugin/index.js deleted file mode 100644 index a149249..0000000 --- a/site/plugins/your-plugin/index.js +++ /dev/null @@ -1 +0,0 @@ -(function(){"use strict";function d(n,t,o,c,s,r,i,a){var e=typeof n=="function"?n.options:n;return t&&(e.render=t,e.staticRenderFns=o,e._compiled=!0),{exports:n,options:e}}const l={__name:"Web2PrintBtn",props:{htmlPageString:String},setup(n){const{htmlPageString:t}=n;async function o(){const r=await fetch("https://web2print.studio-variable.com",{method:"POST","Content-Type":"application/pdf","X-API-Key":"25377ab6e2153b159d1d5fa22501228810b6aec9d63346bd0614045dc167061c",body:{html:t}});if(r.ok){const i=await r.blob(),a=window.URL.createObjectURL(i),e=document.createElement("a");e.href=a,e.download="document.pdf",e.click()}else{const i=await r.json();console.error("Erreur:",i)}}return{__sfc:!0,getPdf:o}}};var u=function(){var t=this,o=t._self._c,c=t._self._setupProxy;return o("k-button",{attrs:{variant:"filled"},on:{click:function(s){return c.getPdf()}}},[t._v("Button")])},f=[],_=d(l,u,f);const p=_.exports;window.panel.plugin("studio-variable/web2print",{fields:{web2print:p}})})(); diff --git a/site/plugins/your-plugin/index.php b/site/plugins/your-plugin/index.php deleted file mode 100644 index 2b8a31b..0000000 --- a/site/plugins/your-plugin/index.php +++ /dev/null @@ -1,16 +0,0 @@ - [ - 'web2print' => [ - 'props' => [ - 'options' => function ($options = []) { - return $options; - }, - 'value' => function ($value = []) { - return $value; - } - ], - ], - ], -]); diff --git a/site/plugins/your-plugin/package.json b/site/plugins/your-plugin/package.json deleted file mode 100644 index 1913c34..0000000 --- a/site/plugins/your-plugin/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "getkirby/pluginkit", - "description": "Kirby Example Plugin", - "license": "MIT", - "type": "kirby-plugin", - "version": "1.0.0", - "scripts": { - "dev": "npx -y kirbyup src/index.js --watch", - "serve": "npx -y kirbyup serve src/index.js", - "build": "npx -y kirbyup src/index.js" - } -} diff --git a/site/plugins/your-plugin/src/components/Web2printField.vue b/site/plugins/your-plugin/src/components/Web2printField.vue deleted file mode 100644 index 3d0d1af..0000000 --- a/site/plugins/your-plugin/src/components/Web2printField.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - - - diff --git a/site/plugins/your-plugin/src/index.js b/site/plugins/your-plugin/src/index.js deleted file mode 100644 index 288e91c..0000000 --- a/site/plugins/your-plugin/src/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import ToggleGroup from "./components/Web2printField.vue"; - -window.panel.plugin("studio-variable/web2print", { - fields: { - web2print: ToggleGroup - } -}); From fcf47818d0b64aec6751c4a1949807828c9e4c22 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Wed, 3 Dec 2025 16:08:25 +0100 Subject: [PATCH 09/75] =?UTF-8?q?Fixes=20#43=20-=20Standardisation=20des?= =?UTF-8?q?=20titres=20=20faite=20avec=20correction=20en=20h1=20de=20ce=20?= =?UTF-8?q?qui=20ne=20devait=20pas=20=C3=AAtre=20des=20h2=20et=20--font-si?= =?UTF-8?q?ze-xl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 2 +- assets/css/src/texts.css | 1 + site/templates/author.php | 2 +- site/templates/error.php | 4 +--- site/templates/grid.php | 8 +++++--- site/templates/home.php | 6 +++++- site/templates/info.php | 4 +--- site/templates/newsletter.php | 2 +- 8 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 59cab4a..37636c1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,5 @@ image: node:latest -#test + stages: - build and deploy diff --git a/assets/css/src/texts.css b/assets/css/src/texts.css index 6bdb636..b86f747 100644 --- a/assets/css/src/texts.css +++ b/assets/css/src/texts.css @@ -64,6 +64,7 @@ article h2 { box-sizing: border-box; font-weight: var(--font-weight-light); margin-bottom: var(--unit--vertical); + font-size: var(--font-size-xl); } .text__title { diff --git a/site/templates/author.php b/site/templates/author.php index d002cf9..d70a54a 100644 --- a/site/templates/author.php +++ b/site/templates/author.php @@ -4,7 +4,7 @@
-

title() ?>

+

title() ?>

presentation() ?> diff --git a/site/templates/error.php b/site/templates/error.php index b930d26..780ff03 100644 --- a/site/templates/error.php +++ b/site/templates/error.php @@ -3,9 +3,7 @@
true], slots: true) ?> -

- title() ?>

+

title() ?>

diff --git a/site/templates/grid.php b/site/templates/grid.php index 2f0a22a..efd8f5e 100644 --- a/site/templates/grid.php +++ b/site/templates/grid.php @@ -3,9 +3,7 @@
true], slots: true) ?> -

- title() ?>

+

title() ?>

par category() ?>

+

+ imprimé le format('d/m/Y'); ?>
+ url() ?> +

diff --git a/site/templates/home.php b/site/templates/home.php index 8b0d181..fc9dcaf 100644 --- a/site/templates/home.php +++ b/site/templates/home.php @@ -9,8 +9,12 @@ class="no-underline home-baseline" title="lire l'éditorial" > -

subtitle()->inline() ?>

+

subtitle()->inline() ?>

+

+ imprimé le format('d/m/Y'); ?>
+ url() ?> +

true], slots: true) ?> -

- title() ?>

+

title() ?>

body() ?>
diff --git a/site/templates/newsletter.php b/site/templates/newsletter.php index 7e1e5b8..ff9552f 100644 --- a/site/templates/newsletter.php +++ b/site/templates/newsletter.php @@ -3,7 +3,7 @@
true), slots: true) ?> -

title() ?>

+

title() ?>

body() ?>
\ No newline at end of file diff --git a/site/templates/author.php b/site/templates/author.php index d70a54a..201c31b 100644 --- a/site/templates/author.php +++ b/site/templates/author.php @@ -32,4 +32,6 @@
- \ No newline at end of file + + + \ No newline at end of file diff --git a/site/templates/newsletter.php b/site/templates/newsletter.php index ff9552f..bafb26e 100644 --- a/site/templates/newsletter.php +++ b/site/templates/newsletter.php @@ -1,4 +1,5 @@ +
true), slots: true) ?> @@ -14,6 +15,4 @@
-
- - \ No newline at end of file + \ No newline at end of file From 0a92094e53ac7a164ec59fdcf81d95da159930f6 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Wed, 3 Dec 2025 16:50:47 +0100 Subject: [PATCH 11/75] =?UTF-8?q?alignement=20du=20toggle,=20j'ai=20l'impr?= =?UTF-8?q?ession=20que=20=C3=A7a=20faiat=20milles=20fois=20que=20je=20le?= =?UTF-8?q?=20fait=20je=20ne=20comprend=20pas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/src/toggle-light-mode.css | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/assets/css/src/toggle-light-mode.css b/assets/css/src/toggle-light-mode.css index d8d44ce..0bcb7e3 100644 --- a/assets/css/src/toggle-light-mode.css +++ b/assets/css/src/toggle-light-mode.css @@ -18,10 +18,16 @@ mask: var(--icon-theme-toggler) no-repeat center; -webkit-mask: var(--icon-theme-toggler) no-repeat center; } -@media screen and (max-width: 640px) { -.theme-toggler-icon { - width: 1.1rem; - height: 1.1rem; + +@media screen and (min-width: 641px) { + .theme-toggler-icon { + padding-bottom: calc(var(--unit--vertical) - (var(--unit--vertical) / 4)); + } } +@media screen and (max-width: 640px) { + .theme-toggler-icon { + width: 1.1rem; + height: 1.1rem; + } } \ No newline at end of file From 4323b79ac169f13ef226b22265a2ccf977bba876 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Wed, 3 Dec 2025 17:21:37 +0100 Subject: [PATCH 12/75] recaler la grille pour la version print + correctin paddin main print --- assets/css/src/grid.css | 18 ++++++++++++++++-- assets/css/src/print.css | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/assets/css/src/grid.css b/assets/css/src/grid.css index 28594cf..26e31ba 100644 --- a/assets/css/src/grid.css +++ b/assets/css/src/grid.css @@ -25,7 +25,7 @@ body.full-width #main-content { margin-left: inherit; } -@media screen and (max-width: 640px) { +@media (max-width: 640px) { .grid .column:not(:last-child) { margin-bottom: calc(2 * var(--unit--vertical)); } @@ -35,7 +35,11 @@ body.full-width #main-content { [data-template="grid"] main #main-content { margin-left: calc(0px - calc(4 * var(--unit--horizontal))); } - + [data-template="grid"] .grid { + column-gap: var(--unit--horizontal); + } +} +@media (min-width: 640px) { [data-template="grid"] .grid { display: grid; grid-template-columns: repeat(39, 1fr); @@ -43,3 +47,13 @@ body.full-width #main-content { margin-bottom: calc(var(--unit--vertical) * 2); } } + +@media print{ + .grid .column { + grid-column: span 1; + } + [data-template="grid"] .grid { + column-gap: 20px; + grid-template-columns: repeat(2, 1fr); + } +} \ No newline at end of file diff --git a/assets/css/src/print.css b/assets/css/src/print.css index c608b47..82f0271 100644 --- a/assets/css/src/print.css +++ b/assets/css/src/print.css @@ -123,6 +123,7 @@ } main { padding-left: 0; + padding-right: 0; } /* .url{ position: absolute; From 7829420c780b8fb6abeda8fb64ebf9aaeeef111c Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Wed, 3 Dec 2025 18:14:31 +0100 Subject: [PATCH 13/75] pause --- assets/css/src/grid.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/assets/css/src/grid.css b/assets/css/src/grid.css index 26e31ba..511370c 100644 --- a/assets/css/src/grid.css +++ b/assets/css/src/grid.css @@ -56,4 +56,8 @@ body.full-width #main-content { column-gap: 20px; grid-template-columns: repeat(2, 1fr); } + + .blocks, .column { + page-break-inside: auto; /* autoriser la coupe si nécessaire */ + } } \ No newline at end of file From a9d24a43a9cc8a9a9c4b222767c245bc97a7230d Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Thu, 4 Dec 2025 12:11:46 +0100 Subject: [PATCH 14/75] revision interlignage print + marge dans linear --- assets/css/src/grid.css | 14 -------------- assets/css/src/print.css | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/assets/css/src/grid.css b/assets/css/src/grid.css index 511370c..b9cc259 100644 --- a/assets/css/src/grid.css +++ b/assets/css/src/grid.css @@ -46,18 +46,4 @@ body.full-width #main-content { column-gap: var(--unit--horizontal); margin-bottom: calc(var(--unit--vertical) * 2); } -} - -@media print{ - .grid .column { - grid-column: span 1; - } - [data-template="grid"] .grid { - column-gap: 20px; - grid-template-columns: repeat(2, 1fr); - } - - .blocks, .column { - page-break-inside: auto; /* autoriser la coupe si nécessaire */ - } } \ No newline at end of file diff --git a/assets/css/src/print.css b/assets/css/src/print.css index 82f0271..41c663a 100644 --- a/assets/css/src/print.css +++ b/assets/css/src/print.css @@ -1,11 +1,35 @@ @media print { /* Hide header / footer infos. */ + :root{ + --font-size-m: calc(var(--font-size-s) * 1.4) !important; + } + *:not(.page-cover) p, *:not(.page-cover) li, *:not(.page-cover) button, *:not(.page-cover) .fs-m{ + font-size: var(--font-size-m); + line-height: 1.2; + } + * { -webkit-print-color-adjust: exact; print-color-adjust: exact; } + [data-template="linear"] #main-content{ + padding-right: calc(var(--unit--horizontal) * 2) ; + + } + + [data-template="grid"] .grid .column { + grid-column: span 1; + } + [data-template="grid"] .grid { + column-gap: 20px; + grid-template-columns: repeat(2, 1fr); + } + [data-template="grid"] .blocks, .column { + page-break-inside: auto; /* autoriser la coupe si nécessaire */ + } + @page { /*variable pas supporter dans les marges...*/ /* From 8c8295b677d043113a5dd364ae2e5b236bce4647 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Thu, 4 Dec 2025 15:15:40 +0100 Subject: [PATCH 15/75] =?UTF-8?q?ajout=20du=20bouton=20et=20du=20champs=20?= =?UTF-8?q?dans=20le=20panel=20pour=20t=C3=A9l=C3=A9charger=20le=20pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/src/print.css | 2 +- site/blueprints/files/pdfVersion-file.yml | 2 ++ site/blueprints/pages/grid.yml | 8 ++++++++ site/blueprints/pages/linear.yml | 8 ++++++++ site/templates/grid.php | 7 +++++++ site/templates/linear.php | 7 +++++++ 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 site/blueprints/files/pdfVersion-file.yml diff --git a/assets/css/src/print.css b/assets/css/src/print.css index 41c663a..eeea972 100644 --- a/assets/css/src/print.css +++ b/assets/css/src/print.css @@ -64,7 +64,7 @@ } .panel, nav, .main-edito-btn, .theme-toggler, .page-cover .links, - [data-template="home"] .title-wrapper button.open-nav, #nav-overlay{ + [data-template="home"] .title-wrapper button.open-nav, #nav-overlay, .only-screen{ display: none !important; } diff --git a/site/blueprints/files/pdfVersion-file.yml b/site/blueprints/files/pdfVersion-file.yml new file mode 100644 index 0000000..92de0e0 --- /dev/null +++ b/site/blueprints/files/pdfVersion-file.yml @@ -0,0 +1,2 @@ +accept: + extension: pdf \ No newline at end of file diff --git a/site/blueprints/pages/grid.yml b/site/blueprints/pages/grid.yml index 414460c..b9cb32e 100644 --- a/site/blueprints/pages/grid.yml +++ b/site/blueprints/pages/grid.yml @@ -15,6 +15,14 @@ tabs: label: Corps type: fields fields: + pdfVersion: + label: version pdf + help: glisser ici le fichier pdf généré avec `ctrl + p` depuis la page du site + type: files + multiple: false + image: false + uploads: pdfVersion-file + width: 1/3 fullWidth: label: Pleine largeur type: toggle diff --git a/site/blueprints/pages/linear.yml b/site/blueprints/pages/linear.yml index e6cf2e5..d11ed0f 100644 --- a/site/blueprints/pages/linear.yml +++ b/site/blueprints/pages/linear.yml @@ -15,6 +15,14 @@ tabs: label: Corps type: fields fields: + pdfVersion: + label: version pdf + help: glisser ici le fichier pdf généré avec `ctrl + p` depuis la page du site + type: files + multiple: false + image: false + uploads: pdfVersion-file + width: 1/3 subtitle: label: Sous-titre type: writer diff --git a/site/templates/grid.php b/site/templates/grid.php index efd8f5e..62c3ff1 100644 --- a/site/templates/grid.php +++ b/site/templates/grid.php @@ -15,6 +15,13 @@ / category() ?>

+ pdfVersion()->toFile()): ?> +

+ + télécharger le pdf + +

+

imprimé le format('d/m/Y'); ?>
url() ?> diff --git a/site/templates/linear.php b/site/templates/linear.php index cd94c5e..a7c9cb1 100644 --- a/site/templates/linear.php +++ b/site/templates/linear.php @@ -20,6 +20,13 @@ / category() ?>

+ pdfVersion()->toFile()): ?> +

+ + télécharger le pdf + +

+

imprimé le format('d/m/Y'); ?>
url() ?> From c4892e919cff3b51a1a4ce541167dc2519fb33cc Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Wed, 10 Dec 2025 14:54:12 +0100 Subject: [PATCH 16/75] =?UTF-8?q?premi=C3=A8re=20tentative=20d'export=20du?= =?UTF-8?q?=20body=20en=20md,=20pas=20tr=C3=A8s=20concluant?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/css/src/header.css | 1 + site/blueprints/pages/linear.yml | 3 + site/plugins/epub-export/.editorconfig | 20 +++ site/plugins/epub-export/.gitattributes | 11 ++ site/plugins/epub-export/.gitignore | 14 +++ site/plugins/epub-export/LICENSE.md | 21 ++++ site/plugins/epub-export/README.md | 117 ++++++++++++++++++ site/plugins/epub-export/SECURITY.md | 18 +++ site/plugins/epub-export/composer.json | 21 ++++ site/plugins/epub-export/composer.lock | 66 ++++++++++ site/plugins/epub-export/index.css | 2 + site/plugins/epub-export/index.js | 63 ++++++++++ site/plugins/epub-export/index.php | 50 ++++++++ site/plugins/epub-export/package.json | 8 ++ .../src/components/ExportButton.vue | 55 ++++++++ site/plugins/epub-export/src/index.js | 7 ++ 16 files changed, 477 insertions(+) create mode 100644 site/plugins/epub-export/.editorconfig create mode 100644 site/plugins/epub-export/.gitattributes create mode 100644 site/plugins/epub-export/.gitignore create mode 100644 site/plugins/epub-export/LICENSE.md create mode 100644 site/plugins/epub-export/README.md create mode 100644 site/plugins/epub-export/SECURITY.md create mode 100644 site/plugins/epub-export/composer.json create mode 100644 site/plugins/epub-export/composer.lock create mode 100644 site/plugins/epub-export/index.css create mode 100644 site/plugins/epub-export/index.js create mode 100644 site/plugins/epub-export/index.php create mode 100644 site/plugins/epub-export/package.json create mode 100644 site/plugins/epub-export/src/components/ExportButton.vue create mode 100644 site/plugins/epub-export/src/index.js diff --git a/assets/css/src/header.css b/assets/css/src/header.css index 783e683..3b13f00 100644 --- a/assets/css/src/header.css +++ b/assets/css/src/header.css @@ -92,6 +92,7 @@ article > h1 { margin-bottom: calc(0.255 * var(--unit--vertical)); } + .page-cover .text-wrapper { height: 100%; overflow: auto; diff --git a/site/blueprints/pages/linear.yml b/site/blueprints/pages/linear.yml index d11ed0f..5525fa2 100644 --- a/site/blueprints/pages/linear.yml +++ b/site/blueprints/pages/linear.yml @@ -11,6 +11,9 @@ tabs: contentTab: label: Contenu sections: + epub-export: + type: epubexport + headline: "Exporter cette page" bodySection: label: Corps type: fields diff --git a/site/plugins/epub-export/.editorconfig b/site/plugins/epub-export/.editorconfig new file mode 100644 index 0000000..3b762c9 --- /dev/null +++ b/site/plugins/epub-export/.editorconfig @@ -0,0 +1,20 @@ +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.php] +indent_size = 4 + +[*.md,*.txt] +trim_trailing_whitespace = false +insert_final_newline = false + +[composer.json] +indent_size = 4 diff --git a/site/plugins/epub-export/.gitattributes b/site/plugins/epub-export/.gitattributes new file mode 100644 index 0000000..033ba13 --- /dev/null +++ b/site/plugins/epub-export/.gitattributes @@ -0,0 +1,11 @@ +# Note: You need to uncomment the lines you want to use; the other lines can be deleted + +# Git +# .gitattributes export-ignore +# .gitignore export-ignore + +# Tests +# /.coveralls.yml export-ignore +# /.travis.yml export-ignore +# /phpunit.xml.dist export-ignore +# /tests/ export-ignore diff --git a/site/plugins/epub-export/.gitignore b/site/plugins/epub-export/.gitignore new file mode 100644 index 0000000..4d81cf5 --- /dev/null +++ b/site/plugins/epub-export/.gitignore @@ -0,0 +1,14 @@ +# OS files +.DS_Store + +# npm modules +/node_modules + +# Parcel cache folder +.cache + +# Composer files +/vendor + +# kirbyup temp development entry +/index.dev.mjs diff --git a/site/plugins/epub-export/LICENSE.md b/site/plugins/epub-export/LICENSE.md new file mode 100644 index 0000000..8e663d7 --- /dev/null +++ b/site/plugins/epub-export/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/site/plugins/epub-export/README.md b/site/plugins/epub-export/README.md new file mode 100644 index 0000000..ad2b202 --- /dev/null +++ b/site/plugins/epub-export/README.md @@ -0,0 +1,117 @@ +# Kirby Pluginkit: Example plugin for Kirby + +> Variant "Panel plugin setup" + +This is a boilerplate for a Kirby Panel plugin that can be installed via all three [supported installation methods](https://getkirby.com/docs/guide/plugins/plugin-setup-basic#the-three-plugin-installation-methods). + +You can find a list of Pluginkit variants on the [`master` branch](https://github.com/getkirby/pluginkit/tree/master). + +**** + +## How to use the Pluginkit + +1. Fork this repository +2. Change the plugin name and description in the `composer.json` +3. Change the plugin name in the `index.php` and `src/index.js` +4. Change the license if you don't want to publish under MIT +5. Add your plugin code to the `index.php` and `src/index.js` +6. Update this `README` with instructions for your plugin + +### Install the development and build setup + +We use [kirbyup](https://github.com/johannschopplich/kirbyup) for the development and build setup. + +You can start developing directly. kirbyup will be fetched remotely with your first `npm run` command, which may take a short amount of time. + +### Development + +You can start the dev process with: + +```bash +npm run dev +``` + +This will automatically update the `index.js` and `index.css` of your plugin as soon as you make changes. +Reload the Panel to see your code changes reflected. + +With kirbyup 2.0.0+ and Kirby 3.7.4+ you can alternatively use hot module reloading (HMR): + +```bash +npm run serve +``` + +This will start a development server that updates the page as soon as you make changes. Some updates are instant, like CSS or Vue template changes, others require a reload of the page, which happens automatically. + +> [!NOTE] +> The live reload functionality requires top level await, [which is only supported in modern browsers](https://caniuse.com/mdn-javascript_operators_await_top_level). If you're developing in older browsers, use `npm run dev` and reload the page manually to see changes. + +### Production + +As soon as you are happy with your plugin, you should build the final version with: + +```bash +npm run build +``` + +This will automatically create a minified and optimized version of your `index.js` and `index.css` +which you can ship with your plugin. + +We have a tutorial on how to build your own plugin based on the Pluginkit [in the Kirby documentation](https://getkirby.com/docs/guide/plugins/plugin-setup-basic). + +### Build reproducibility + +While kirbyup will stay backwards compatible, exact build reproducibility may be of importance to you. If so, we recommend to target a specific package version, rather than using npx: + +```json +{ + "scripts": { + "dev": "kirbyup src/index.js --watch", + "build": "kirbyup src/index.js" + }, + "devDependencies": { + "kirbyup": "^3.1.0" + } +} +``` + +What follows is an example README for your plugin. + +**** + +## Installation + +### Download + +Download and copy this repository to `/site/plugins/{{ plugin-name }}`. + +### Git submodule + +```bash +git submodule add https://github.com/{{ your-name }}/{{ plugin-name }}.git site/plugins/{{ plugin-name }} +``` + +### Composer + +```bash +composer require {{ your-name }}/{{ plugin-name }} +``` + +## Setup + +*Additional instructions on how to configure the plugin (e.g. blueprint setup, config options, etc.)* + +## Options + +*Document the options and APIs that this plugin offers* + +## Development + +*Add instructions on how to help working on the plugin (e.g. npm setup, Composer dev dependencies, etc.)* + +## License + +MIT + +## Credits + +- [Your Name](https://github.com/ghost) diff --git a/site/plugins/epub-export/SECURITY.md b/site/plugins/epub-export/SECURITY.md new file mode 100644 index 0000000..3726336 --- /dev/null +++ b/site/plugins/epub-export/SECURITY.md @@ -0,0 +1,18 @@ +# Security Policy + +## Supported Versions + +*Use this section to tell people about which versions of your project are currently being supported with security updates.* + +| Version | Supported | +| ------- | ------------------ | +| 5.1.x | :white_check_mark: | +| 5.0.x | :x: | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +*Use this section to tell people how to report a vulnerability.* + +*Tell them where to go, how often they can expect to get an update on a reported vulnerability, what to expect if the vulnerability is accepted or declined, etc.* diff --git a/site/plugins/epub-export/composer.json b/site/plugins/epub-export/composer.json new file mode 100644 index 0000000..b692c07 --- /dev/null +++ b/site/plugins/epub-export/composer.json @@ -0,0 +1,21 @@ +{ + "name": "studioVariable/epub", + "description": "Kirby Example Plugin", + "license": "MIT", + "type": "kirby-plugin", + "version": "1.0.0", + "authors": [ + { + "name": "Studio Variable", + "email": "contact@studio-variable.com" + } + ], + "require": { + "getkirby/composer-installer": "^1.1" + }, + "config": { + "allow-plugins": { + "getkirby/composer-installer": true + } + } +} diff --git a/site/plugins/epub-export/composer.lock b/site/plugins/epub-export/composer.lock new file mode 100644 index 0000000..a5ae0fa --- /dev/null +++ b/site/plugins/epub-export/composer.lock @@ -0,0 +1,66 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "37a8e61308b9b6f49cb9835f477f0c64", + "packages": [ + { + "name": "getkirby/composer-installer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/getkirby/composer-installer.git", + "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/getkirby/composer-installer/zipball/c98ece30bfba45be7ce457e1102d1b169d922f3d", + "reference": "c98ece30bfba45be7ce457e1102d1b169d922f3d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^1.8 || ^2.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Kirby\\ComposerInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "Kirby\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Kirby's custom Composer installer for the Kirby CMS and for Kirby plugins", + "homepage": "https://getkirby.com", + "support": { + "issues": "https://github.com/getkirby/composer-installer/issues", + "source": "https://github.com/getkirby/composer-installer/tree/1.2.1" + }, + "funding": [ + { + "url": "https://getkirby.com/buy", + "type": "custom" + } + ], + "time": "2020-12-28T12:54:39+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/site/plugins/epub-export/index.css b/site/plugins/epub-export/index.css new file mode 100644 index 0000000..d9c4995 --- /dev/null +++ b/site/plugins/epub-export/index.css @@ -0,0 +1,2 @@ + +/** Put your CSS here **/ diff --git a/site/plugins/epub-export/index.js b/site/plugins/epub-export/index.js new file mode 100644 index 0000000..3a625cb --- /dev/null +++ b/site/plugins/epub-export/index.js @@ -0,0 +1,63 @@ +(function() { + "use strict"; + function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) { + var options = typeof scriptExports === "function" ? scriptExports.options : scriptExports; + if (render) { + options.render = render; + options.staticRenderFns = staticRenderFns; + options._compiled = true; + } + return { + exports: scriptExports, + options + }; + } + const _sfc_main = { + props: { + pageId: String + }, + data() { + return { + loading: false, + error: null + }; + }, + methods: { + async exportEpub() { + this.loading = true; + this.error = null; + try { + const response = await this.$api.post(`epub-export/${this.pageId}`); + const blob = await response.blob(); + const url = window.URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = this.pageId + ".epub"; + a.click(); + } catch (e) { + this.error = "Erreur : " + e.message; + } finally { + this.loading = false; + } + } + } + }; + var _sfc_render = function render() { + var _vm = this, _c = _vm._self._c; + return _c("k-box", [_c("k-button", { attrs: { "theme": "positive", "icon": "download", "disabled": _vm.loading }, on: { "click": _vm.exportEpub } }, [_vm._v(" Exporter en EPUB ")]), _vm.loading ? _c("k-text", [_vm._v("Génération en cours…")]) : _vm._e(), _vm.error ? _c("k-text", { attrs: { "theme": "negative" } }, [_vm._v(_vm._s(_vm.error))]) : _vm._e()], 1); + }; + var _sfc_staticRenderFns = []; + _sfc_render._withStripped = true; + var __component__ = /* @__PURE__ */ normalizeComponent( + _sfc_main, + _sfc_render, + _sfc_staticRenderFns + ); + __component__.options.__file = "C:/Users/anton/Desktop/studioVariable/actuelleInactuelle/actuel-inactuel/site/plugins/epub-export/src/components/ExportButton.vue"; + const ExportButton = __component__.exports; + window.panel.plugin("getkirby/pluginkit", { + sections: { + epubexport: ExportButton + } + }); +})(); diff --git a/site/plugins/epub-export/index.php b/site/plugins/epub-export/index.php new file mode 100644 index 0000000..3640093 --- /dev/null +++ b/site/plugins/epub-export/index.php @@ -0,0 +1,50 @@ + [ + 'routes' => [ + [ + 'pattern' => 'epub-export/(:any)', + 'method' => 'POST', + 'action' => function () { + $pageId = get('id'); + $page = page($pageId); + throw new Exception($page); + if (!$page) { + throw new Exception("Page introuvable"); + } + + // Markdown du champ Body + $markdown = $page->body()->toMarkdown(); + + // Emplacement du fichier + $root = kirby()->root('media') . '/exports'; + Dir::make($root); + + $filename = $page->id() . '.md'; + $filepath = $root . '/' . $filename; + + file_put_contents($filepath, $markdown); + + return [ + 'message' => 'OK', + 'file' => $filename, + 'path' => $filepath, + 'url' => kirby()->url('media') . '/exports/' . $filename, + ]; + } + ] + ] + ], + + 'sections' => [ + 'epubexport' => [ + 'props' => [ + 'pageId' => function () { + return $this->model()->id(); + }, + ], + 'component' => 'export-button' + ] + ] +]); diff --git a/site/plugins/epub-export/package.json b/site/plugins/epub-export/package.json new file mode 100644 index 0000000..c55c993 --- /dev/null +++ b/site/plugins/epub-export/package.json @@ -0,0 +1,8 @@ +{ + "name": "studioVariable/epub", + "scripts": { + "dev": "npx -y kirbyup src/index.js --watch", + "serve": "npx -y kirbyup serve src/index.js", + "build": "npx -y kirbyup src/index.js" + } +} diff --git a/site/plugins/epub-export/src/components/ExportButton.vue b/site/plugins/epub-export/src/components/ExportButton.vue new file mode 100644 index 0000000..aa7bd73 --- /dev/null +++ b/site/plugins/epub-export/src/components/ExportButton.vue @@ -0,0 +1,55 @@ + + + diff --git a/site/plugins/epub-export/src/index.js b/site/plugins/epub-export/src/index.js new file mode 100644 index 0000000..b8a3802 --- /dev/null +++ b/site/plugins/epub-export/src/index.js @@ -0,0 +1,7 @@ +import ExportButton from "./components/ExportButton.vue"; + +window.panel.plugin("tonnom/epub-export", { + sections: { + epubexport: ExportButton + } +}); From 309111c23a27c0d86e2b26ea40f2bc11eafdd686 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Mon, 9 Feb 2026 15:36:00 +0100 Subject: [PATCH 17/75] je ne sais plus se que contient se commit --- composer.json | 3 +- composer.lock | 51 ++++++++++++++++++- site/blueprints/pages/linear.yml | 6 +-- site/plugins/epub-export/index.php | 9 ++-- .../src/components/ExportButton.vue | 43 ++++++++++++++-- site/plugins/epub-export/src/index.js | 3 +- 6 files changed, 102 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index ffcade6..6f44ca5 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,8 @@ "php-http/guzzle7-adapter": "^1.1", "mailersend/mailersend": "^0.28.0", "sylvainjule/code-editor": "^1.0", - "tobimori/kirby-seo": "^1.1" + "tobimori/kirby-seo": "^1.1", + "splorp/paperback-export": "^2.0" }, "config": { "platform": { diff --git a/composer.lock b/composer.lock index 29ac08e..c580047 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "30f9edc8f90ec79150fffac01e3b80fd", + "content-hash": "8ef02ef5b3cde9ff5bc677b8766397a3", "packages": [ { "name": "beberlei/assert", @@ -2292,6 +2292,55 @@ ], "time": "2025-01-31T14:54:12+00:00" }, + { + "name": "splorp/paperback-export", + "version": "2.0.7", + "source": { + "type": "git", + "url": "https://github.com/splorp/kirby-paperback-export.git", + "reference": "94a43248af69040f1144700262e35842ce6602ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/splorp/kirby-paperback-export/zipball/94a43248af69040f1144700262e35842ce6602ff", + "reference": "94a43248af69040f1144700262e35842ce6602ff", + "shasum": "" + }, + "require": { + "getkirby/composer-installer": "^1.1" + }, + "type": "kirby-plugin", + "extra": { + "installer-name": "paperback-export" + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grant Hutchinson", + "email": "grant@splorp.com", + "homepage": "https://splorp.com/" + } + ], + "description": "Export Kirby CMS content for use with the PaperBack Book Maker", + "homepage": "https://github.com/splorp/kirby-paperback-export", + "keywords": [ + "kirby", + "kirby-cms", + "kirby-plugin", + "newton-book", + "newton-os", + "paperback-book-maker" + ], + "support": { + "docs": "https://github.com/splorp/kirby-paperback-export/blob/master/readme.md", + "issues": "https://github.com/splorp/kirby-paperback-export/issues", + "source": "https://github.com/splorp/kirby-paperback-export" + }, + "time": "2025-06-25T20:50:14+00:00" + }, { "name": "sylvainjule/code-editor", "version": "1.1.0", diff --git a/site/blueprints/pages/linear.yml b/site/blueprints/pages/linear.yml index 5525fa2..7cd72c5 100644 --- a/site/blueprints/pages/linear.yml +++ b/site/blueprints/pages/linear.yml @@ -11,13 +11,13 @@ tabs: contentTab: label: Contenu sections: - epub-export: - type: epubexport - headline: "Exporter cette page" bodySection: label: Corps type: fields fields: + epub-export: + type: epubexport + headline: "Exporter cette page" pdfVersion: label: version pdf help: glisser ici le fichier pdf généré avec `ctrl + p` depuis la page du site diff --git a/site/plugins/epub-export/index.php b/site/plugins/epub-export/index.php index 3640093..57fbc6e 100644 --- a/site/plugins/epub-export/index.php +++ b/site/plugins/epub-export/index.php @@ -7,9 +7,11 @@ Kirby::plugin('tonnom/epub-export', [ 'pattern' => 'epub-export/(:any)', 'method' => 'POST', 'action' => function () { + $pageId = get('id'); $page = page($pageId); - throw new Exception($page); + + throw new Exception($pageId); if (!$page) { throw new Exception("Page introuvable"); } @@ -37,14 +39,13 @@ Kirby::plugin('tonnom/epub-export', [ ] ], - 'sections' => [ + 'fields' => [ 'epubexport' => [ - 'props' => [ + 'computed' => [ 'pageId' => function () { return $this->model()->id(); }, ], - 'component' => 'export-button' ] ] ]); diff --git a/site/plugins/epub-export/src/components/ExportButton.vue b/site/plugins/epub-export/src/components/ExportButton.vue index aa7bd73..4535a3c 100644 --- a/site/plugins/epub-export/src/components/ExportButton.vue +++ b/site/plugins/epub-export/src/components/ExportButton.vue @@ -14,7 +14,7 @@ - + diff --git a/site/plugins/epub-export/src/index.js b/site/plugins/epub-export/src/index.js index b8a3802..b202eef 100644 --- a/site/plugins/epub-export/src/index.js +++ b/site/plugins/epub-export/src/index.js @@ -1,7 +1,8 @@ import ExportButton from "./components/ExportButton.vue"; window.panel.plugin("tonnom/epub-export", { - sections: { + fields: { epubexport: ExportButton } }); + From 344af4c0fe7e6fb52ce43afd8f39b30a7affe2a4 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Mon, 9 Feb 2026 19:53:17 +0100 Subject: [PATCH 18/75] =?UTF-8?q?modification=20du=20blueprint=20year=20po?= =?UTF-8?q?ur=20pouvoir=20s=C3=A9l=C3=A9ctionner=20une=20page=20dans=20une?= =?UTF-8?q?=20autre=20ann=C3=A9e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/blueprints/pages/texts.yml | 2 +- site/blueprints/pages/year.yml | 8 ++++++++ site/plugins/code-editor/index.php | 12 ++++++------ 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/site/blueprints/pages/texts.yml b/site/blueprints/pages/texts.yml index 8a3347b..247d9b3 100644 --- a/site/blueprints/pages/texts.yml +++ b/site/blueprints/pages/texts.yml @@ -15,7 +15,7 @@ tabs: type: pages template: year sortBy: title desc - - width: 1/1 + - width: 1/2 sections: allTextsSection: label: Tous les textes diff --git a/site/blueprints/pages/year.yml b/site/blueprints/pages/year.yml index d0ad42e..75ecd8b 100644 --- a/site/blueprints/pages/year.yml +++ b/site/blueprints/pages/year.yml @@ -24,6 +24,14 @@ tabs: templates: - linear - grid + linkedTextsSection: + type: fields + fields: + linkedTexts: + label: Textes liés + type: pages + query : site.find('textes').grandChildren + help: textes enregistrés à une autre année à inclure aussi dans celle-ci. - width: 2/3 fields: edito: diff --git a/site/plugins/code-editor/index.php b/site/plugins/code-editor/index.php index ba1302a..f4a3250 100644 --- a/site/plugins/code-editor/index.php +++ b/site/plugins/code-editor/index.php @@ -1,15 +1,15 @@ [ + 'options' => array( 'language' => 'css', - 'size' => 'small', - 'lineNumbers' => true, + 'size' => 'small', + 'lineNumbers' => true, 'tabSize' => 4, 'insertSpaces' => true, 'ignoreTabKey' => false, - ], - 'fields' => [ + ), + 'fields' => array( 'code-editor' => require_once __DIR__ . '/lib/fields/code-editor.php', - ], + ), ]); From dee8f94182aa3775856a92b67d9832786f366646 Mon Sep 17 00:00:00 2001 From: antonin gallon Date: Mon, 9 Feb 2026 20:57:56 +0100 Subject: [PATCH 19/75] ajout de la methode allTexts() dans site\models\year.php --- site/models/year.php | 8 ++++++++ site/snippets/nav__texts--collection.php | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 site/models/year.php diff --git a/site/models/year.php b/site/models/year.php new file mode 100644 index 0000000..e9eb907 --- /dev/null +++ b/site/models/year.php @@ -0,0 +1,8 @@ +children()->listed(); + $linked = $this->linkedTexts()->toPages(); + return $texts->merge($linked); + } +} \ No newline at end of file diff --git a/site/snippets/nav__texts--collection.php b/site/snippets/nav__texts--collection.php index cf29a0e..f62e281 100644 --- a/site/snippets/nav__texts--collection.php +++ b/site/snippets/nav__texts--collection.php @@ -18,7 +18,8 @@ class="see-more toggle-btn toggle-btn--left" @click="edito = !edito">Lire

From 798123a60a5c6eb07e6fb74601a0b2480be8b4c9 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Fri, 27 Mar 2026 19:22:00 +0100 Subject: [PATCH 58/75] styles : add h4 sizing, spacing and scroll-margin Co-Authored-By: Claude Opus 4.6 --- assets/css/src/_article.scss | 14 +++++++++++--- assets/css/src/_texts.scss | 12 ++++++++++-- assets/css/style.css | 25 +++++++++++++++++++++---- assets/css/style.css.map | 2 +- 4 files changed, 43 insertions(+), 10 deletions(-) diff --git a/assets/css/src/_article.scss b/assets/css/src/_article.scss index e4f970c..7592835 100644 --- a/assets/css/src/_article.scss +++ b/assets/css/src/_article.scss @@ -30,11 +30,18 @@ article #main-content #chapo::after { article #main-content li:not(.text) { list-style-type: inherit; } -article h3 { + +article h3, +article h4 { scroll-margin-top: calc(var(--unit--vertical) * 1); - margin-top: calc(3 * var(--unit--vertical)); margin-bottom: calc(1 * var(--unit--vertical)); } +article h3 { + margin-top: calc(3 * var(--unit--vertical)); +} +article h4 { + margin-top: calc(1 * var(--unit--vertical)); +} article li, article ol { @@ -66,7 +73,8 @@ blockquote.big { } @media screen and (max-width: 640px) { - article h3 { + article h3, + article h4 { scroll-margin-top: calc(var(--unit--vertical) * 5); } } diff --git a/assets/css/src/_texts.scss b/assets/css/src/_texts.scss index 6047752..30e4585 100644 --- a/assets/css/src/_texts.scss +++ b/assets/css/src/_texts.scss @@ -30,7 +30,7 @@ h5 *, p, p *:not(strong), figcaption, -.toc{ +.toc { font-weight: var(--font-weight-light); line-height: 1; } @@ -45,6 +45,12 @@ h3, color: var(--color-primary); } +h4, +.h4 { + font-size: var(--font-size-l); + color: var(--color-primary); +} + article h2 { margin-bottom: calc(var(--unit--vertical) / 2); } @@ -170,7 +176,9 @@ a:not(.no-underline) { text-decoration-thickness: 0.5px; } -article p:not(:last-child), article ul:not(:last-child), article figure:not(:last-child){ +article p:not(:last-child), +article ul:not(:last-child), +article figure:not(:last-child) { margin-bottom: var(--unit--vertical); } diff --git a/assets/css/style.css b/assets/css/style.css index 96bd89b..5bb4915 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -304,6 +304,12 @@ h3, color: var(--color-primary); } +h4, +.h4 { + font-size: var(--font-size-l); + color: var(--color-primary); +} + article h2 { margin-bottom: calc(var(--unit--vertical) / 2); } @@ -435,7 +441,9 @@ a:not(.no-underline) { text-decoration-thickness: 0.5px; } -article p:not(:last-child), article ul:not(:last-child), article figure:not(:last-child) { +article p:not(:last-child), +article ul:not(:last-child), +article figure:not(:last-child) { margin-bottom: var(--unit--vertical); } @@ -907,12 +915,20 @@ article #main-content li:not(.text) { list-style-type: inherit; } -article h3 { +article h3, +article h4 { scroll-margin-top: calc(var(--unit--vertical) * 1); - margin-top: calc(3 * var(--unit--vertical)); margin-bottom: calc(1 * var(--unit--vertical)); } +article h3 { + margin-top: calc(3 * var(--unit--vertical)); +} + +article h4 { + margin-top: calc(1 * var(--unit--vertical)); +} + article li, article ol { margin-left: var(--unit--horizontal); @@ -943,7 +959,8 @@ blockquote.big { } @media screen and (max-width: 640px) { - article h3 { + article h3, + article h4 { scroll-margin-top: calc(var(--unit--vertical) * 5); } } diff --git a/assets/css/style.css.map b/assets/css/style.css.map index b426aa6..e3b6ba2 100644 --- a/assets/css/style.css.map +++ b/assets/css/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","src/_reset.scss","src/_html.scss","src/_generic.scss","src/_texts.scss","src/_header.scss","src/_nav.scss","src/_article.scss","src/_virtual.scss","src/_home.scss","src/_grid.scss","src/_newsletter.scss","src/_footer.scss","src/_toggle-light-mode.scss","src/_print.scss","src/_toc.scss","style.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sources":["style.css","src/_reset.scss","src/_html.scss","src/_generic.scss","src/_texts.scss","src/_header.scss","src/_nav.scss","src/_article.scss","src/_virtual.scss","src/_home.scss","src/_grid.scss","src/_newsletter.scss","src/_footer.scss","src/_toggle-light-mode.scss","src/_print.scss","src/_toc.scss","style.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file From 6c1a8c8850e269e4b8b19cb549a0c0a29a69fc1c Mon Sep 17 00:00:00 2001 From: isUnknown Date: Sat, 28 Mar 2026 09:28:47 +0100 Subject: [PATCH 59/75] side-panel : refactor nav + toc into single side-panel with view switching Rename nav.php to side-panel.php to host both navigation and table of contents views. The panel uses data-view attributes to switch between nav and toc content. Footer buttons updated to target the unified panel. TOC button now visible on desktop. Co-Authored-By: Claude Opus 4.6 --- assets/css/src/_footer.scss | 26 +++------ .../css/src/{_nav.scss => _side-panel.scss} | 4 +- assets/css/src/_toc.scss | 2 +- assets/css/src/_toggle-light-mode.scss | 53 ++++++++++--------- assets/css/style.css | 30 ++++------- assets/css/style.css.map | 2 +- assets/css/style.scss | 2 +- assets/js/script.js | 17 +++--- site/snippets/cover.php | 3 -- site/snippets/footer.php | 13 +++-- site/snippets/header.php | 5 +- site/snippets/nav.php | 22 -------- site/snippets/panel-toc.php | 4 -- site/snippets/side-panel.php | 31 +++++++++++ site/snippets/toc.php | 2 +- site/templates/home.php | 2 +- 16 files changed, 103 insertions(+), 115 deletions(-) rename assets/css/src/{_nav.scss => _side-panel.scss} (99%) delete mode 100644 site/snippets/nav.php delete mode 100644 site/snippets/panel-toc.php create mode 100644 site/snippets/side-panel.php diff --git a/assets/css/src/_footer.scss b/assets/css/src/_footer.scss index 53d7479..f88cfbd 100644 --- a/assets/css/src/_footer.scss +++ b/assets/css/src/_footer.scss @@ -2,8 +2,8 @@ position: fixed; bottom: 0; box-sizing: border-box; - border-bottom: 0; + z-index: 2; } [data-template="home"] #main-footer { @@ -20,19 +20,9 @@ border-top: 1px solid var(--color-primary); background-color: var(--color-background); } - #main-footer .open-nav-wrapper:has([data-open-panel="toc"]) { - margin-right: 50px; - } } -@media screen and (min-width: 1100px) { - /* On mobile > 1100px, le bouton table des matières n'est pas nécessaire car la TOC est visible */ - #main-footer .open-nav-wrapper:has([data-open-panel="toc"]) { - display: none !important; - } -} - -#main-footer li:not(.open-nav-wrapper) { +#main-footer li:not(.footer-btn-wrapper) { display: none; } @@ -43,16 +33,16 @@ width: calc(100% - var(--unit--vertical) * 2); } -#main-footer button.open-nav { +#main-footer button.plus { transform: translateY(-2px); } -[data-template="home"] .title-wrapper button.open-nav { +[data-template="home"] .title-wrapper button.plus[data-open-panel] { display: inline-block !important; } @media screen and (max-width: 640px) { - #main-footer .open-nav { + #main-footer .footer-btn-wrapper button { display: flex; justify-content: center; outline: none; @@ -80,15 +70,15 @@ display: block; } - #main-footer button.open-nav { + #main-footer button.plus { margin-bottom: var(--unit--vertical); } - [data-template="home"] #main-footer .open-nav-wrapper { + [data-template="home"] #main-footer .footer-btn-wrapper { display: none !important; } - .open-nav-wrapper { + .footer-btn-wrapper { padding: 0; border: none; background-color: transparent; diff --git a/assets/css/src/_nav.scss b/assets/css/src/_side-panel.scss similarity index 99% rename from assets/css/src/_nav.scss rename to assets/css/src/_side-panel.scss index e30dd0f..df2d22c 100644 --- a/assets/css/src/_nav.scss +++ b/assets/css/src/_side-panel.scss @@ -16,7 +16,7 @@ overflow: auto; width: 100vw; height: 100dvh; - top: 0; + top: 0; background-color: var(--color-background); outline: 1px solid var(--color-primary); transition: all 0.5s var(--curve-sine); @@ -199,7 +199,7 @@ button.see-more { } @media screen and (min-width: 640px) { - nav.panel { + .side-panel { width: 40rem; } diff --git a/assets/css/src/_toc.scss b/assets/css/src/_toc.scss index 48f9990..e1cac27 100644 --- a/assets/css/src/_toc.scss +++ b/assets/css/src/_toc.scss @@ -19,7 +19,7 @@ } } -.panel-toc .toc { +.side-panel__view[data-view="toc"] .toc { padding: var(--unit--vertical) var(--unit--horizontal); } diff --git a/assets/css/src/_toggle-light-mode.scss b/assets/css/src/_toggle-light-mode.scss index 47b44e8..5446a32 100644 --- a/assets/css/src/_toggle-light-mode.scss +++ b/assets/css/src/_toggle-light-mode.scss @@ -1,31 +1,34 @@ -.theme-toggler{ - position: fixed; - right: 0; - bottom: 0; - padding: calc((var(--unit--vertical) / 2) / 2) calc(var(--unit--horizontal) / 2); - margin: calc((var(--unit--vertical) / 2) / 2) calc(var(--unit--horizontal) / 2); - margin-bottom: calc(var(--unit--vertical) - ((var(--unit--vertical) / 2) / 2)); - z-index: 100; +.theme-toggler { + position: fixed; + right: 0; + bottom: 0; + padding: calc((var(--unit--vertical) / 2) / 2) + calc(var(--unit--horizontal) / 2); + margin: calc((var(--unit--vertical) / 2) / 2) + calc(var(--unit--horizontal) / 2); + margin-bottom: calc( + var(--unit--vertical) - ((var(--unit--vertical) / 2) / 2) + ); + z-index: 1; } .theme-toggler-icon { - width: 1.2rem; - height: 1.2rem; + width: 1.2rem; + height: 1.2rem; - background-color: var(--color-primary); - - mask-size: cover; - -webkit-mask-size: cover; + background-color: var(--color-primary); - mask: var(--icon-theme-toggler) no-repeat center; - -webkit-mask: var(--icon-theme-toggler) no-repeat center; + mask-size: cover; + -webkit-mask-size: cover; + + mask: var(--icon-theme-toggler) no-repeat center; + -webkit-mask: var(--icon-theme-toggler) no-repeat center; } @media screen and (max-width: 640px) { - .theme-toggler{ - margin-bottom: calc((var(--unit--vertical) / 2) / 2); - } - .theme-toggler-icon { - width: 1.1rem; - height: 1.1rem; - } - -} \ No newline at end of file + .theme-toggler { + margin-bottom: calc((var(--unit--vertical) / 2) / 2); + } + .theme-toggler-icon { + width: 1.1rem; + height: 1.1rem; + } +} diff --git a/assets/css/style.css b/assets/css/style.css index 5bb4915..9f83768 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -865,7 +865,7 @@ button.see-more { } @media screen and (min-width: 640px) { - nav.panel { + .side-panel { width: 40rem; } .panel { @@ -1078,6 +1078,7 @@ body.full-width #main-content { bottom: 0; box-sizing: border-box; border-bottom: 0; + z-index: 2; } [data-template=home] #main-footer { @@ -1094,17 +1095,8 @@ body.full-width #main-content { border-top: 1px solid var(--color-primary); background-color: var(--color-background); } - #main-footer .open-nav-wrapper:has([data-open-panel=toc]) { - margin-right: 50px; - } } -@media screen and (min-width: 1100px) { - /* On mobile > 1100px, le bouton table des matières n'est pas nécessaire car la TOC est visible */ - #main-footer .open-nav-wrapper:has([data-open-panel=toc]) { - display: none !important; - } -} -#main-footer li:not(.open-nav-wrapper) { +#main-footer li:not(.footer-btn-wrapper) { display: none; } @@ -1116,16 +1108,16 @@ body.full-width #main-content { width: calc(100% - var(--unit--vertical) * 2); } -#main-footer button.open-nav { +#main-footer button.plus { transform: translateY(-2px); } -[data-template=home] .title-wrapper button.open-nav { +[data-template=home] .title-wrapper button.plus[data-open-panel] { display: inline-block !important; } @media screen and (max-width: 640px) { - #main-footer .open-nav { + #main-footer .footer-btn-wrapper button { display: flex; justify-content: center; outline: none; @@ -1151,13 +1143,13 @@ body.full-width #main-content { #main-footer ul { display: block; } - #main-footer button.open-nav { + #main-footer button.plus { margin-bottom: var(--unit--vertical); } - [data-template=home] #main-footer .open-nav-wrapper { + [data-template=home] #main-footer .footer-btn-wrapper { display: none !important; } - .open-nav-wrapper { + .footer-btn-wrapper { padding: 0; border: none; background-color: transparent; @@ -1170,7 +1162,7 @@ body.full-width #main-content { padding: calc(var(--unit--vertical) / 2 / 2) calc(var(--unit--horizontal) / 2); margin: calc(var(--unit--vertical) / 2 / 2) calc(var(--unit--horizontal) / 2); margin-bottom: calc(var(--unit--vertical) - var(--unit--vertical) / 2 / 2); - z-index: 100; + z-index: 1; } .theme-toggler-icon { @@ -1291,7 +1283,7 @@ body.full-width #main-content { padding-top: calc(var(--unit--vertical) / 2); } } -.panel-toc .toc { +.side-panel__view[data-view=toc] .toc { padding: var(--unit--vertical) var(--unit--horizontal); } diff --git a/assets/css/style.css.map b/assets/css/style.css.map index e3b6ba2..56ef74e 100644 --- a/assets/css/style.css.map +++ b/assets/css/style.css.map @@ -1 +1 @@ -{"version":3,"sources":["style.css","src/_reset.scss","src/_html.scss","src/_generic.scss","src/_texts.scss","src/_header.scss","src/_nav.scss","src/_article.scss","src/_virtual.scss","src/_home.scss","src/_grid.scss","src/_newsletter.scss","src/_footer.scss","src/_toggle-light-mode.scss","src/_print.scss","src/_toc.scss","style.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file +{"version":3,"sources":["style.css","src/_reset.scss","src/_html.scss","src/_generic.scss","src/_texts.scss","src/_header.scss","src/_side-panel.scss","src/_article.scss","src/_virtual.scss","src/_home.scss","src/_grid.scss","src/_newsletter.scss","src/_footer.scss","src/_toggle-light-mode.scss","src/_print.scss","src/_toc.scss","style.scss"],"names":[],"mappings":"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","file":"style.css"} \ No newline at end of file diff --git a/assets/css/style.scss b/assets/css/style.scss index 365fb7c..2e7f4ab 100644 --- a/assets/css/style.scss +++ b/assets/css/style.scss @@ -3,7 +3,7 @@ @import "src/generic"; @import "src/texts"; @import "src/header"; -@import "src/nav"; +@import "src/side-panel"; @import "src/article"; @import "src/virtual"; @import "src/home"; diff --git a/assets/js/script.js b/assets/js/script.js index 99c2327..5b35ac3 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -69,11 +69,11 @@ function toggleLogoState() { } function toggleFooterState() { if (scrollY > 90) { - document.querySelectorAll(".open-nav-wrapper").forEach(element => { + document.querySelectorAll(".footer-btn-wrapper").forEach(element => { element.classList.remove("hidden"); }); } else { - document.querySelectorAll(".open-nav-wrapper").forEach(element => { + document.querySelectorAll(".footer-btn-wrapper").forEach(element => { element.classList.add("hidden"); }); } @@ -138,9 +138,14 @@ function closeAllPanels() { document.body.classList.remove("no-scroll"); } -function openPanel(name) { +function openPanel(name, view) { const panel = document.querySelector(`.panel[data-panel="${name}"]`); if (panel) { + if (view) { + panel.querySelectorAll('[data-view]').forEach(v => v.classList.add('hidden')); + const target = panel.querySelector(`[data-view="${view}"]`); + if (target) target.classList.remove('hidden'); + } panel.classList.add("panel--visible"); navOverlay.classList.add("nav-overlay--visible"); document.body.classList.add("no-scroll"); @@ -179,7 +184,7 @@ document.addEventListener("DOMContentLoaded", () => { }); }); - const navSortBtns = document.querySelectorAll("nav .sort-btn"); + const navSortBtns = document.querySelectorAll(".side-panel .sort-btn"); const navSections = document.querySelectorAll( ".panel__all-texts, .panel__collection" ); @@ -207,7 +212,7 @@ document.addEventListener("DOMContentLoaded", () => { document.querySelectorAll("[data-open-panel]").forEach((btn) => { btn.addEventListener("click", () => { - openPanel(btn.dataset.openPanel); + openPanel(btn.dataset.openPanel, btn.dataset.view); }); }); @@ -218,7 +223,7 @@ document.addEventListener("DOMContentLoaded", () => { navOverlay.addEventListener("click", closeAllPanels); // Fermer le panel TOC quand on clique sur un lien - document.querySelectorAll(".panel-toc .toc a").forEach((link) => { + document.querySelectorAll('[data-view="toc"] .toc a').forEach((link) => { link.addEventListener("click", closeAllPanels); }); }); diff --git a/site/snippets/cover.php b/site/snippets/cover.php index fc22ac3..01db5c4 100644 --- a/site/snippets/cover.php +++ b/site/snippets/cover.php @@ -8,9 +8,6 @@ $isOpen ??= false; title() ?> - hasToc()): ?> - - text()): ?>
text() ?> diff --git a/site/snippets/footer.php b/site/snippets/footer.php index 93ebd30..009485e 100644 --- a/site/snippets/footer.php +++ b/site/snippets/footer.php @@ -1,15 +1,14 @@ is(page('lettre')) && !$page->is(page('a-propos'))): ?>