changeset 961:b1a00c2c0c7f

admin: Use URL routes for static assets. This removes the need for `base_url` and other workarounds for when the admin panel is under a sub-folder.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 07 Oct 2017 12:16:04 -0700
parents 8101692fdc11
children 96ea68c36a74
files piecrust/admin/templates/layouts/default.html piecrust/admin/templates/layouts/master.html piecrust/admin/views/__init__.py piecrust/admin/views/dashboard.py piecrust/admin/views/publish.py
diffstat 5 files changed, 5 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/admin/templates/layouts/default.html	Sat Oct 07 12:13:57 2017 -0700
+++ b/piecrust/admin/templates/layouts/default.html	Sat Oct 07 12:16:04 2017 -0700
@@ -8,7 +8,7 @@
 </div>
 <nav class="ft-nav">
     <div class="ft-nav-title">
-        <img src="{{base_url}}/static/img/foodtruck.png" alt="Food Truck" />
+        <img src="{{url_for('.static', filename='img/foodtruck.png')}}" alt="Food Truck" />
         <div class="ft-nav-brand">FoodTruck</div>
     </div>
     {% include 'layouts/menu.html' %}
--- a/piecrust/admin/templates/layouts/master.html	Sat Oct 07 12:13:57 2017 -0700
+++ b/piecrust/admin/templates/layouts/master.html	Sat Oct 07 12:16:04 2017 -0700
@@ -6,9 +6,9 @@
         <title>{%if title%}{{title}} &ndash; {%endif%}FoodTruck</title>
         <meta name="description" content="A PieCrust management dashboard"/>
         <meta name="viewport" content="width=device-width, initial-scale=1"/>
-        <link rel="stylesheet" href="{{base_url}}/static/css/foodtruck.min.css"/>
+        <link rel="stylesheet" href="{{url_for('.static', filename='css/foodtruck.min.css')}}"/>
         <link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'/>
-        <link rel="apple-touch-icon" href="{{base_url}}/static/img/apple-touch-icon.png"/>
+        <link rel="apple-touch-icon" href="{{url_for('.static', filename='img/apple-touch-icon.png')}}"/>
     </head>
     <body>
         <div id="ft-wrapper" class="container-fluid {{wrapper_classes}}">
@@ -37,7 +37,7 @@
                 and many more.</p>
             </footer>
         </div>
-        <script src="{{base_url}}/static/js/foodtruck.min.js"></script>
+        <script src="{{url_for('.static', filename='js/foodtruck.min.js')}}"></script>
     </body>
 </html>
 
--- a/piecrust/admin/views/__init__.py	Sat Oct 07 12:13:57 2017 -0700
+++ b/piecrust/admin/views/__init__.py	Sat Oct 07 12:16:04 2017 -0700
@@ -24,14 +24,4 @@
     if context is None:
         context = {}
     context['menu'] = get_menu_context()
-    with_base_data(context)
     return context
-
-
-def with_base_data(context=None):
-    if context is None:
-        context = {}
-
-    script_root = request.script_root or ''
-    root_url = current_app.config.get('FOODTRUCK_ROOT_URL') or ''
-    context['base_url'] = script_root + root_url
--- a/piecrust/admin/views/dashboard.py	Sat Oct 07 12:13:57 2017 -0700
+++ b/piecrust/admin/views/dashboard.py	Sat Oct 07 12:16:04 2017 -0700
@@ -10,7 +10,7 @@
 from piecrust.uriutil import split_uri
 from ..textutil import text_preview
 from ..blueprint import foodtruck_bp, load_user
-from ..views import with_menu_context, with_base_data
+from ..views import with_menu_context
 
 
 logger = logging.getLogger(__name__)
@@ -135,7 +135,6 @@
             "User '%s' doesn't exist or password is incorrect." %
             username)
 
-    with_base_data(data)
     return render_template('login.html', **data)
 
 
--- a/piecrust/admin/views/publish.py	Sat Oct 07 12:13:57 2017 -0700
+++ b/piecrust/admin/views/publish.py	Sat Oct 07 12:16:04 2017 -0700
@@ -4,7 +4,6 @@
 from flask.ext.login import login_required
 from ..blueprint import foodtruck_bp
 from ..pubutil import PublishLogReader
-from ..views import with_menu_context, with_base_data
 
 
 logger = logging.getLogger(__name__)
@@ -25,7 +24,6 @@
     if not pub_cfg:
         data = {'error': "There are no publish targets defined in your "
                          "configuration file."}
-        with_base_data(data)
         return render_template('error.html', **data)
 
     try: