]> git.immae.eu Git - github/shaarli/Shaarli.git/commitdiff
Inject ROOT_PATH in plugin instead of regenerating it everywhere
authorArthurHoaro <arthur@hoa.ro>
Fri, 16 Oct 2020 11:06:06 +0000 (13:06 +0200)
committerArthurHoaro <arthur@hoa.ro>
Fri, 16 Oct 2020 11:06:06 +0000 (13:06 +0200)
application/front/controller/visitor/ShaarliVisitorController.php
application/plugin/PluginManager.php
doc/md/dev/Plugin-system.md
plugins/archiveorg/archiveorg.php
plugins/isso/isso.php
plugins/qrcode/qrcode.php
plugins/wallabag/wallabag.php

index 55c075a2a87f7ae8c7cad95c5134bf78c53e3cf5..54f9fe03fc5bd4c506b04c7cfaae02b8afea0ee5 100644 (file)
@@ -106,6 +106,7 @@ abstract class ShaarliVisitorController
             'target' => $template,
             'loggedin' => $this->container->loginManager->isLoggedIn(),
             'basePath' => $this->container->basePath,
+            'rootPath' => preg_replace('#/index\.php$#', '', $this->container->basePath),
             'bookmarkService' => $this->container->bookmarkService
         ];
     }
index 1b2197c9d8d0aa1af56d44842ed18c3fa4f619de..da66dea3952ad3cb0086a4594858f392f3270ba0 100644 (file)
@@ -104,6 +104,7 @@ class PluginManager
             'target' => '_PAGE_',
             'loggedin' => '_LOGGEDIN_',
             'basePath' => '_BASE_PATH_',
+            'rootPath' => '_ROOT_PATH_',
             'bookmarkService' => '_BOOKMARK_SERVICE_',
         ];
 
index c29774de05b46e47be8ed6c5b05b5aa539e68028..f09fadc2925db027873cd2d788ac6a239a6ffa68 100644 (file)
@@ -148,11 +148,16 @@ If a file needs to be included in server end, use simple relative path:
 `PluginManager::$PLUGINS_PATH . '/mything/template.html'`.
 
 If it needs to be included in front end side (e.g. an image),
-the relative path must be prefixed with special data `_BASE_PATH_`:
-`($data['_BASE_PATH_'] ?? '') . '/' . PluginManager::$PLUGINS_PATH . '/mything/picture.png`.
+the relative path must be prefixed with special data:
+
+  * if it's a link that will need to be processed by Shaarli, use `_BASE_PATH_`:
+    for e.g. `$data['_BASE_PATH_'] . '/admin/tools`.
+  * if you want to include an asset, you need to add the root URL (base path without `/index.php`, for people using Shaarli without URL rewriting), then use `_ROOT_PATH_`:
+    for e.g
+`$['_ROOT_PATH_'] . '/' . PluginManager::$PLUGINS_PATH . '/mything/picture.png`.
 
 Note that special placeholders for CSS and JS files (respectively `css_files` and `js_files`) are already prefixed
-with the base path in template files.
+with the root path in template files.
 
 ### It's not working!
 
index a7b595e163424fa3ce3e1b2a181e3bdc4f9d1575..ed2715322686e82ca4a9373d3417f57babc67da1 100644 (file)
@@ -17,8 +17,7 @@ use Shaarli\Plugin\PluginManager;
 function hook_archiveorg_render_linklist($data)
 {
     $archive_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/archiveorg/archiveorg.html');
-    $rootPath = preg_replace('#/index\.php$#', '', $data['_BASE_PATH_'] ?? '');
-    $path = $rootPath . '/' . PluginManager::$PLUGINS_PATH;
+    $path = ($data['_ROOT_PATH_'] ?? '') . '/' . PluginManager::$PLUGINS_PATH;
 
     foreach ($data['links'] as &$value) {
         $isNote = startsWith($value['real_url'], '/shaare/');
index 79e7380b66f543ade34bb080e027cba26990a7bf..d46321633e9fabdc15d714a7356af2dfc23767d3 100644 (file)
@@ -54,7 +54,7 @@ function hook_isso_render_linklist($data, $conf)
         if ($conf->get('resource.theme') === 'default') {
             $button .= '<i class="linklist-plugin-icon fa fa-comment"></i>';
         } else {
-            $button .= '<img class="linklist-plugin-icon" src="plugins/isso/comment.png" ';
+            $button .= '<img class="linklist-plugin-icon" src="'. $data['_ROOT_PATH_'].'/plugins/isso/comment.png" ';
             $button .= 'title="Comment on this shaare" alt="Comments" />';
         }
         $button .= '</a></span>';
index 4571285986dce3d41f14687b3efa949aab338f36..24fd18baf99aefe2f6f58c7a9225735f6b54ad7e 100644 (file)
@@ -19,8 +19,7 @@ function hook_qrcode_render_linklist($data)
 {
     $qrcode_html = file_get_contents(PluginManager::$PLUGINS_PATH . '/qrcode/qrcode.html');
 
-    $rootPath = preg_replace('#/index\.php$#', '', $data['_BASE_PATH_'] ?? '');
-    $path = $rootPath . '/' . PluginManager::$PLUGINS_PATH;
+    $path = ($data['_ROOT_PATH_'] ?? '') . '/' . PluginManager::$PLUGINS_PATH;
     foreach ($data['links'] as &$value) {
         $qrcode = sprintf(
             $qrcode_html,
index 805c1ad986aa9bc4c37b2531ca521f891e6cffd6..d0df3501d6389b40ce2e1c340675f4debada71ea 100644 (file)
@@ -45,7 +45,7 @@ function hook_wallabag_render_linklist($data, $conf)
     $wallabagHtml = file_get_contents(PluginManager::$PLUGINS_PATH . '/wallabag/wallabag.html');
 
     $linkTitle = t('Save to wallabag');
-    $path = ($data['_BASE_PATH_'] ?? '') . '/' . PluginManager::$PLUGINS_PATH;
+    $path = ($data['_ROOT_PATH_'] ?? '') . '/' . PluginManager::$PLUGINS_PATH;
 
     foreach ($data['links'] as &$value) {
         $wallabag = sprintf(