Real data integration of GPM into admin

This commit is contained in:
Djamil Legato
2014-10-07 17:01:40 -07:00
parent 4ee61d45c3
commit 118b3cae7f
7 changed files with 190 additions and 47 deletions

View File

@@ -1,10 +1,11 @@
<?php
namespace Grav\Plugin;
use Grav\Common\Plugin;
use Grav\Common\GPM\GPM;
use Grav\Common\Grav;
use Grav\Common\Page\Page;
use Grav\Common\Page\Pages;
use Grav\Common\Grav;
use Grav\Common\Plugin;
use Grav\Common\Uri;
use RocketTheme\Toolbox\File\File;
use RocketTheme\Toolbox\Session\Session;
@@ -63,7 +64,7 @@ class AdminPlugin extends Plugin
{
return [
'onPluginsInitialized' => [['login', 100000], ['onPluginsInitialized', 1000]],
'onShutdown' => ['onShutdown', 1000]
'onShutdown' => ['onShutdown', 1000]
];
}
@@ -98,7 +99,7 @@ class AdminPlugin extends Plugin
}
}
/**
/**
* Initialize administration plugin if admin path matches.
*
* Disables system cache.
@@ -177,7 +178,7 @@ class AdminPlugin extends Plugin
public function onTwigTemplatePaths()
{
$this->theme = $this->config->get('plugins.admin.theme', 'grav');
$this->grav['twig']->twig_paths = array(__DIR__ . '/themes/'.$this->theme.'/templates');
$this->grav['twig']->twig_paths = array(__DIR__ . '/themes/' . $this->theme . '/templates');
}
/**
@@ -186,7 +187,7 @@ class AdminPlugin extends Plugin
public function onTwigSiteVariables()
{
// TODO: use real plugin name instead
$theme_url = $this->config->get('system.base_url_relative') . '/user/plugins/admin/themes/'.$this->theme;
$theme_url = $this->config->get('system.base_url_relative') . '/user/plugins/admin/themes/' . $this->theme;
$twig = $this->grav['twig'];
// Dynamic type support
@@ -199,13 +200,14 @@ class AdminPlugin extends Plugin
$twig->twig_vars['location'] = $this->template;
$twig->twig_vars['base_url_relative_frontend'] = $twig->twig_vars['base_url_relative'];
$twig->twig_vars['base_url_relative'] .=
($twig->twig_vars['base_url_relative'] != '/' ? '/' : '') . trim($this->config->get('plugins.admin.route'), '/');
($twig->twig_vars['base_url_relative'] != '/' ? '/' : '') . trim($this->config->get('plugins.admin.route'),
'/');
$twig->twig_vars['theme_url'] = $theme_url;
$twig->twig_vars['base_url'] = $twig->twig_vars['base_url_relative'];
$twig->twig_vars['admin'] = $this->admin;
// fake grav update
$twig->twig_vars['grav_update'] = array('current'=>'0.9.1', 'available'=>'0.9.1');
$twig->twig_vars['grav_update'] = array('current' => '0.9.1', 'available' => '0.9.1');
switch ($this->template) {
case 'dashboard':
@@ -213,7 +215,8 @@ class AdminPlugin extends Plugin
break;
case 'pages':
$twig->twig_vars['file'] = File::instance($this->admin->page(true)->filePath());
$twig->twig_vars['media_types'] = str_replace('defaults,', '', implode(',.', array_keys($this->config->get('media'))));
$twig->twig_vars['media_types'] = str_replace('defaults,', '',
implode(',.', array_keys($this->config->get('media'))));
break;
}
}
@@ -231,12 +234,48 @@ class AdminPlugin extends Plugin
}
}
public function onTaskGPM()
{
$action = $_POST['action']; // getUpdatable | getUpdatablePlugins | getUpdatableThemes | gravUpdates
if (isset($this->grav['session'])) {
$this->grav['session']->close();
}
try {
$gpm = new GPM();
switch ($action) {
case 'getUpdates':
$resources_updates = $gpm->getUpdatable();
$grav_updates = [
"isUpdatable" => $gpm->grav->isUpdatable(),
"assets" => $gpm->grav->getAssets(),
"version" => GRAV_VERSION,
"available" => $gpm->grav->getVersion(),
"date" => $gpm->grav->getDate()
];
echo json_encode([
"success" => true,
"payload" => ["resources" => $resources_updates, "grav" => $grav_updates]
]);
break;
}
} catch (\Exception $e) {
echo json_encode(["success" => false, "message" => $e->getMessage()]);
}
exit;
}
protected function initializeAdmin()
{
$this->enable([
'onPagesInitialized' => ['onPagesInitialized', 1000],
'onPagesInitialized' => ['onPagesInitialized', 1000],
'onTwigTemplatePaths' => ['onTwigTemplatePaths', 1000],
'onTwigSiteVariables' => ['onTwigSiteVariables', 1000]
'onTwigSiteVariables' => ['onTwigSiteVariables', 1000],
'onTask.GPM' => ['onTaskGPM', 0]
]);
// Change login behavior.