From fc1650a1245cd0599df50bad8af70ee4890fee2e Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 13:51:54 +0200 Subject: [PATCH 01/10] return Collection instead of Array MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Within Kirby, people expect to be able to call `$jobs->first()`, so let’s return a Collection. --- queue-for-kirby.php | 4 +++- tests/test.php | 33 ++++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/queue-for-kirby.php b/queue-for-kirby.php index 64b8926..d111b3d 100644 --- a/queue-for-kirby.php +++ b/queue-for-kirby.php @@ -81,9 +81,11 @@ private static function _jobs($failed) return substr($job,0,1) != '.'; }); - return array_map(function ($job) use ($path) { + $jobs = array_map(function ($job) use ($path) { return new Job(yaml::read($path . DS . $job)); }, $jobs); + + return new Collection($jobs); } public static function jobs() diff --git a/tests/test.php b/tests/test.php index 093ca37..3ff3f75 100644 --- a/tests/test.php +++ b/tests/test.php @@ -58,7 +58,7 @@ public function Queue_jobs__returns_jobs() $this->assertCount(2, $jobs); // Test first job of queue - $job = array_shift($jobs); + $job = $jobs->nth(0); $this->assertEquals('test_job', $job->name()); $this->assertEquals([ 'param' => 'some data' @@ -66,13 +66,13 @@ public function Queue_jobs__returns_jobs() $this->assertEquals('some data', $job->get('param')); // Test second job of queue - $job = array_shift($jobs); + $job = $jobs->nth(1); $this->assertEquals('another_job', $job->name()); $this->assertEquals(null, $job->data()); $this->assertEquals(null, $job->get('param')); - // Note that the code above does not remove the jobs! - $this->assertCount(2, queue::jobs()); + // Note that the code above does not remove the jobs + // or change the queue at all! // Use queue::work() for that } @@ -117,7 +117,10 @@ public function job_succeeds() a::first(dir::read(queue::path()))); // Check some things about the job - $this->assertEquals(new Job($job), a::first(queue::jobs())); + $this->assertEquals( + new Job($job), + queue::jobs()->first() + ); $this->assertEquals($job['name'], 'test_job'); $this->assertEquals($job['data'], $params); @@ -153,7 +156,10 @@ public function job_fails_on_false() a::first(dir::read(queue::failedPath()))); // Check some things about the job - $this->assertEquals(new Job($job), a::first(queue::failedJobs())); + $this->assertEquals( + new Job($job), + queue::failedJobs()->first() + ); $this->assertEquals($job['name'], 'test_job'); $this->assertEquals($job['error'], 'Job returned false'); } @@ -181,7 +187,10 @@ public function job_fails_on_exception() a::first(dir::read(queue::failedPath()))); // Check some things about the job - $this->assertEquals(new Job($job), a::first(queue::failedJobs())); + $this->assertEquals( + new Job($job), + queue::failedJobs()->first() + ); $this->assertEquals($job['name'], 'test_job'); $this->assertEquals($job['error'], 'Exception message'); } @@ -209,7 +218,10 @@ public function job_fails_on_error() a::first(dir::read(queue::failedPath()))); // Check some things about the job - $this->assertEquals(new Job($job), a::first(queue::failedJobs())); + $this->assertEquals( + new Job($job), + queue::failedJobs()->first() + ); $this->assertEquals($job['name'], 'test_job'); $this->assertEquals($job['error'], 'Error message'); } @@ -233,7 +245,10 @@ public function job_fails_on_non_existent_action() a::first(dir::read(queue::failedPath()))); // Check some things about the job - $this->assertEquals(new Job($job), a::first(queue::failedJobs())); + $this->assertEquals( + new Job($job), + queue::failedJobs()->first() + ); $this->assertEquals($job['name'], 'job_without_action'); $this->assertEquals($job['error'], 'Action \'job_without_action\' not defined'); } From 28b8ebadc2b4dae84c26aed3530aff324a07a84f Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 13:52:02 +0200 Subject: [PATCH 02/10] add DocBlocks --- queue-for-kirby.php | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/queue-for-kirby.php b/queue-for-kirby.php index d111b3d..b819406 100644 --- a/queue-for-kirby.php +++ b/queue-for-kirby.php @@ -11,11 +11,21 @@ class Queue { private static $actions = []; + /** + * Defines an action to perform when job is worked on + * @param string Name of the action + * @param Callable Closure with the action + */ public static function define($name, $action) { static::$actions[$name] = $action; } + /** + * Adds a new job to the queue + * @param string Name of the action to be performed + * @param mixed Any data you want to pass in + */ public static function add($name, $data = null) { $id = uniqid(); @@ -44,6 +54,9 @@ private static function failed($job, $error) ]); } + /** + * Executes the first job in the queue folder + */ public static function work() { // Protect ourselfs against multiple workers at once @@ -88,21 +101,35 @@ private static function _jobs($failed) return new Collection($jobs); } + /** + * Returns all jobs in the queue + * @return Collection Collection with Job objects + */ public static function jobs() { return static::_jobs(false); } + /** + * Returns all failed jobs + * @return Collection Collection with Job objects + */ public static function failedJobs() { return static::_jobs(true); } + /** + * @return boolean + */ public static function hasJobs() { return static::_get_next_jobfile() !== false; } + /** + * Removes all jobs from the queue, including failed jobs + */ public static function flush() { dir::clean(static::path()); @@ -131,11 +158,19 @@ private static function _get_next_job() return new Job($job); } + /** + * Returns the full path of the queue folder + * @return string + */ public static function path() { return kirby()->roots()->site() . DS . 'queue'; } + /** + * Returns the full path of the failed jobs folder + * @return string + */ public static function failedPath() { return static::path() . DS . '.failed'; From c95bf01abdda599c0a18a47da74fc898afbae83d Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 13:54:36 +0200 Subject: [PATCH 03/10] DocBlock readability --- queue-for-kirby.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/queue-for-kirby.php b/queue-for-kirby.php index b819406..f80d690 100644 --- a/queue-for-kirby.php +++ b/queue-for-kirby.php @@ -13,8 +13,8 @@ class Queue /** * Defines an action to perform when job is worked on - * @param string Name of the action - * @param Callable Closure with the action + * @param string Name of the action + * @param Callable Closure with the action */ public static function define($name, $action) { @@ -23,8 +23,8 @@ public static function define($name, $action) /** * Adds a new job to the queue - * @param string Name of the action to be performed - * @param mixed Any data you want to pass in + * @param string Name of the action to be performed + * @param mixed Any data you want to pass in */ public static function add($name, $data = null) { @@ -103,7 +103,7 @@ private static function _jobs($failed) /** * Returns all jobs in the queue - * @return Collection Collection with Job objects + * @return Collection Collection with Job objects */ public static function jobs() { @@ -112,7 +112,7 @@ public static function jobs() /** * Returns all failed jobs - * @return Collection Collection with Job objects + * @return Collection Collection with Job objects */ public static function failedJobs() { From 901105bbf9ff1aabd50a3ec0d802228ee06d57fc Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 14:55:00 +0200 Subject: [PATCH 04/10] add queue::retry($failedJob) Comes in handy when adding a panel widget with failed jobs --- queue-for-kirby.php | 33 +++++++++++++++++++- tests/test.php | 73 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 1 deletion(-) diff --git a/queue-for-kirby.php b/queue-for-kirby.php index f80d690..b5a86ca 100644 --- a/queue-for-kirby.php +++ b/queue-for-kirby.php @@ -39,10 +39,31 @@ public static function add($name, $data = null) 'data' => $data ]); } + /** + * Adds a failed job back to the queue + * @param string|Job ID or Job object to be retried + * @throws Error When a non-Job object is given + * @throws Error When failed Job with ID is not found + */ + public static function retry($failedJob) + { + if (is_string($failedJob)) { + $failedJob = static::_find_failed_by_id($failedJob); + } + + if (!is_a($failedJob, 'Job')) { + throw new Error('queue::retry() expects a Job object'); + } + + f::move( + static::failedPath() . DS . $failedJob->id() . '.yml', + static::path() . DS . $failedJob->id() . '.yml' + ); + } private static function failed($job, $error) { - $jobfile = static::path() . DS . '.failed' . DS . $job->id() . '.yml'; + $jobfile = static::failedPath() . DS . $job->id() . '.yml'; yaml::write($jobfile, [ 'id' => $job->id(), @@ -135,6 +156,16 @@ public static function flush() dir::clean(static::path()); } + private static function _find_failed_by_id($id) + { + $filename = static::failedPath() . DS . $id . '.yml'; + + if (!f::exists($filename)) throw new Error('Job not found'); + + return new Job(yaml::read($filename)); + + } + private static function _get_next_jobfile() { foreach(dir::read(static::path()) as $jobfile) { diff --git a/tests/test.php b/tests/test.php index 3ff3f75..ee2b587 100644 --- a/tests/test.php +++ b/tests/test.php @@ -76,6 +76,79 @@ public function Queue_jobs__returns_jobs() // Use queue::work() for that } + /** @test */ + public function Queue_retry__adds_to_queue() + { + queue::define('job_to_fail', function() { + return false; + }); + + queue::add('job_to_fail'); + queue::work(); + + // We now have 0 jobs and 1 failed job + $this->assertCount(0, queue::jobs()); + $this->assertCount(1, queue::failedJobs()); + + // Take the Job and retry + $failedJob = queue::failedJobs()->first(); + queue::retry($failedJob); + + // The job has been added to the queue again + $this->assertCount(1, queue::jobs()); + $this->assertCount(0, queue::failedJobs()); + + // Job will still fail + queue::work(); + + // The job has failed + $this->assertCount(0, queue::jobs()); + $this->assertCount(1, queue::failedJobs()); + + // Take the Job and retry by ID + $failedJob = queue::failedJobs()->first(); + $id = $failedJob->id(); + + // The ID is a string + $this->assertInternalType('string', $id); + + queue::retry($id); + + // And the job is back in the queue again + $this->assertCount(1, queue::jobs()); + $this->assertCount(0, queue::failedJobs()); + } + + /** + * @test + * @expectedException Error + * @expectedExceptionMessage Job not found + */ + public function Queue_retry__throws_error_on_wrong_id() + { + queue::add('job_to_fail'); + queue::work(); + + // Take the first ID and add rubbish + $id = queue::failedJobs()->first()->id(); + $id = $id . 'asdasd'; + + queue::retry($id); + } + + /** + * @test + * @expectedException Error + * @expectedExceptionMessage queue::retry() expects a Job object + */ + public function Queue_retry__throws_error_on_non_job() + { + queue::add('job_to_fail'); + queue::work(); + + queue::retry(new HTML()); + } + /** @test */ public function Queue_flush__removes_all_jobs() { From 3106e4ea5a224d77945f4b62a341d576099bbeee Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 14:55:12 +0200 Subject: [PATCH 05/10] update the docs --- README.md | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index bd4edc4..76ed87e 100644 --- a/README.md +++ b/README.md @@ -98,14 +98,14 @@ queue::add('another_job'); ### queue::jobs() -Returns an array of Job objects, for all jobs in the queue. +Returns a [Collection](https://getkirby.com/docs/toolkit/api#collection) of Job objects, for all jobs in the queue. Doing something with these jobs does **not** change the queue. Only `queue::work()` removes jobs from the queue. ```php queue::jobs(); // Returns, for example: -[ +object(Collection) { object(Job) { 'id' => '5975f78ed3db6', 'added' => '2001-01-01T01:01:01+00:00', @@ -120,17 +120,22 @@ queue::jobs(); 'name' => 'another_job', 'data' => null } -] +} + +// and + +queue::jobs()->first(); +// returns the first Job ``` ### queue::failedJobs() -Returns an array of Job objects, representing the failed jobs. +Returns a [Collection](https://getkirby.com/docs/toolkit/api#collection) of Job objects, representing the failed jobs. ```php -queue::jobs(); +queue::failedJobs(); // Returns, for example: -[ +object(Collection) { object(Job) { 'id' => '5975f78ed3db6', 'added' => '2001-01-01T01:01:01+00:00', @@ -141,7 +146,28 @@ queue::jobs(); 'error' => 'Job returned false', 'tried' => '2001-01-01T01:01:03+00:00' } -] +} + +// and + +queue::failedJobs()->last(); +// returns the last failed Job +``` + +### queue::retry($failedJob) + +Moves a failed job back in the queue. Use to trigger in a panel widget or after some other user input. + +Note that this does not immediately act on the failed job. It is just added to the queue – probably at the front due to it's old ID – and gets handled as soon as your Cron Job executes `worker.php`. + +```php +$failedJob = queue::failedJobs()->first(); + +queue::retry($failedJob); + +// or + +queue::retry('5975f78ed3db6'); ``` ### queue::work() From 66b3970713652dbb6e92f9434efce5a24f5415a1 Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 21:09:45 +0200 Subject: [PATCH 06/10] add queue::remove($failedJob) --- queue-for-kirby.php | 19 ++++++++++++++ tests/test.php | 63 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/queue-for-kirby.php b/queue-for-kirby.php index b5a86ca..68b1b19 100644 --- a/queue-for-kirby.php +++ b/queue-for-kirby.php @@ -61,6 +61,25 @@ public static function retry($failedJob) ); } + /** + * Removes a failed job + * @param string|Job ID or Job object to be deleted + * @throws Error When a non-Job object is given + * @throws Error When failed Job with ID is not found + */ + public static function remove($failedJob) + { + if (is_string($failedJob)) { + $failedJob = static::_find_failed_by_id($failedJob); + } + + if (!is_a($failedJob, 'Job')) { + throw new Error('queue::remove() expects a Job object'); + } + + f::remove(static::failedPath() . DS . $failedJob->id() . '.yml'); + } + private static function failed($job, $error) { $jobfile = static::failedPath() . DS . $job->id() . '.yml'; diff --git a/tests/test.php b/tests/test.php index ee2b587..52202bd 100644 --- a/tests/test.php +++ b/tests/test.php @@ -149,6 +149,69 @@ public function Queue_retry__throws_error_on_non_job() queue::retry(new HTML()); } + /** @test */ + public function Queue_remove__removes_failed_jobs() + { + queue::add('job_to_fail'); + queue::add('another_job_that_fails'); + queue::work(); + queue::work(); + + // We now have 0 jobs and 2 failed job + $this->assertCount(0, queue::jobs()); + $this->assertCount(2, queue::failedJobs()); + + // Take the Job, check if it's the one, and remove it + $failedJob = queue::failedJobs()->first(); + $this->assertEquals('job_to_fail', $failedJob->name()); + queue::remove($failedJob); + + // We have only one failed job now + $this->assertCount(0, queue::jobs()); + $this->assertCount(1, queue::failedJobs()); + + // The remaining job is the other job + $failedJob = queue::failedJobs()->first(); + $this->assertEquals('another_job_that_fails', $failedJob->name()); + + // Remove by ID + queue::remove($failedJob->id()); + + // All the jobs are gone + $this->assertCount(0, queue::jobs()); + $this->assertCount(0, queue::failedJobs()); + } + + /** + * @test + * @expectedException Error + * @expectedExceptionMessage Job not found + */ + public function Queue_remove__throws_error_on_wrong_id() + { + queue::add('job_to_fail'); + queue::work(); + + // Take the first ID and add rubbish + $id = queue::failedJobs()->first()->id(); + $id = $id . 'asdasd'; + + queue::remove($id); + } + + /** + * @test + * @expectedException Error + * @expectedExceptionMessage queue::remove() expects a Job object + */ + public function Queue_remove__throws_error_on_non_job() + { + queue::add('job_to_fail'); + queue::work(); + + queue::remove(new Silo()); + } + /** @test */ public function Queue_flush__removes_all_jobs() { From 0911269fc52c05a41f0b2110a5bb0fbc80cb221a Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 21:10:18 +0200 Subject: [PATCH 07/10] add panel widget UI is hard --- package.json | 3 +- panel/controller.php | 70 ++++++++++++++++++++++++++++++++ panel/init.php | 30 ++++++++++++++ panel/widget/failedjobs.html.php | 62 ++++++++++++++++++++++++++++ panel/widget/failedjobs.php | 40 ++++++++++++++++++ queue-for-kirby.php | 7 +++- 6 files changed, 210 insertions(+), 2 deletions(-) create mode 100644 panel/controller.php create mode 100644 panel/init.php create mode 100644 panel/widget/failedjobs.html.php create mode 100644 panel/widget/failedjobs.php diff --git a/package.json b/package.json index 1c5fec8..15d6387 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "LICENSE.md", "README.md", "queue-for-kirby.php", - "worker.php" + "worker.php", + "panel/" ] } \ No newline at end of file diff --git a/panel/controller.php b/panel/controller.php new file mode 100644 index 0000000..42cc853 --- /dev/null +++ b/panel/controller.php @@ -0,0 +1,70 @@ +notify(':)'); + } catch (Error $e) { + panel()->alert($e->getMessage()); + } + + panel()->redirect(); + } + + public static function remove($id) + { + try { + queue::remove($id); + + panel()->notify(':)'); + } catch (Error $e) { + panel()->alert($e->getMessage()); + } + + panel()->redirect(); + } + + public static function flush() + { + queue::flush(); + + panel()->notify(':)'); + + panel()->redirect(); + } + + public static function work() + { + $count_jobs = queue::jobs()->count(); + + while (queue::hasJobs()) { + queue::work(); + } + + $count_failed = queue::failedJobs()->count(); + + $message = 'Did ' . ($count_jobs == 1 ? '1 job' : $count_jobs . ' jobs'); + + if ($count_failed) { + $message .= ', '; + $message .= ($count_failed == 1 ? '1 job' : $count_failed . ' jobs'); + $message .= ' failed'; + + panel()->alert($message); + } else { + panel()->notify($message); + } + + panel()->redirect(); + } +} + diff --git a/panel/init.php b/panel/init.php new file mode 100644 index 0000000..d89a880 --- /dev/null +++ b/panel/init.php @@ -0,0 +1,30 @@ + __DIR__ . DS . 'controller.php' +]); + +$kirby->set('widget', 'failedjobs', __DIR__ . DS . 'widget'); + +panel()->routes([ + [ + 'pattern' => 'queue/retry/(:any)', + 'filter' => 'auth', + 'action' => 'Queue\Controller::retry' + ], + [ + 'pattern' => 'queue/remove/(:any)', + 'filter' => 'auth', + 'action' => 'Queue\Controller::remove' + ], + [ + 'pattern' => 'queue/flush', + 'filter' => 'auth', + 'action' => 'Queue\Controller::flush' + ], + [ + 'pattern' => 'queue/work', + 'filter' => 'auth', + 'action' => 'Queue\Controller::work' + ] +]); diff --git a/panel/widget/failedjobs.html.php b/panel/widget/failedjobs.html.php new file mode 100644 index 0000000..7e6049a --- /dev/null +++ b/panel/widget/failedjobs.html.php @@ -0,0 +1,62 @@ + + +
+
    + + + +
  • +
    +
    + name() ?>
    + error() ?> +
    + +
    + + + + + + + +
    +
    + + + +
    + data())) foreach ($job->data() as $key => $value): ?> +
    + + +
    +
  • + + +
