diff --git a/.editorconfig b/.editorconfig index 257221d2..5e9a93ea 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,3 +12,6 @@ trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false + +[*.yml] +indent_size = 2 diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml new file mode 100644 index 00000000..91e101e6 --- /dev/null +++ b/.github/workflows/jekyll-gh-pages.yml @@ -0,0 +1,57 @@ +name: Deploy Jekyll with GitHub Pages + +on: + pull_request: # TEMPORARY !!! + push: + branches: ["master"] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Install dependencies + run: | + docker run --rm \ + --user $(id -u):$(id -g) \ + -v "${{ github.workspace }}:/srv/jekyll" \ + -w /srv/jekyll \ + -e BUNDLE_PATH=/srv/jekyll/vendor/bundle \ + jekyll/jekyll:4.2.2 \ + bundle install + + - name: Build site + run: | + docker run --rm \ + --user $(id -u):$(id -g) \ + -v "${{ github.workspace }}:/srv/jekyll" \ + -w /srv/jekyll \ + -e BUNDLE_PATH=/srv/jekyll/vendor/bundle \ + jekyll/jekyll:4.2.2 \ + bundle exec jekyll build -d ./_site + + - name: Upload artifact + uses: actions/upload-pages-artifact@v4 + + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore index 4f895a9d..2f2678c9 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,8 @@ Thumbs.db .DS_Store # po4a .mo files -*.mo \ No newline at end of file +*.mo + +# Jekyll +/.jekyll-cache/ +/_site/ diff --git a/.nojekyll b/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..a2ec72f6 --- /dev/null +++ b/Gemfile @@ -0,0 +1,12 @@ +source "https://rubygems.org" + +gem "jekyll", "~> 4.2.2" +gem "minima", "~> 2.5.2" +gem "webrick", "~> 1.8" + +group :jekyll_plugins do + gem "jekyll-seo-tag", "~> 2.8.0" + gem "jekyll-optional-front-matter", "~> 0.3.2" + gem "jekyll-readme-index", "~> 0.3.0" + gem "jekyll-relative-links", "~> 0.7.0" +end diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 00000000..86ef4217 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,88 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.8) + public_suffix (>= 2.0.2, < 8.0) + colorator (1.1.0) + concurrent-ruby (1.3.6) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.2-x86_64-linux-musl) + forwardable-extended (2.6.0) + http_parser.rb (0.8.0) + i18n (1.14.8) + concurrent-ruby (~> 1.0) + jekyll (4.2.2) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (~> 1.0) + jekyll-sass-converter (~> 2.0) + jekyll-watch (~> 2.0) + kramdown (~> 2.3) + kramdown-parser-gfm (~> 1.0) + liquid (~> 4.0) + mercenary (~> 0.4.0) + pathutil (~> 0.9) + rouge (~> 3.0) + safe_yaml (~> 1.0) + terminal-table (~> 2.0) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-relative-links (0.7.0) + jekyll (>= 3.3, < 5.0) + jekyll-sass-converter (2.2.0) + sassc (> 2.0.1, < 3.0) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.5.1) + rexml (>= 3.3.9) + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.4.0) + minima (2.5.2) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (6.0.2) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.4) + rouge (3.30.0) + safe_yaml (1.0.5) + sassc (2.4.0) + ffi (~> 1.9) + terminal-table (2.0.0) + unicode-display_width (~> 1.1, >= 1.1.1) + unicode-display_width (1.8.0) + webrick (1.9.2) + +PLATFORMS + x86_64-linux-musl + +DEPENDENCIES + jekyll (~> 4.2.2) + jekyll-optional-front-matter (~> 0.3.2) + jekyll-readme-index (~> 0.3.0) + jekyll-relative-links (~> 0.7.0) + jekyll-seo-tag (~> 2.8.0) + minima (~> 2.5.2) + webrick (~> 1.8) + +BUNDLED WITH + 2.3.25 diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..a8de00dd --- /dev/null +++ b/Makefile @@ -0,0 +1,7 @@ +serve: + docker run --rm -it \ + -p 4000:4000 \ + -v $(PWD):/srv/jekyll \ + --name yiisoft-docs-dev \ + jekyll/jekyll:4.2.2 \ + jekyll serve --host 0.0.0.0 --livereload diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..a8a99461 --- /dev/null +++ b/_config.yml @@ -0,0 +1,10 @@ +defaults: + - scope: + path: "" + values: + layout: "default" + render_with_liquid: false +baseurl: "/docs" +theme: minima +relative_links: + enabled: true diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 00000000..f819227d --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,28 @@ + + + + {%- include head.html -%} + + + + {%- include header.html -%} + +
+
+ {{ content }} +
+
+ + {%- include footer.html -%} + + + + + + diff --git a/_translations/guide/po/es/start_workflow.md.po b/_translations/guide/po/es/start_workflow.md.po index b6b2c01c..924f1674 100644 --- a/_translations/guide/po/es/start_workflow.md.po +++ b/_translations/guide/po/es/start_workflow.md.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2025-10-19 11:32+0000\n" +"POT-Creation-Date: 2025-12-20 13:19+0000\n" "PO-Revision-Date: 2025-09-04 11:19+0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -40,7 +40,7 @@ msgstr "" #. type: Plain text #: ../../guide/en/start/workflow.md -msgid "The installed application has only the homepage, which displays when you access the URL `http://localhost/`. It shares a common layout that you can reuse on further pages." +msgid "The installed application contains only one page, accessible at `http://localhost/`. It shares a common layout that you can reuse on further pages." msgstr "" #. type: Plain text @@ -133,9 +133,24 @@ msgstr "" msgid "The following diagram shows how an application handles a request." msgstr "" -#. type: Plain text +#. type: Fenced code block (mermaid) #: ../../guide/en/start/workflow.md -msgid "![Request Lifecycle](img/request-lifecycle.svg)" +#, no-wrap +msgid "" +"flowchart LR\n" +" user[User's client] --> index\n" +" index[index.php] --> DI[Initialize Dependency Container]\n" +" config[configs] -.-> DI\n" +" DI --> RequestFactory[RequestFactory]\n" +" RequestFactory -->|Request| app[Application]\n" +" app -->|Request| middleware[Middleware]\n" +" middleware -->|Request| router[Router]\n" +" router -->|Request| action[Action Handler]\n" +" action -->|Response| emitter[SapiEmitter]\n" +" router -->|Response| emitter\n" +" middleware -->|Response| emitter\n" +" app -->|Response| emitter\n" +" emitter --> user\n" msgstr "" #. type: Bullet: '1. ' diff --git a/_translations/guide/po/id/start_workflow.md.po b/_translations/guide/po/id/start_workflow.md.po index 185c9f50..cbc391a2 100644 --- a/_translations/guide/po/id/start_workflow.md.po +++ b/_translations/guide/po/id/start_workflow.md.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2025-10-19 11:32+0000\n" +"POT-Creation-Date: 2025-12-20 13:19+0000\n" "PO-Revision-Date: 2025-09-04 11:19+0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -39,7 +39,7 @@ msgstr "" #. type: Plain text #: ../../guide/en/start/workflow.md -msgid "The installed application has only the homepage, which displays when you access the URL `http://localhost/`. It shares a common layout that you can reuse on further pages." +msgid "The installed application contains only one page, accessible at `http://localhost/`. It shares a common layout that you can reuse on further pages." msgstr "" #. type: Plain text @@ -132,9 +132,24 @@ msgstr "" msgid "The following diagram shows how an application handles a request." msgstr "" -#. type: Plain text +#. type: Fenced code block (mermaid) #: ../../guide/en/start/workflow.md -msgid "![Request Lifecycle](img/request-lifecycle.svg)" +#, no-wrap +msgid "" +"flowchart LR\n" +" user[User's client] --> index\n" +" index[index.php] --> DI[Initialize Dependency Container]\n" +" config[configs] -.-> DI\n" +" DI --> RequestFactory[RequestFactory]\n" +" RequestFactory -->|Request| app[Application]\n" +" app -->|Request| middleware[Middleware]\n" +" middleware -->|Request| router[Router]\n" +" router -->|Request| action[Action Handler]\n" +" action -->|Response| emitter[SapiEmitter]\n" +" router -->|Response| emitter\n" +" middleware -->|Response| emitter\n" +" app -->|Response| emitter\n" +" emitter --> user\n" msgstr "" #. type: Bullet: '1. ' diff --git a/_translations/guide/po/ru/start_workflow.md.po b/_translations/guide/po/ru/start_workflow.md.po index d9268109..f6c70341 100644 --- a/_translations/guide/po/ru/start_workflow.md.po +++ b/_translations/guide/po/ru/start_workflow.md.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2025-10-19 11:32+0000\n" +"POT-Creation-Date: 2025-12-20 13:19+0000\n" "PO-Revision-Date: 2025-09-04 11:19+0500\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -41,7 +41,7 @@ msgstr "Определение псевдонимов " msgid "The following diagram shows how an application handles a request." msgstr "" -#. type: Plain text +#. type: Fenced code block (mermaid) #: ../../guide/en/start/workflow.md -msgid "![Request Lifecycle](img/request-lifecycle.svg)" +#, no-wrap +msgid "" +"flowchart LR\n" +" user[User's client] --> index\n" +" index[index.php] --> DI[Initialize Dependency Container]\n" +" config[configs] -.-> DI\n" +" DI --> RequestFactory[RequestFactory]\n" +" RequestFactory -->|Request| app[Application]\n" +" app -->|Request| middleware[Middleware]\n" +" middleware -->|Request| router[Router]\n" +" router -->|Request| action[Action Handler]\n" +" action -->|Response| emitter[SapiEmitter]\n" +" router -->|Response| emitter\n" +" middleware -->|Response| emitter\n" +" app -->|Response| emitter\n" +" emitter --> user\n" msgstr "" #. type: Bullet: '1. ' diff --git a/_translations/guide/pot/start_workflow.md.pot b/_translations/guide/pot/start_workflow.md.pot index 94ea186f..65235a19 100644 --- a/_translations/guide/pot/start_workflow.md.pot +++ b/_translations/guide/pot/start_workflow.md.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2025-10-19 11:32+0000\n" +"POT-Creation-Date: 2025-12-20 13:19+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -47,9 +47,8 @@ msgstr "" #. type: Plain text #: ../../guide/en/start/workflow.md msgid "" -"The installed application has only the homepage, which displays when you " -"access the URL `http://localhost/`. It shares a common layout that you can " -"reuse on further pages." +"The installed application contains only one page, accessible at `http://" +"localhost/`. It shares a common layout that you can reuse on further pages." msgstr "" #. type: Plain text @@ -165,9 +164,24 @@ msgstr "" msgid "The following diagram shows how an application handles a request." msgstr "" -#. type: Plain text +#. type: Fenced code block (mermaid) #: ../../guide/en/start/workflow.md -msgid "![Request Lifecycle](img/request-lifecycle.svg)" +#, no-wrap +msgid "" +"flowchart LR\n" +" user[User's client] --> index\n" +" index[index.php] --> DI[Initialize Dependency Container]\n" +" config[configs] -.-> DI\n" +" DI --> RequestFactory[RequestFactory]\n" +" RequestFactory -->|Request| app[Application]\n" +" app -->|Request| middleware[Middleware]\n" +" middleware -->|Request| router[Router]\n" +" router -->|Request| action[Action Handler]\n" +" action -->|Response| emitter[SapiEmitter]\n" +" router -->|Response| emitter\n" +" middleware -->|Response| emitter\n" +" app -->|Response| emitter\n" +" emitter --> user\n" msgstr "" #. type: Bullet: '1. ' diff --git a/guide/es/start/workflow.md b/guide/es/start/workflow.md index 696d9556..2adb636b 100644 --- a/guide/es/start/workflow.md +++ b/guide/es/start/workflow.md @@ -10,9 +10,9 @@ you need. ## Functionality -The installed application has only the homepage, which displays when you -access the URL `http://localhost/`. It shares a common layout that you can -reuse on further pages. +The installed application contains only one page, accessible at +`http://localhost/`. It shares a common layout that you can reuse on +further pages. index + index[index.php] --> DI[Initialize Dependency Container] + config[configs] -.-> DI + DI --> RequestFactory[RequestFactory] + RequestFactory -->|Request| app[Application] + app -->|Request| middleware[Middleware] + middleware -->|Request| router[Router] + router -->|Request| action[Action Handler] + action -->|Response| emitter[SapiEmitter] + router -->|Response| emitter + middleware -->|Response| emitter + app -->|Response| emitter + emitter --> user +``` 1. A user makes a request to the [entry script](../structure/entry-script.md) `public/index.php`. diff --git a/guide/id/start/workflow.md b/guide/id/start/workflow.md index 696d9556..2adb636b 100644 --- a/guide/id/start/workflow.md +++ b/guide/id/start/workflow.md @@ -10,9 +10,9 @@ you need. ## Functionality -The installed application has only the homepage, which displays when you -access the URL `http://localhost/`. It shares a common layout that you can -reuse on further pages. +The installed application contains only one page, accessible at +`http://localhost/`. It shares a common layout that you can reuse on +further pages. index + index[index.php] --> DI[Initialize Dependency Container] + config[configs] -.-> DI + DI --> RequestFactory[RequestFactory] + RequestFactory -->|Request| app[Application] + app -->|Request| middleware[Middleware] + middleware -->|Request| router[Router] + router -->|Request| action[Action Handler] + action -->|Response| emitter[SapiEmitter] + router -->|Response| emitter + middleware -->|Response| emitter + app -->|Response| emitter + emitter --> user +``` 1. A user makes a request to the [entry script](../structure/entry-script.md) `public/index.php`. diff --git a/guide/ru/start/workflow.md b/guide/ru/start/workflow.md index 696d9556..2adb636b 100644 --- a/guide/ru/start/workflow.md +++ b/guide/ru/start/workflow.md @@ -10,9 +10,9 @@ you need. ## Functionality -The installed application has only the homepage, which displays when you -access the URL `http://localhost/`. It shares a common layout that you can -reuse on further pages. +The installed application contains only one page, accessible at +`http://localhost/`. It shares a common layout that you can reuse on +further pages. index + index[index.php] --> DI[Initialize Dependency Container] + config[configs] -.-> DI + DI --> RequestFactory[RequestFactory] + RequestFactory -->|Request| app[Application] + app -->|Request| middleware[Middleware] + middleware -->|Request| router[Router] + router -->|Request| action[Action Handler] + action -->|Response| emitter[SapiEmitter] + router -->|Response| emitter + middleware -->|Response| emitter + app -->|Response| emitter + emitter --> user +``` 1. A user makes a request to the [entry script](../structure/entry-script.md) `public/index.php`.