From 2bc9b942ede75b8db2c4fe47b3e15bb6bdc71d3b Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Sun, 11 Oct 2015 23:17:51 +1030 Subject: [PATCH] Update for composer branch --- extensions/akismet/.gitignore | 2 + extensions/akismet/bootstrap.php | 8 ++- extensions/akismet/composer.json | 34 +++++++-- extensions/akismet/composer.lock | 57 --------------- extensions/akismet/flarum.json | 26 ------- extensions/akismet/icon.jpg | Bin 0 -> 5510 bytes extensions/akismet/js/.gitignore | 3 - extensions/akismet/js/admin/Gulpfile.js | 2 +- extensions/akismet/js/admin/dist/extension.js | 68 ++++++++++++++++++ .../src/components/AkismetSettingsModal.js | 2 +- extensions/akismet/js/admin/src/main.js | 6 +- extensions/akismet/js/forum/Gulpfile.js | 2 +- extensions/akismet/js/forum/dist/extension.js | 43 +++++++++++ extensions/akismet/js/forum/src/main.js | 2 +- extensions/akismet/locale/en.yml | 2 - extensions/akismet/scripts/compile.sh | 27 +++++++ extensions/akismet/src/Extension.php | 23 ------ .../akismet/src/Listener/AddClientAssets.php | 47 ++++++++++++ .../FilterNewPosts.php} | 42 ++++++++--- .../akismet/src/Listeners/AddClientAssets.php | 52 -------------- 20 files changed, 261 insertions(+), 187 deletions(-) delete mode 100644 extensions/akismet/composer.lock delete mode 100644 extensions/akismet/flarum.json create mode 100644 extensions/akismet/icon.jpg delete mode 100644 extensions/akismet/js/.gitignore create mode 100644 extensions/akismet/js/admin/dist/extension.js create mode 100644 extensions/akismet/js/forum/dist/extension.js delete mode 100644 extensions/akismet/locale/en.yml create mode 100755 extensions/akismet/scripts/compile.sh delete mode 100644 extensions/akismet/src/Extension.php create mode 100644 extensions/akismet/src/Listener/AddClientAssets.php rename extensions/akismet/src/{Listeners/ValidatePost.php => Listener/FilterNewPosts.php} (66%) delete mode 100644 extensions/akismet/src/Listeners/AddClientAssets.php diff --git a/extensions/akismet/.gitignore b/extensions/akismet/.gitignore index a4f3b125e..43eeee7fe 100644 --- a/extensions/akismet/.gitignore +++ b/extensions/akismet/.gitignore @@ -2,3 +2,5 @@ composer.phar .DS_Store Thumbs.db +bower_components +node_modules \ No newline at end of file diff --git a/extensions/akismet/bootstrap.php b/extensions/akismet/bootstrap.php index 763eda504..6759fa119 100644 --- a/extensions/akismet/bootstrap.php +++ b/extensions/akismet/bootstrap.php @@ -9,6 +9,10 @@ * file that was distributed with this source code. */ -require __DIR__.'/vendor/autoload.php'; +use Flarum\Akismet\Listener; +use Illuminate\Contracts\Events\Dispatcher; -return 'Flarum\Akismet\Extension'; +return function (Dispatcher $events) { + $events->subscribe(Listener\AddClientAssets::class); + $events->subscribe(Listener\FilterNewPosts::class); +}; \ No newline at end of file diff --git a/extensions/akismet/composer.json b/extensions/akismet/composer.json index a80d21fab..8fd456725 100644 --- a/extensions/akismet/composer.json +++ b/extensions/akismet/composer.json @@ -1,13 +1,37 @@ { + "name": "flarum/akismet", + "description": "Stop spam using the Akismet anti-spam service.", + "type": "flarum-extension", + "license": "MIT", + "authors": [ + { + "name": "Toby Zerner", + "email": "toby.zerner@gmail.com" + } + ], + "support": { + "issues": "https://github.com/flarum/core/issues", + "source": "https://github.com/flarum/akismet" + }, + "require": { + "flarum/core": "^0.1.0-beta.3", + "flarum/approval": "^0.1.0-beta.3", + "tijsverkoyen/akismet": "^1.1" + }, "autoload": { "psr-4": { "Flarum\\Akismet\\": "src/" } }, - "require": { - "tijsverkoyen/akismet": "^1.1" - }, - "scripts": { - "style": "phpcs --standard=PSR2 -np src" + "extra": { + "flarum-extension": { + "title": "Akismet", + "icon": { + "image": "icon.jpg", + "backgroundSize": "cover", + "backgroundColor": "#5e8e14", + "color": "#fff" + } + } } } diff --git a/extensions/akismet/composer.lock b/extensions/akismet/composer.lock deleted file mode 100644 index c47b9ab9e..000000000 --- a/extensions/akismet/composer.lock +++ /dev/null @@ -1,57 +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#composer-lock-the-lock-file", - "This file is @generated automatically" - ], - "hash": "f4f26918432f8f6ed40008ffd516708d", - "packages": [ - { - "name": "tijsverkoyen/akismet", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/Akismet.git", - "reference": "0c5185956e11824ed310d134d38d0b2c936f3d3a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/Akismet/zipball/0c5185956e11824ed310d134d38d0b2c936f3d3a", - "reference": "0c5185956e11824ed310d134d38d0b2c936f3d3a", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "php": ">=5.2.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "akismet@verkoyen.eu", - "role": "Developer" - } - ], - "description": "Akismet is a wrapper-class to communicate with the Akismet API.", - "homepage": "https://github.com/tijsverkoyen/Akismet", - "time": "2012-10-13 17:59:41" - } - ], - "packages-dev": [], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": [], - "platform-dev": [] -} diff --git a/extensions/akismet/flarum.json b/extensions/akismet/flarum.json deleted file mode 100644 index 5489efdac..000000000 --- a/extensions/akismet/flarum.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "akismet", - "title": "Akismet", - "description": "Stop spam using the Akismet anti-spam service.", - "keywords": [], - "version": "0.1.0-beta.2", - "author": { - "name": "Toby Zerner", - "email": "toby@flarum.org", - "homepage": "http://tobyzerner.com" - }, - "license": "MIT", - "require": { - "flarum": ">=0.1.0-beta.2", - "reports": ">=0.1.0-beta.2" - }, - "support": { - "source": "https://github.com/flarum/akismet", - "issues": "https://github.com/flarum/core/issues" - }, - "icon": { - "name": "filter", - "backgroundColor": "#5e8e14", - "color": "#fff" - } -} diff --git a/extensions/akismet/icon.jpg b/extensions/akismet/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe675a881ba76a69c309ef2d255c6ec781e8694a GIT binary patch literal 5510 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 - + ]; } diff --git a/extensions/akismet/js/admin/src/main.js b/extensions/akismet/js/admin/src/main.js index ed8b1dac9..548fee185 100644 --- a/extensions/akismet/js/admin/src/main.js +++ b/extensions/akismet/js/admin/src/main.js @@ -1,7 +1,7 @@ import app from 'flarum/app'; -import AkismetSettingsModal from 'akismet/components/AkismetSettingsModal'; +import AkismetSettingsModal from 'flarum/akismet/components/AkismetSettingsModal'; -app.initializers.add('akismet', () => { - app.extensionSettings.akismet = () => app.modal.show(new AkismetSettingsModal()); +app.initializers.add('flarum-akismet', () => { + app.extensionSettings['flarum-akismet'] = () => app.modal.show(new AkismetSettingsModal()); }); diff --git a/extensions/akismet/js/forum/Gulpfile.js b/extensions/akismet/js/forum/Gulpfile.js index d67501f07..e171a7ec4 100644 --- a/extensions/akismet/js/forum/Gulpfile.js +++ b/extensions/akismet/js/forum/Gulpfile.js @@ -2,6 +2,6 @@ var gulp = require('flarum-gulp'); gulp({ modules: { - 'akismet': 'src/**/*.js' + 'flarum/akismet': 'src/**/*.js' } }); diff --git a/extensions/akismet/js/forum/dist/extension.js b/extensions/akismet/js/forum/dist/extension.js new file mode 100644 index 000000000..9b60b19d9 --- /dev/null +++ b/extensions/akismet/js/forum/dist/extension.js @@ -0,0 +1,43 @@ +System.register('flarum/akismet/main', ['flarum/extend', 'flarum/app', 'flarum/utils/PostControls', 'flarum/components/CommentPost'], function (_export) { + 'use strict'; + + var extend, override, app, PostControls, CommentPost; + return { + setters: [function (_flarumExtend) { + extend = _flarumExtend.extend; + override = _flarumExtend.override; + }, function (_flarumApp) { + app = _flarumApp['default']; + }, function (_flarumUtilsPostControls) { + PostControls = _flarumUtilsPostControls['default']; + }, function (_flarumComponentsCommentPost) { + CommentPost = _flarumComponentsCommentPost['default']; + }], + execute: function () { + + app.initializers.add('flarum-akismet', function () { + extend(PostControls, 'destructiveControls', function (items, post) { + if (items.approve) { + var flags = post.flags(); + + if (flags && flags.some(function (flag) { + return flag.type() === 'akismet'; + })) { + babelHelpers._extends(items.approve.content.props, { + children: 'Not Spam' + }); + } + } + }); + + override(CommentPost.prototype, 'flagReason', function (original, flag) { + if (flag.type() === 'akismet') { + return 'Akismet flagged as Spam'; + } + + return original(flag); + }); + }, -20); // run after the approval extension + } + }; +}); \ No newline at end of file diff --git a/extensions/akismet/js/forum/src/main.js b/extensions/akismet/js/forum/src/main.js index 8d559d81a..53205a863 100644 --- a/extensions/akismet/js/forum/src/main.js +++ b/extensions/akismet/js/forum/src/main.js @@ -4,7 +4,7 @@ import app from 'flarum/app'; import PostControls from 'flarum/utils/PostControls'; import CommentPost from 'flarum/components/CommentPost'; -app.initializers.add('akismet', () => { +app.initializers.add('flarum-akismet', () => { extend(PostControls, 'destructiveControls', function(items, post) { if (items.approve) { const flags = post.flags(); diff --git a/extensions/akismet/locale/en.yml b/extensions/akismet/locale/en.yml deleted file mode 100644 index 4df16ec26..000000000 --- a/extensions/akismet/locale/en.yml +++ /dev/null @@ -1,2 +0,0 @@ -akismet: - # hello_world: "Hello, world!" diff --git a/extensions/akismet/scripts/compile.sh b/extensions/akismet/scripts/compile.sh new file mode 100755 index 000000000..b0d8e8bd3 --- /dev/null +++ b/extensions/akismet/scripts/compile.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# This script compiles the extension so that it can be used in a Flarum +# installation. It should be run from the root directory of the extension. + +base=$PWD + +cd "${base}/js" + +if [ -f bower.json ]; then + bower install +fi + +for app in forum admin; do + cd "${base}/js" + + if [ -d $app ]; then + cd $app + + if [ -f bower.json ]; then + bower install + fi + + npm install + gulp --production + fi +done diff --git a/extensions/akismet/src/Extension.php b/extensions/akismet/src/Extension.php deleted file mode 100644 index acb4901f6..000000000 --- a/extensions/akismet/src/Extension.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Flarum\Akismet; - -use Flarum\Support\Extension as BaseExtension; -use Illuminate\Events\Dispatcher; - -class Extension extends BaseExtension -{ - public function listen(Dispatcher $events) - { - $events->subscribe('Flarum\Akismet\Listeners\AddClientAssets'); - $events->subscribe('Flarum\Akismet\Listeners\ValidatePost'); - } -} diff --git a/extensions/akismet/src/Listener/AddClientAssets.php b/extensions/akismet/src/Listener/AddClientAssets.php new file mode 100644 index 000000000..c6a48ad92 --- /dev/null +++ b/extensions/akismet/src/Listener/AddClientAssets.php @@ -0,0 +1,47 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Akismet\Listener; + +use Flarum\Event\ConfigureClientView; +use Illuminate\Contracts\Events\Dispatcher; + +class AddClientAssets +{ + /** + * @param Dispatcher $events + */ + public function subscribe(Dispatcher $events) + { + $events->listen(ConfigureClientView::class, [$this, 'addAssets']); + } + + /** + * @param ConfigureClientView $event + */ + public function addAssets(ConfigureClientView $event) + { + if ($event->isForum()) { + $event->addAssets([ + __DIR__.'/../../js/forum/dist/extension.js' + ]); + $event->addBootstrapper('flarum/akismet/main'); + $event->addTranslations('flarum-akismet.forum'); + } + + if ($event->isAdmin()) { + $event->addAssets([ + __DIR__ . '/../../js/admin/dist/extension.js' + ]); + $event->addBootstrapper('flarum/akismet/main'); + $event->addTranslations('flarum-akismet.admin'); + } + } +} diff --git a/extensions/akismet/src/Listeners/ValidatePost.php b/extensions/akismet/src/Listener/FilterNewPosts.php similarity index 66% rename from extensions/akismet/src/Listeners/ValidatePost.php rename to extensions/akismet/src/Listener/FilterNewPosts.php index 1b70d6a31..055be379e 100644 --- a/extensions/akismet/src/Listeners/ValidatePost.php +++ b/extensions/akismet/src/Listener/FilterNewPosts.php @@ -8,32 +8,51 @@ * file that was distributed with this source code. */ -namespace Flarum\Akismet\Listeners; +namespace Flarum\Akismet\Listener; -use Flarum\Events\PostWillBeSaved; +use Flarum\Approval\Event\PostWasApproved; +use Flarum\Core; +use Flarum\Event\PostWillBeSaved; +use Flarum\Flags\Flag; +use Flarum\Foundation\Application; +use Flarum\Settings\SettingsRepository; use Illuminate\Contracts\Events\Dispatcher; use TijsVerkoyen\Akismet\Akismet; -use Flarum\Core; -use Flarum\Core\Posts\CommentPost; -use Flarum\Core\Settings\SettingsRepository; -use Flarum\Flags\Flag; -use Flarum\Approval\Events\PostWasApproved; -class ValidatePost +class FilterNewPosts { + /** + * @var SettingsRepository + */ protected $settings; - public function __construct(SettingsRepository $settings) + /** + * @var Application + */ + protected $app; + + /** + * @param SettingsRepository $settings + * @param Application $app + */ + public function __construct(SettingsRepository $settings, Application $app) { $this->settings = $settings; + $this->app = $app; } + /** + * @param Dispatcher $events + */ public function subscribe(Dispatcher $events) { $events->listen(PostWillBeSaved::class, [$this, 'validatePost']); $events->listen(PostWasApproved::class, [$this, 'submitHam']); } + /** + * @param PostWillBeSaved $event + */ public function validatePost(PostWillBeSaved $event) { $post = $event->post; @@ -42,7 +61,7 @@ class ValidatePost return; } - $akismet = new Akismet($this->settings->get('akismet.api_key'), Core::url()); + $akismet = new Akismet($this->settings->get('flarum-akismet.api_key'), $this->app->url()); $isSpam = $akismet->isSpam( $post->content, @@ -70,6 +89,9 @@ class ValidatePost } } + /** + * @param PostWasApproved $event + */ public function submitHam(PostWasApproved $event) { // TODO diff --git a/extensions/akismet/src/Listeners/AddClientAssets.php b/extensions/akismet/src/Listeners/AddClientAssets.php deleted file mode 100644 index 854d60c77..000000000 --- a/extensions/akismet/src/Listeners/AddClientAssets.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Flarum\Akismet\Listeners; - -use Flarum\Events\RegisterLocales; -use Flarum\Events\BuildClientView; -use Illuminate\Contracts\Events\Dispatcher; - -class AddClientAssets -{ - public function subscribe(Dispatcher $events) - { - $events->listen(RegisterLocales::class, [$this, 'addLocale']); - $events->listen(BuildClientView::class, [$this, 'addAssets']); - } - - public function addLocale(RegisterLocales $event) - { - $event->addTranslations('en', __DIR__.'/../../locale/en.yml'); - } - - public function addAssets(BuildClientView $event) - { - $event->forumAssets([ - __DIR__.'/../../js/forum/dist/extension.js' - ]); - - $event->forumBootstrapper('akismet/main'); - - $event->forumTranslations([ - // 'akismet.hello_world' - ]); - - $event->adminAssets([ - __DIR__.'/../../js/admin/dist/extension.js' - ]); - - $event->adminBootstrapper('akismet/main'); - - $event->adminTranslations([ - // 'akismet.hello_world' - ]); - } -}