From cf0580a5a75d94d7d43d667febfdf813bf0e8aea Mon Sep 17 00:00:00 2001 From: Philipp Engel Date: Tue, 9 Dec 2014 17:12:04 +0100 Subject: [PATCH] added a mechanism that allows templates to override the index.jinja2 with their own (will be replaced with override_index.jinja2 from the plugin's template folder). drawbacks: * if more than one of the templates has an override_index.jinja2 file, the later one will be used (lex. order) * the index file will replaced, so the overriding one has to take care of the logic (like including js files) itself --- .../templates/override_index.jinja2 | 76 +++++++++++++++++++ src/octoprint/server/__init__.py | 10 ++- 2 files changed, 84 insertions(+), 2 deletions(-) create mode 100644 src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 diff --git a/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 b/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 new file mode 100644 index 00000000..c623a9d9 --- /dev/null +++ b/src/octoprint/plugins/svgtogcode/templates/override_index.jinja2 @@ -0,0 +1,76 @@ + + + + Mr Beam Print + + + + + + + + + + + + + {% if stylesheet == "less" %} + + + + {% for name, assets in assetPlugins.items() %} + {% if "less" in assets %} + {% for asset in assets["less"] %} + + {% endfor %} + {% endif %} + {% endfor %} + + + + {% else %} + + + {% for name, assets in assetPlugins.items() %} + {% if "css" in assets %} + {% for asset in assets["css"] %} + + {% endfor %} + {% endif %} + {% endfor %} + + {% endif %} + + + + + +

Test

+ + diff --git a/src/octoprint/server/__init__.py b/src/octoprint/server/__init__.py index 85eed1d2..f4b0c1e7 100644 --- a/src/octoprint/server/__init__.py +++ b/src/octoprint/server/__init__.py @@ -6,6 +6,7 @@ __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agp __copyright__ = "Copyright (C) 2014 The OctoPrint Project - Released under terms of the AGPLv3 License" import uuid +import os from sockjs.tornado import SockJSRouter from flask import Flask, render_template, send_from_directory, g, request, make_response, session from flask.ext.login import LoginManager @@ -107,12 +108,17 @@ def index(): template_plugins = pluginManager.get_implementations(octoprint.plugin.TemplatePlugin) template_plugin_names = list() + + root_template = "index.jinja2" + for name in template_plugins.items(): template_plugin_names.append(name[0]) - + plugin_main_template = name[1].get_template_folder() + "/override_index.jinja2" + if (os.path.isfile(plugin_main_template)): + root_template = "override_index.jinja2" return render_template( - "index.jinja2", + root_template, webcamStream=settings().get(["webcam", "stream"]), enableTimelapse=(settings().get(["webcam", "snapshot"]) is not None and settings().get(["webcam", "ffmpeg"]) is not None), enableGCodeVisualizer=settings().get(["gcodeViewer", "enabled"]),