From ed33a054ad20741b49b8e8f1847d4a34c3d6ffda Mon Sep 17 00:00:00 2001 From: James Cole Date: Mon, 31 Oct 2016 18:31:52 +0100 Subject: [PATCH] This update will make the help method fall back to the English content, if it is available. --- app/Helpers/Help/Help.php | 45 ++++++++++++++++++------- app/Http/Controllers/HelpController.php | 20 +++++++++-- resources/lang/en_US/firefly.php | 3 +- 3 files changed, 53 insertions(+), 15 deletions(-) diff --git a/app/Helpers/Help/Help.php b/app/Helpers/Help/Help.php index 2933b2a0ca..4b19963bef 100644 --- a/app/Helpers/Help/Help.php +++ b/app/Helpers/Help/Help.php @@ -14,7 +14,9 @@ namespace FireflyIII\Helpers\Help; use Cache; use League\CommonMark\CommonMarkConverter; +use Log; use Requests; +use Requests_Exception; use Route; /** @@ -45,20 +47,28 @@ class Help implements HelpInterface public function getFromGithub(string $language, string $route): string { - $uri = sprintf('https://raw.githubusercontent.com/firefly-iii/help/master/%s/%s.md', $language, $route); - $content = '

' . strval(trans('firefly.route_has_no_help')) . '

'; - $result = Requests::get($uri); + $uri = sprintf('https://raw.githubusercontent.com/firefly-iii/help/master/%s/%s.md', $language, $route); + Log::debug(sprintf('Trying to get %s...', $uri)); + $content = ''; + try { + $result = Requests::get($uri); + } catch (Requests_Exception $e) { + Log::error($e); + + return ''; + } + + + Log::debug(sprintf('Status code is %d', $result->status_code)); if ($result->status_code === 200) { - $content = $result->body; + $content = trim($result->body); } - - - if (strlen(trim($content)) == 0) { - $content = '

' . strval(trans('firefly.route_has_no_help')) . '

'; + if (strlen($content) > 0) { + Log::debug('Content is longer than zero. Expect something.'); + $converter = new CommonMarkConverter(); + $content = $converter->convertToHtml($content); } - $converter = new CommonMarkConverter(); - $content = $converter->convertToHtml($content); return $content; @@ -83,7 +93,16 @@ class Help implements HelpInterface */ public function inCache(string $route, string $language):bool { - return Cache::has('help.' . $route . '.' . $language); + $result = Cache::has('help.' . $route . '.' . $language); + if ($result) { + Log::debug(sprintf('Cache has this entry: %s', 'help.' . $route . '.' . $language)); + } + if (!$result) { + Log::debug(sprintf('Cache does not have this entry: %s', 'help.' . $route . '.' . $language)); + } + + return $result; + } /** @@ -96,6 +115,8 @@ class Help implements HelpInterface */ public function putInCache(string $route, string $language, string $content) { - Cache::put('help.' . $route . '.' . $language, $content, 10080); // a week. + $key = 'help.' . $route . '.' . $language; + Log::debug(sprintf('Will store entry in cache: %s', $key)); + Cache::put($key, $content, 10080); // a week. } } diff --git a/app/Http/Controllers/HelpController.php b/app/Http/Controllers/HelpController.php index 4b56c6e89e..bd1f34c581 100644 --- a/app/Http/Controllers/HelpController.php +++ b/app/Http/Controllers/HelpController.php @@ -42,8 +42,9 @@ class HelpController extends Controller public function show(HelpInterface $help, string $route) { - $language = Preferences::get('language', config('firefly.default_language', 'en_US'))->data; - $content = '

' . strval(trans('firefly.route_has_no_help')) . '

'; + $language = Preferences::get('language', config('firefly.default_language', 'en_US'))->data; + $content = '

' . strval(trans('firefly.route_has_no_help')) . '

'; + $alternative = false; if (!$help->hasRoute($route)) { Log::error('No such route: ' . $route); @@ -60,6 +61,21 @@ class HelpController extends Controller $content = $help->getFromGithub($language, $route); + // get backup language content (try English): + if (strlen($content) === 0) { + $language = 'en_US'; + $content = $help->getFromGithub($language, $route); + $alternative = true; + } + + if ($alternative && strlen($content) > 0) { + $content = '

' . strval(trans('firefly.help_may_not_be_your_language')) . '

' . $content; + } + + if (strlen($content) === 0) { + $content = '

' . strval(trans('firefly.route_has_no_help')) . '

'; + } + $help->putInCache($route, $language, $content); return Response::json($content); diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index b15faf48fa..435ab3f18b 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -51,7 +51,8 @@ return [ 'flash_info_multiple' => 'There is one message|There are :count messages', 'flash_error_multiple' => 'There is one error|There are :count errors', 'net_worth' => 'Net worth', - 'route_has_no_help' => 'There is no help for this route, or there is no help available in your language.', + 'route_has_no_help' => 'There is no help for this route.', + 'help_may_not_be_your_language' => 'This help text is in English. It is not yet available in your language', 'two_factor_welcome' => 'Hello, :user!', 'two_factor_enter_code' => 'To continue, please enter your two factor authentication code. Your application can generate it for you.', 'two_factor_code_here' => 'Enter code here',