From a0ac1988d7d186ac07aaf675dab9e891632cf632 Mon Sep 17 00:00:00 2001 From: Ahmet Bora Date: Tue, 6 Aug 2019 10:10:58 +0300 Subject: [PATCH] Initial version --- LICENSE | 21 +++++++ README.md | 53 +++++++++++++++++ composer.json | 25 ++++++++ index.php | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 256 insertions(+) create mode 100644 LICENSE create mode 100644 README.md create mode 100644 composer.json create mode 100644 index.php diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a75763e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Ahmet Bora + +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. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2f33928 --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +# Kirby Template Hooks + +Kirby template hooks allow you to manage hooks for page and file templates more easily. + +## Installation + +### Installation with composer + +```ssh +composer require afbora/kirby-template-hooks +``` + +### Add as git submodule + +```ssh +git submodule add https://github.com/afbora/kirby-template-hooks.git site/plugins/kirby-template-hooks +``` + +## Usage + +### Pages + +**Usage:** `page.TEMPLATE_NAME.ACTION_NAME:before/after` + +```php + [ + 'page.product.update:after' => function ($newPage, $oldPage) { + // your code goes here + } + ] +]; + +``` + +### Files + +**Usage:** `file.TEMPLATE_NAME.ACTION_NAME:before/after` + +```php + [ + 'file.cover.update:after' => function ($newFile, $oldFile) { + // your code goes here + } + ] +]; + +``` diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9c311f0 --- /dev/null +++ b/composer.json @@ -0,0 +1,25 @@ +{ + "name": "afbora/kirby-template-hooks", + "description": "Enable page and file template hooks for Kirby 3", + "keywords": [], + "version": "1.0", + "type": "kirby-plugin", + "license": "MIT", + "authors": [ + { + "name": "Ahmet Bora", + "email": "ahmet.bora@pixelturk.net" + } + ], + "require": { + "php": "^7.1.3", + "getkirby/composer-installer": "^1.1.4" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..760f9fe --- /dev/null +++ b/index.php @@ -0,0 +1,157 @@ + [ + 'file.changeName:after' => function ($newFile, $oldFile) { + $template = $newFile->template(); + kirby()->trigger("file.{$template}.changeName:after", $newFile, $oldFile); + }, + + 'file.changeName:before' => function ($file, $name) { + $template = $file->template(); + kirby()->trigger("file.{$template}.changeName:before", $file, $name); + }, + + 'file.changeSort:after' => function ($newFile, $oldFile) { + $template = $newFile->template(); + kirby()->trigger("file.{$template}.changeSort:after", $newFile, $oldFile); + }, + + 'file.changeSort:before' => function ($file, $position) { + $template = $file->template(); + kirby()->trigger("file.{$template}.changeSort:before", $file, $position); + }, + + 'file.create:after' => function ($file) { + $template = $file->template(); + kirby()->trigger("file.{$template}.create:after", $file); + }, + + 'file.create:before' => function ($file, $upload) { + $template = $file->template(); + kirby()->trigger("file.{$template}.create:before", $file, $upload); + }, + + 'file.delete:after' => function ($status, $file) { + $template = $file->template(); + kirby()->trigger("file.{$template}.delete:after", $status, $file); + }, + + 'file.delete:before' => function ($file) { + $template = $file->template(); + kirby()->trigger("file.{$template}.delete:before", $file); + }, + + 'file.replace:after' => function ($newFile, $oldFile) { + $template = $newFile->template(); + kirby()->trigger("file.{$template}.replace:after", $newFile, $oldFile); + }, + + 'file.replace:before' => function ($file, $upload) { + $template = $file->template(); + kirby()->trigger("file.{$template}.replace:before", $file, $upload); + }, + + 'file.update:after' => function ($newFile, $oldFile) { + $template = $newFile->template(); + kirby()->trigger("file.{$template}.update:after", $newFile, $oldFile); + }, + + 'file.update:before' => function ($file, $input) { + $template = $file->template(); + kirby()->trigger("file.{$template}.update:before", $file, $input); + }, + + 'page.changeNum:after' => function ($newPage, $oldPage) { + $template = $newPage->intendedTemplate(); + kirby()->trigger("page.{$template}.changeNum:after", $newPage, $oldPage); + }, + + 'page.changeNum:before' => function ($page, $num) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.changeNum:before", $page, $num); + }, + + 'page.changeSlug:after' => function ($newPage, $oldPage) { + $template = $newPage->intendedTemplate(); + kirby()->trigger("page.{$template}.changeSlug:after", $newPage, $oldPage); + }, + + 'page.changeSlug:before' => function ($page, $slug) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.changeSlug:before", $page, $slug); + }, + + 'page.changeStatus:after' => function ($newPage, $oldPage) { + $template = $newPage->intendedTemplate(); + kirby()->trigger("page.{$template}.changeStatus:after", $newPage, $oldPage); + }, + + 'page.changeStatus:before' => function ($page, $status, $position) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.changeStatus:before", $page, $status, $position); + }, + + 'page.changeTemplate:after' => function ($newPage, $oldPage) { + $template = $newPage->intendedTemplate(); + kirby()->trigger("page.{$template}.changeTemplate:after", $newPage, $oldPage); + }, + + 'page.changeTemplate:before' => function ($page, $template) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.changeTemplate:before", $page, $template); + }, + + 'page.changeTitle:after' => function ($newPage, $oldPage) { + $template = $newPage->intendedTemplate(); + kirby()->trigger("page.{$template}.changeTitle:after", $newPage, $oldPage); + }, + + 'page.changeTitle:before' => function ($page, $title) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.changeTitle:before", $page, $title); + }, + + 'page.create:after' => function ($page) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.create:after", $page); + }, + + 'page.create:before' => function ($parent, $input) { + $template = $parent->intendedTemplate(); + kirby()->trigger("page.{$template}.create:before", $parent, $input); + }, + + 'page.delete:after' => function ($status, $page) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.delete:after", $status, $page); + }, + + 'page.delete:before' => function ($page) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.delete:before", $page); + }, + + 'page.duplicate:after' => function ($duplicatePage) { + $template = $duplicatePage->intendedTemplate(); + kirby()->trigger("page.{$template}.duplicate:after", $duplicatePage); + }, + + 'page.duplicate:before' => function ($originalPage, $input) { + $template = $originalPage->intendedTemplate(); + kirby()->trigger("page.{$template}.duplicate:before", $originalPage, $input); + }, + + 'page.update:after' => function ($newPage, $oldPage) { + $template = $newPage->intendedTemplate(); + kirby()->trigger("page.{$template}.update:after", $newPage, $oldPage); + }, + + 'page.update:before' => function ($page, $values, $strings) { + $template = $page->intendedTemplate(); + kirby()->trigger("page.{$template}.update:before", $page, $values, $strings); + } + ] +]);