full suport for models and hotloading Plugins
This commit is contained in:
@@ -73,6 +73,7 @@
|
||||
{% if models_manifest %}<button class="tab-btn" data-tab="models" role="tab">Models/Textures</button>{% endif %}
|
||||
{% if logical_manifest %}<button class="tab-btn" data-tab="logical" role="tab">Logical</button>{% endif %}
|
||||
{% if mods_manifest %}<button class="tab-btn" data-tab="mods" role="tab">Mods</button>{% endif %}
|
||||
{% if plugins_manifest %}<button class="tab-btn" data-tab="plugins" role="tab">Plugins</button>{% endif %}
|
||||
<button class="tab-btn" data-tab="gallery" role="tab">Gallery</button>
|
||||
</div>
|
||||
|
||||
@@ -250,6 +251,8 @@
|
||||
data-member="{{ model.member }}" data-name="{{ model.name }}"
|
||||
data-model-format="{{ model.ext }}"
|
||||
data-default-texture="{{ model.default_texture }}"
|
||||
data-project-slug="{{ project.slug }}"
|
||||
data-plugins="{{ autoload_plugins_json }}"
|
||||
data-base-url="{% url 'library:pack_asset' project.slug versions.0.pk 'ASSET' %}"
|
||||
data-vanilla-base-url="/static/vanilla/ASSET"><i class="fas fa-cube"></i> Render</button>
|
||||
{% else %}
|
||||
@@ -390,10 +393,37 @@
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
{% if plugins_manifest %}
|
||||
<section class="tab-panel" id="tab-plugins">
|
||||
<div class="card">
|
||||
<h2><i class="fas fa-puzzle-piece"></i> Plugins</h2>
|
||||
<div class="plugins-warning">
|
||||
<i class="fas fa-exclamation-triangle"></i> <strong>Caution:</strong> this pack contains Blockbench plugins — executable JavaScript that runs in your browser. Plugins can crash Blockbench or run arbitrary code. Only open models from packs you trust.
|
||||
</div>
|
||||
<div class="plugins-toggle">
|
||||
<label class="switch">
|
||||
<input type="checkbox" id="plugins-hotload-toggle" checked>
|
||||
<span class="slider"></span>
|
||||
</label>
|
||||
<span>Hotload this pack's plugins when opening a model</span>
|
||||
</div>
|
||||
<ul class="plugins-list">
|
||||
{% for plugin in plugins_manifest.plugins %}
|
||||
<li>
|
||||
<i class="fas fa-file-code"></i>
|
||||
<span class="plugins-name">{{ plugin.name }}</span>
|
||||
{% if plugin.autoload %}<span class="plugins-badge autoload">autoload</span>{% endif %}
|
||||
<span class="plugins-size">{{ plugin.size|filesizeformat }}</span>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
<section class="tab-panel" id="tab-gallery">
|
||||
<div class="card">
|
||||
<h2><i class="fas fa-images"></i> Gallery</h2>
|
||||
<div class="gallery-grid">
|
||||
<h2><i class="fas fa-images"></i> Gallery</h2> <div class="gallery-grid">
|
||||
{% for asset in assets %}
|
||||
<figure class="gallery-item" data-media-url="{{ asset.file_url }}" data-media-type="{% if asset.is_video %}video{% else %}image{% endif %}" data-caption="{{ asset.caption }}">
|
||||
{% if asset.is_video or asset.is_gif %}
|
||||
@@ -537,6 +567,18 @@
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Per-project "Don't hotload" switch for pack plugins.
|
||||
const pluginsToggle = document.getElementById('plugins-hotload-toggle');
|
||||
const pluginsSlug = document.querySelector('.model-render-btn')?.dataset.projectSlug;
|
||||
if (pluginsToggle && pluginsSlug) {
|
||||
const key = 'packs:no-hotload:' + pluginsSlug;
|
||||
if (localStorage.getItem(key) === '1') pluginsToggle.checked = false;
|
||||
pluginsToggle.addEventListener('change', () => {
|
||||
if (pluginsToggle.checked) localStorage.removeItem(key);
|
||||
else localStorage.setItem(key, '1');
|
||||
});
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user