mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-30 10:33:30 +00:00
New help thing.
This commit is contained in:
@@ -26,47 +26,39 @@ class Help implements HelpInterface
|
|||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* @param string $route
|
||||||
* @param string $key
|
* @param string $language
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getFromCache(string $key): string
|
public function getFromCache(string $route, string $language): string
|
||||||
{
|
{
|
||||||
return Cache::get($key);
|
return Cache::get('help.' . $route . '.' . $language);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $language
|
* @param string $language
|
||||||
* @param string $route
|
* @param string $route
|
||||||
*
|
*
|
||||||
* @return array
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getFromGithub(string $language, string $route): array
|
public function getFromGithub(string $language, string $route): string
|
||||||
{
|
{
|
||||||
|
|
||||||
$uri = sprintf('https://raw.githubusercontent.com/JC5/firefly-iii-help/master/%s/%s.md', $language, $route);
|
$uri = sprintf('https://raw.githubusercontent.com/firefly-iii/help/master/%s/%s.md', $language, $route);
|
||||||
$routeIndex = str_replace('.', '-', $route);
|
$content = '<p>' . strval(trans('firefly.route_has_no_help')) . '</p>';
|
||||||
$title = trans('help.' . $routeIndex);
|
|
||||||
$content = [
|
|
||||||
'text' => '<p>' . strval(trans('firefly.route_has_no_help')) . '</p>',
|
|
||||||
'title' => $title,
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
$result = Requests::get($uri);
|
$result = Requests::get($uri);
|
||||||
|
|
||||||
|
|
||||||
if ($result->status_code === 200) {
|
if ($result->status_code === 200) {
|
||||||
$content['text'] = $result->body;
|
$content = $result->body;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (strlen(trim($content['text'])) == 0) {
|
if (strlen(trim($content)) == 0) {
|
||||||
$content['text'] = '<p>' . strval(trans('firefly.route_has_no_help')) . '</p>';
|
$content = '<p>' . strval(trans('firefly.route_has_no_help')) . '</p>';
|
||||||
}
|
}
|
||||||
$converter = new CommonMarkConverter();
|
$converter = new CommonMarkConverter();
|
||||||
$content['text'] = $converter->convertToHtml($content['text']);
|
$content = $converter->convertToHtml($content);
|
||||||
|
|
||||||
return $content;
|
return $content;
|
||||||
|
|
||||||
@@ -84,27 +76,26 @@ class Help implements HelpInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param string $route
|
* @param string $route
|
||||||
|
* @param string $language
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function inCache(string $route):bool
|
public function inCache(string $route, string $language):bool
|
||||||
{
|
{
|
||||||
return Cache::has('help.' . $route . '.title') && Cache::has('help.' . $route . '.text');
|
return Cache::has('help.' . $route . '.' . $language);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param string $route
|
* @param string $route
|
||||||
* @param string $language
|
* @param string $language
|
||||||
* @param array $content
|
* @param string $content
|
||||||
*
|
*
|
||||||
* @internal param $title
|
* @internal param $title
|
||||||
*/
|
*/
|
||||||
public function putInCache(string $route, string $language, array $content)
|
public function putInCache(string $route, string $language, string $content)
|
||||||
{
|
{
|
||||||
Cache::put('help.' . $route . '.text.' . $language, $content['text'], 10080); // a week.
|
Cache::put('help.' . $route . '.' . $language, $content, 10080); // a week.
|
||||||
Cache::put('help.' . $route . '.title.' . $language, $content['title'], 10080);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -21,19 +21,20 @@ interface HelpInterface
|
|||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $key
|
* @param string $route
|
||||||
|
* @param string $language
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getFromCache(string $key): string;
|
public function getFromCache(string $route, string $language): string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $language
|
* @param string $language
|
||||||
* @param string $route
|
* @param string $route
|
||||||
*
|
*
|
||||||
* @return array
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getFromGithub(string $language, string $route):array;
|
public function getFromGithub(string $language, string $route):string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $route
|
* @param string $route
|
||||||
@@ -44,15 +45,16 @@ interface HelpInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $route
|
* @param string $route
|
||||||
|
* @param string $language
|
||||||
*
|
*
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function inCache(string $route): bool;
|
public function inCache(string $route, string $language ): bool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $route
|
* @param string $route
|
||||||
* @param string $language
|
* @param string $language
|
||||||
* @param array $content
|
* @param string $content
|
||||||
*/
|
*/
|
||||||
public function putInCache(string $route, string $language, array $content);
|
public function putInCache(string $route, string $language, string $content);
|
||||||
}
|
}
|
||||||
|
@@ -41,11 +41,9 @@ class HelpController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function show(HelpInterface $help, string $route)
|
public function show(HelpInterface $help, string $route)
|
||||||
{
|
{
|
||||||
|
|
||||||
$language = Preferences::get('language', config('firefly.default_language', 'en_US'))->data;
|
$language = Preferences::get('language', config('firefly.default_language', 'en_US'))->data;
|
||||||
$content = [
|
$content = '<p>' . strval(trans('firefly.route_has_no_help')) . '</p>';
|
||||||
'text' => '<p>' . strval(trans('firefly.route_has_no_help')) . '</p>',
|
|
||||||
'title' => 'Help',
|
|
||||||
];
|
|
||||||
|
|
||||||
if (!$help->hasRoute($route)) {
|
if (!$help->hasRoute($route)) {
|
||||||
Log::error('No such route: ' . $route);
|
Log::error('No such route: ' . $route);
|
||||||
@@ -53,11 +51,9 @@ class HelpController extends Controller
|
|||||||
return Response::json($content);
|
return Response::json($content);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($help->inCache($route)) {
|
if ($help->inCache($route, $language)) {
|
||||||
$content = [
|
$content = $help->getFromCache($route, $language);
|
||||||
'text' => $help->getFromCache('help.' . $route . '.text.' . $language),
|
Log::debug('Help text was in cache.');
|
||||||
'title' => $help->getFromCache('help.' . $route . '.title.' . $language),
|
|
||||||
];
|
|
||||||
|
|
||||||
return Response::json($content);
|
return Response::json($content);
|
||||||
}
|
}
|
||||||
|
@@ -164,36 +164,29 @@ class HomeController extends Controller
|
|||||||
public function routes()
|
public function routes()
|
||||||
{
|
{
|
||||||
// these routes are not relevant for the help pages:
|
// these routes are not relevant for the help pages:
|
||||||
$ignore = [
|
$ignore = ['login', 'registe', 'logout', 'two-fac', 'lost-two', 'confirm', 'resend', 'do_confirm', 'testFla', 'json.', 'piggy-banks.add',
|
||||||
|
'piggy-banks.remove', 'preferences.', 'rules.rule.up', 'rules.rule.down', 'rules.rule-group.up', 'rules.rule-group.down', 'popup.report',
|
||||||
|
'admin.users.domains.block-','import.json','help.'
|
||||||
];
|
];
|
||||||
$routes = Route::getRoutes();
|
$routes = Route::getRoutes();
|
||||||
|
|
||||||
|
echo '<pre>';
|
||||||
|
|
||||||
/** @var \Illuminate\Routing\Route $route */
|
/** @var \Illuminate\Routing\Route $route */
|
||||||
foreach ($routes as $route) {
|
foreach ($routes as $route) {
|
||||||
|
|
||||||
$name = $route->getName();
|
$name = $route->getName();
|
||||||
$methods = $route->getMethods();
|
$methods = $route->getMethods();
|
||||||
$search = [
|
|
||||||
'{account}', '{what}', '{rule}', '{tj}', '{category}', '{budget}', '{code}', '{date}', '{attachment}', '{bill}', '{limitrepetition}',
|
|
||||||
'{currency}', '{jobKey}', '{piggyBank}', '{ruleGroup}', '{rule}', '{route}', '{unfinishedJournal}',
|
|
||||||
'{reportType}', '{start_date}', '{end_date}', '{accountList}', '{tag}', '{journalList}',
|
|
||||||
|
|
||||||
];
|
if (!is_null($name) && strlen($name) > 0 && in_array('GET', $methods) && !$this->startsWithAny($ignore, $name)) {
|
||||||
$replace = [1, 'asset', 1, 1, 1, 1, 'abc', '2016-01-01', 1, 1, 1, 1, 1, 1, 1, 1, 'index', 1,
|
echo sprintf('touch %s.md', $name)."\n";
|
||||||
'default', '20160101', '20160131', '1,2', 1, '1,2',
|
|
||||||
];
|
|
||||||
if (count($search) != count($replace)) {
|
|
||||||
echo 'count';
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
$url = str_replace($search, $replace, $route->getUri());
|
|
||||||
|
|
||||||
if (!is_null($name) && in_array('GET', $methods) && !$this->startsWithAny($ignore, $name)) {
|
|
||||||
echo '<a href="/' . $url . '" title="' . $name . '">' . $name . '</a><br>' . "\n";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
echo '</pre>';
|
||||||
|
|
||||||
return '<hr>';
|
echo '<hr />';
|
||||||
|
|
||||||
|
return ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -16,12 +16,12 @@ function showHelp(e) {
|
|||||||
$('#helpTitle').html('Please hold...');
|
$('#helpTitle').html('Please hold...');
|
||||||
|
|
||||||
$('#helpModal').modal('show');
|
$('#helpModal').modal('show');
|
||||||
|
$('#helpTitle').html('Help for this page');
|
||||||
$.getJSON('help/' + encodeURI(route)).done(function (data) {
|
$.getJSON('help/' + encodeURI(route)).done(function (data) {
|
||||||
$('#helpBody').html(data.text);
|
$('#helpBody').html(data);
|
||||||
$('#helpTitle').html(data.title);
|
|
||||||
}).fail(function () {
|
}).fail(function () {
|
||||||
$('#helpBody').html('<p class="text-danger">No help text could be found.</p>');
|
$('#helpBody').html('<p class="text-danger">No help text could be found.</p>');
|
||||||
$('#helpTitle').html('Sorry...');
|
$('#helpTitle').html('Apologies');
|
||||||
});
|
});
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user