From 8096c535c81ca85c2f5b292535ca1391c04dc494 Mon Sep 17 00:00:00 2001 From: Vivalldi Date: Sat, 19 Mar 2016 16:29:33 -0400 Subject: [PATCH] New Plugin Comp; Fix renaming --- .../Console/Cli/DevTools/DevToolsCommand.php | 5 +- .../Console/Cli/DevTools/NewPluginCommand.php | 7 ++ .../plugin/blank/blueprints.yaml.twig | 15 +++ .../components/plugin/blank/plugin.php.twig | 4 +- .../plugin/random/CHANGELOG.md.twig | 5 + .../components/plugin/random/LICENSE.twig | 21 ++++ .../components/plugin/random/README.md.twig | 100 ++++++++++++++++++ .../plugin/random/assets/readme_1.png | Bin 0 -> 61785 bytes .../plugin/random/blueprints.yaml.twig | 57 ++++++++++ .../components/plugin/random/plugin.php.twig | 75 +++++++++++++ .../components/plugin/random/plugin.yaml.twig | 5 + .../components/theme/bootstrap/theme.php.twig | 2 +- .../theme/inheritence/theme.php.twig | 2 +- 13 files changed, 293 insertions(+), 5 deletions(-) create mode 100644 system/src/Grav/Console/Cli/DevTools/components/plugin/random/CHANGELOG.md.twig create mode 100644 system/src/Grav/Console/Cli/DevTools/components/plugin/random/LICENSE.twig create mode 100644 system/src/Grav/Console/Cli/DevTools/components/plugin/random/README.md.twig create mode 100644 system/src/Grav/Console/Cli/DevTools/components/plugin/random/assets/readme_1.png create mode 100644 system/src/Grav/Console/Cli/DevTools/components/plugin/random/blueprints.yaml.twig create mode 100644 system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.php.twig create mode 100644 system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.yaml.twig diff --git a/system/src/Grav/Console/Cli/DevTools/DevToolsCommand.php b/system/src/Grav/Console/Cli/DevTools/DevToolsCommand.php index d64fcc5dc..34ae50076 100644 --- a/system/src/Grav/Console/Cli/DevTools/DevToolsCommand.php +++ b/system/src/Grav/Console/Cli/DevTools/DevToolsCommand.php @@ -80,7 +80,7 @@ class DevToolsCommand extends ConsoleCommand protected function createComponent() { $name = $this->component['name']; - $folderName = $this->inflector->hyphenize($name); + $folderName = strtolower($this->inflector->hyphenize($name)); $type = $this->component['type']; $template = $this->component['template']; @@ -109,6 +109,9 @@ class DevToolsCommand extends ConsoleCommand $file->delete(); } } + + rename($componentFolder . DS . $type . '.php', $componentFolder . DS . $this->inflector->hyphenize($name) . '.php'); + rename($componentFolder . DS . $type . '.yaml', $componentFolder . DS . $this->inflector->hyphenize($name) . '.yaml'); } /** diff --git a/system/src/Grav/Console/Cli/DevTools/NewPluginCommand.php b/system/src/Grav/Console/Cli/DevTools/NewPluginCommand.php index 6bfdb742e..27021d4dd 100644 --- a/system/src/Grav/Console/Cli/DevTools/NewPluginCommand.php +++ b/system/src/Grav/Console/Cli/DevTools/NewPluginCommand.php @@ -132,6 +132,13 @@ class NewPluginCommand extends DevToolsCommand $this->component['author']['email'] = $helper->ask($this->input, $this->output, $question); } + + $question = new ChoiceQuestion( + 'Please choose a base plugin: ', + array('blank', 'random') + ); + $this->component['template'] = $helper->ask($this->input, $this->output, $question); + $this->createComponent(); } diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/blueprints.yaml.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/blueprints.yaml.twig index 6da9784b2..ed4d8af8a 100644 --- a/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/blueprints.yaml.twig +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/blueprints.yaml.twig @@ -6,3 +6,18 @@ author: name: {{ component.author.name }} email: {{ component.author.email }} license: MIT + + +form: + validation: strict + fields: + enabled: + type: toggle + label: Plugin status + highlight: 1 + default: 0 + options: + 1: Enabled + 0: Disabled + validate: + type: bool \ No newline at end of file diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/plugin.php.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/plugin.php.twig index 0166af4c0..5a975783d 100644 --- a/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/plugin.php.twig +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/blank/plugin.php.twig @@ -4,10 +4,10 @@ namespace Grav\Plugin; use Grav\Common\Plugin; /** - * Class {{ component.name|variableize }}Plugin + * Class {{ component.name|camelize }}Plugin * @package Grav\Plugin */ -class {{ component.name|variableize }}Plugin extends Plugin +class {{ component.name|camelize }}Plugin extends Plugin { /** * @var bool diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/random/CHANGELOG.md.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/CHANGELOG.md.twig new file mode 100644 index 000000000..37256e036 --- /dev/null +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/CHANGELOG.md.twig @@ -0,0 +1,5 @@ +# v0.1.0 +## {{ "now"|date("m/d/Y") }} + +1. [](#new) + * ChangeLog started... diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/random/LICENSE.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/LICENSE.twig new file mode 100644 index 000000000..015a4ae02 --- /dev/null +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/LICENSE.twig @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) {{ "now"|date("Y") }} {{ component.author.name }} + +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/system/src/Grav/Console/Cli/DevTools/components/plugin/random/README.md.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/README.md.twig new file mode 100644 index 000000000..ee323194d --- /dev/null +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/README.md.twig @@ -0,0 +1,100 @@ +# Grav {{ component.name|camelize }} Plugin + +`{{ component.name|camelize }}` is a [Grav][grav] Plugin which allows a random article to load based on its taxonomy filters. + +# Installation + +Installing the Random plugin can be done in one of two ways. Our GPM (Grav Package Manager) installation method enables you to quickly and easily install the plugin with a simple terminal command, while the manual method enables you to do so via a zip file. + +## GPM Installation (Preferred) + +The simplest way to install this plugin is via the [Grav Package Manager (GPM)](http://learn.getgrav.org/advanced/grav-gpm) through your system's Terminal (also called the command line). From the root of your Grav install type: + + bin/gpm install random + +This will install the Random plugin into your `/user/plugins` directory within Grav. Its files can be found under `/your/site/grav/user/plugins/random`. + +## Manual Installation + +To install this plugin, just download the zip version of this repository and unzip it under `/your/site/grav/user/plugins`. Then, rename the folder to `random`. You can find these files either on [GitHub](https://github.com/getgrav/grav-plugin-random) or via [GetGrav.org](http://getgrav.org/downloads/plugins#extras). + +You should now have all the plugin files under + + /your/site/grav/user/plugins/random + +>> NOTE: This plugin is a modular component for Grav which requires [Grav](http://github.com/getgrav/grav), the [Error](https://github.com/getgrav/grav-plugin-error) and [Problems](https://github.com/getgrav/grav-plugin-problems) plugins, and a theme to be installed in order to operate. + +# Usage + +`Random` creates a **route** that you define. Based on the **taxonomy** filters, it picks a random item. + +By default `Random` looks for all page that are have taxonomy that match those in the plugin's `filter` settings. For this content to find _anything_ you need to define at +least one page with a matching taxonomy. As the default value of the filter is `category: blog` you must have at least one page with this taxonomy. For example: + + --- + title: Home + taxonomy: + category: blog + --- + + # Grav is Running! + ## You have installed **Grav** successfully + + Congratulations! You have installed the **Base Grav Package** that provides a **simple page** and the default **antimatter** theme to get you started. + + +# Settings Defaults + + route: /random + filters: + category: blog + +# Customizing the Settings + +To customize the plugin, you first need to create an override config. To do so, create the folder `user/config/plugins` (if it doesn't exist already) and copy the [random.yaml](random.yaml) config file in there. + +Now you can edit it and tweak it however you prefer. + +For further help with the `filters` settings, please refer to our [Taxonomy][taxonomy] and [Headers][headers] documentation. + +# Creating a "Random Article" Button + +![Random](assets/readme_1.png) + +In our [Blog Skeleton](http://demo.getgrav.org/blog-skeleton/) we placed a button in the sidebar that pulls up a random blog post. Here is the code we used in the `sidebar.html.twig` template file to create this button. + + I'm Feeling Lucky! + +This button forwards the user to `/random` which is configured as the route for the random plugin. The `random.yaml` configuration file contains the following: + + enabled: true + route: /random + filters: { category: blog} + filter_combinator: and + +# Updating + +As development for the Random plugin continues, new versions may become available that add additional features and functionality, improve compatibility with newer Grav releases, and generally provide a better user experience. Updating Random is easy, and can be done through Grav's GPM system, as well as manually. + +## GPM Update (Preferred) + +The simplest way to update this plugin is via the [Grav Package Manager (GPM)](http://learn.getgrav.org/advanced/grav-gpm). You can do this with this by navigating to the root directory of your Grav install using your system's Terminal (also called command line) and typing the following: + + bin/gpm update random + +This command will check your Grav install to see if your Random plugin is due for an update. If a newer release is found, you will be asked whether or not you wish to update. To continue, type `y` and hit enter. The plugin will automatically update and clear Grav's cache. + +## Manual Update + +Manually updating Random is pretty simple. Here is what you will need to do to get this done: + +* Delete the `your/site/user/plugins/random` directory. +* Download the new version of the Random plugin from either [GitHub](https://github.com/getgrav/grav-plugin-random) or [GetGrav.org](http://getgrav.org/downloads/plugins#extras). +* Unzip the zip file in `your/site/user/plugins` and rename the resulting folder to `random`. +* Clear the Grav cache. The simplest way to do this is by going to the root Grav directory in terminal and typing `bin/grav clear-cache`. + +> Note: Any changes you have made to any of the files listed under this directory will also be removed and replaced by the new set. Any files located elsewhere (for example a YAML settings file placed in `user/config/plugins`) will remain intact. + +[taxonomy]: http://learn.getgrav.org/content/taxonomy +[headers]: http://learn.getgrav.org/content/headers +[grav]: http://github.com/getgrav/grav diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/random/assets/readme_1.png b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/assets/readme_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c143b22fa92d5f8e742e00b86a691a9f1797c49 GIT binary patch literal 61785 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 NUNh0lzIy-J{{a0}5Ags1 literal 0 HcmV?d00001 diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/random/blueprints.yaml.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/blueprints.yaml.twig new file mode 100644 index 000000000..eac9ade5c --- /dev/null +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/blueprints.yaml.twig @@ -0,0 +1,57 @@ +name: {{ component.name|titleize }} +version: 0.1.0 +description: {{ component.description }} +icon: refresh +author: + name: {{ component.author.name }} + email: {{ component.author.email }} +license: MIT + +form: + validation: strict + fields: + enabled: + type: toggle + label: Plugin status + highlight: 1 + default: 0 + options: + 1: Enabled + 0: Disabled + validate: + type: bool + + route: + type: text + size: medium + label: Route + default: /random + help: Default route of the random plugin + + redirect: + type: toggle + label: Redirect + highlight: 1 + default: 1 + options: + 1: Enabled + 0: Disabled + validate: + type: bool + + filters.category: + type: selectize + label: Category filter + help: Comma separated list of category names + validate: + type: commalist + + filter_combinator: + type: select + size: medium + classes: fancy + label: Filter Combinator + default: and + options: + and: And - Boolean && + or: Or - Boolean || diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.php.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.php.twig new file mode 100644 index 000000000..731d1550c --- /dev/null +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.php.twig @@ -0,0 +1,75 @@ + ['onPluginsInitialized', 0], + ]; + } + + /** + * Activate plugin if path matches to the configured one. + */ + public function onPluginsInitialized() + { + if ($this->isAdmin()) { + $this->active = false; + return; + } + + /** @var Uri $uri */ + $uri = $this->grav['uri']; + $route = $this->config->get('plugins.{{ component.name|hyphenize }}.route'); + + if ($route && $route == $uri->path()) { + $this->enable([ + 'onPageInitialized' => ['onPageInitialized', 0] + ]); + } + } + + /** + * Display random page. + */ + public function onPageInitialized() + { + /** @var Taxonomy $taxonomy_map */ + $taxonomy_map = $this->grav['taxonomy']; + + $filters = (array) $this->config->get('plugins.{{ component.name|hyphenize }}.filters'); + $operator = $this->config->get('plugins.{{ component.name|hyphenize }}.filter_combinator', 'and'); + + if (count($filters)) { + $collection = new Collection(); + $collection->append($taxonomy_map->findTaxonomy($filters, $operator)->toArray()); + if (count($collection)) { + unset($this->grav['page']); + $page = $collection->random()->current(); + + if ($this->config->get('plugins.{{ component.name|hyphenize }}.redirect', true)) { + $this->grav->redirect($page->url(true)); + } else { + // override the modified time + $page->modified(time()); + $this->grav['page'] = $page; + + // Convince the URI object that it is this random page... + $uri = $this->grav['uri']; + $uri->url = $uri->base().$page->url(); + $uri->init(); + } + } + } + } +} diff --git a/system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.yaml.twig b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.yaml.twig new file mode 100644 index 000000000..3491d2dea --- /dev/null +++ b/system/src/Grav/Console/Cli/DevTools/components/plugin/random/plugin.yaml.twig @@ -0,0 +1,5 @@ +enabled: true +route: /random +redirect: true +filters: { category: blog} +filter_combinator: and diff --git a/system/src/Grav/Console/Cli/DevTools/components/theme/bootstrap/theme.php.twig b/system/src/Grav/Console/Cli/DevTools/components/theme/bootstrap/theme.php.twig index 0046c1563..760cd44b4 100644 --- a/system/src/Grav/Console/Cli/DevTools/components/theme/bootstrap/theme.php.twig +++ b/system/src/Grav/Console/Cli/DevTools/components/theme/bootstrap/theme.php.twig @@ -3,7 +3,7 @@ namespace Grav\Theme; use Grav\Common\Theme; -class {{ component.name|variableize }}Theme extends Theme +class {{ component.name|camelize }}Theme extends Theme { } diff --git a/system/src/Grav/Console/Cli/DevTools/components/theme/inheritence/theme.php.twig b/system/src/Grav/Console/Cli/DevTools/components/theme/inheritence/theme.php.twig index 745ae476b..bfc2910a8 100644 --- a/system/src/Grav/Console/Cli/DevTools/components/theme/inheritence/theme.php.twig +++ b/system/src/Grav/Console/Cli/DevTools/components/theme/inheritence/theme.php.twig @@ -1,7 +1,7 @@