+
diff --git a/panel/widget/failedjobs.php b/panel/widget/failedjobs.php new file mode 100644 index 0000000..ce8c08d --- /dev/null +++ b/panel/widget/failedjobs.php @@ -0,0 +1,40 @@ +user()->isAdmin()) return false; + +$jobs_count = queue::jobs()->count(); + +// Don't show the Widget if there are no failed jobs, +// but DO display it if there are more than 5 jobs piled up +// to remind the user there is a queue at all +if(!queue::failedJobs()->count() and $jobs_count < 5) return false; + +return +[ + 'title' => [ + 'text' => 'Failed jobs', + 'compressed' => false + ], + 'options' => [ + [ + 'text' => + ($jobs_count == 1 ? '1 job' : $jobs_count . ' jobs') + . ' waiting', + 'icon' => 'square-o', + 'link' => 'queue/work' + ], + [ + 'text' => 'Flush all', + 'icon' => 'trash-o', + 'link' => 'queue/flush' + ] + + ], + 'html' => function() { + $failed = queue::failedJobs(); + + if (!$failed->count()) return 'No failed jobs.'; + + return tpl::load(__DIR__ . DS . 'failedjobs.html.php', compact('failed')); + } +]; \ No newline at end of file diff --git a/queue-for-kirby.php b/queue-for-kirby.php index 68b1b19..7751c62 100644 --- a/queue-for-kirby.php +++ b/queue-for-kirby.php @@ -1,6 +1,10 @@ data[$key]) ? $this->data[$key] : $default; @@ -39,6 +43,7 @@ public static function add($name, $data = null) 'data' => $data ]); } + /** * Adds a failed job back to the queue * @param string|Job ID or Job object to be retried From 5b312b99524ef0b6c8bbc0f1cf1d124ddee5657f Mon Sep 17 00:00:00 2001 From: sebsel Date: Wed, 26 Jul 2017 21:10:23 +0200 Subject: [PATCH 08/10] update docs --- README.md | 25 ++++++++++++++++++++++--- queue-widget.jpg | Bin 0 -> 94338 bytes 2 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 queue-widget.jpg diff --git a/README.md b/README.md index 76ed87e..a65e07d 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,12 @@ You then need to add `site/plugins/queue-for-kirby/worker.php` to your [Cron Job The plugin will try to create the folder `site/queue` and some files and folders within it. +## Widget + +This plugin will add a widget to the panel dashboard if there are failed jobs, or if there are more than 5 jobs in the queue (indicating that there's something wrong). + +![queue-widget](queue-widget.jpg) + ## How to define jobs You need to define the following things within the base-file of your plugin, not in any lazy loaded classes (with Kirby's `load()` or composer's autoloading). Just put it in `site/plugins/your_plugin/your_plugin.php`. @@ -26,12 +32,11 @@ queue::define('send_webmention', function($job) { $target = $job->get('target'); $source = $job->get('source'); - // Do something with your data, for example: - // send a webmention! + // Do something with your data, for example: send a webmention! if(!send_webmention($target, $source)) { // Throw an error to fail a job throw new Error('Sending webmention failed'); - // or just return false. + // or just return false, but setting a message for the user is better. } // No need to return or display anything else! @@ -170,6 +175,20 @@ queue::retry($failedJob); queue::retry('5975f78ed3db6'); ``` +### queue::remove($failedJob) + +Removes a failed job entirely. Note that this only works for failed jobs. + +```php +$failedJob = queue::failedJobs()->last(); + +queue::remove($failedJob); + +// or + +queue::remove('5975f78ed3db6'); +``` + ### queue::work() Executes the first job in the queue. Don't call this one outside of `worker.php`, because that would defeat the purpose of the queue. diff --git a/queue-widget.jpg b/queue-widget.jpg new file mode 100644 index 0000000000000000000000000000000000000000..41974361659a629ed8876d774502b72230755457 GIT binary patch literal 94338 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 Date: Wed, 26 Jul 2017 21:22:47 +0200 Subject: [PATCH 09/10] Smaller image --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a65e07d..cb2f958 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ The plugin will try to create the folder `site/queue` and some files and folders This plugin will add a widget to the panel dashboard if there are failed jobs, or if there are more than 5 jobs in the queue (indicating that there's something wrong). -![queue-widget](queue-widget.jpg) +queue-widget ## How to define jobs From c728be5a333e3dc711b74cd601df4b6ae63dca18 Mon Sep 17 00:00:00 2001 From: Sebastiaan Andeweg Date: Wed, 26 Jul 2017 21:25:39 +0200 Subject: [PATCH 10/10] bump version to 2.0.0 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 15d6387..ac348ab 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "description": "Basic queue to the Kirby CMS, using Cron and Kirby's flat file system", "author": "Sebastiaan Andeweg", "license": "MIT", - "version": "1.0.2", + "version": "2.0.0", "type": "kirby-plugin", "files": [ "package.json", @@ -13,4 +13,4 @@ "worker.php", "panel/" ] -} \ No newline at end of file +}