From 7a503302fbe6fcc23af94de2fe313298c3a6d95c Mon Sep 17 00:00:00 2001 From: RaNaN Date: Wed, 2 Feb 2011 21:46:15 +0100 Subject: removed django => now using bottle, new builtin threaded ssl server Dont forget to install jinja and beaker ! --- module/web/templates/jinja/default/base.html | 317 ++++++++++++++++ module/web/templates/jinja/default/captcha.html | 35 ++ module/web/templates/jinja/default/collector.html | 84 +++++ module/web/templates/jinja/default/downloads.html | 50 +++ .../web/templates/jinja/default/edit_package.html | 40 ++ module/web/templates/jinja/default/home.html | 241 ++++++++++++ module/web/templates/jinja/default/login.html | 35 ++ module/web/templates/jinja/default/logout.html | 9 + module/web/templates/jinja/default/logs.html | 61 +++ module/web/templates/jinja/default/package_ui.js | 408 +++++++++++++++++++++ .../web/templates/jinja/default/pathchooser.html | 76 ++++ module/web/templates/jinja/default/queue.html | 85 +++++ module/web/templates/jinja/default/settings.html | 232 ++++++++++++ module/web/templates/jinja/default/test.html | 12 + module/web/templates/jinja/default/window.html | 45 +++ 15 files changed, 1730 insertions(+) create mode 100644 module/web/templates/jinja/default/base.html create mode 100644 module/web/templates/jinja/default/captcha.html create mode 100644 module/web/templates/jinja/default/collector.html create mode 100644 module/web/templates/jinja/default/downloads.html create mode 100644 module/web/templates/jinja/default/edit_package.html create mode 100644 module/web/templates/jinja/default/home.html create mode 100644 module/web/templates/jinja/default/login.html create mode 100644 module/web/templates/jinja/default/logout.html create mode 100644 module/web/templates/jinja/default/logs.html create mode 100644 module/web/templates/jinja/default/package_ui.js create mode 100644 module/web/templates/jinja/default/pathchooser.html create mode 100644 module/web/templates/jinja/default/queue.html create mode 100644 module/web/templates/jinja/default/settings.html create mode 100644 module/web/templates/jinja/default/test.html create mode 100644 module/web/templates/jinja/default/window.html (limited to 'module/web/templates') diff --git a/module/web/templates/jinja/default/base.html b/module/web/templates/jinja/default/base.html new file mode 100644 index 000000000..04c6dfbad --- /dev/null +++ b/module/web/templates/jinja/default/base.html @@ -0,0 +1,317 @@ + + + + + + + + + + + + + + +{% block title %}pyLoad {{_("Webinterface")}}{% endblock %} + + + +{% block head %} +{% endblock %} + + + + +
+ +
+ + {% if user.is_authenticated %} + + +Captcha: +{{_("Captcha waiting")}} + + +User:{{user.name}} + +{% else %} + {{_("Please Login!")}} +{% endif %} + +
+ + + +
+ +
+ +
+
+ +{% if perms.can_change_status %} + +{% endif %} + +{% if perms.can_see_dl %} + +{% endif %} + +{% block pageactions %} +{% endblock %} +
+ +
+ +
+ +

{% block subtitle %}pyLoad - {{_("Webinterface")}}{% endblock %}

+ +{% block statusbar %} +{% endblock %} + + +
+ +
+
+ +{% for message in messages %} +

{{message}}

+{% endfor %} + +{% block content %} +{% endblock content %} + +
+ + +
+
+ +{% include "default/window.html" %} +{% include "default/captcha.html" %} + + diff --git a/module/web/templates/jinja/default/captcha.html b/module/web/templates/jinja/default/captcha.html new file mode 100644 index 000000000..b3be3deca --- /dev/null +++ b/module/web/templates/jinja/default/captcha.html @@ -0,0 +1,35 @@ + + + + +
+
+

{{_("Captcha reading")}}

+

{{_("Please read the text on the captcha.")}}

+ + + + + + + + + + + + + + + + + +
+ + +
+ +
\ No newline at end of file diff --git a/module/web/templates/jinja/default/collector.html b/module/web/templates/jinja/default/collector.html new file mode 100644 index 000000000..3e6b47234 --- /dev/null +++ b/module/web/templates/jinja/default/collector.html @@ -0,0 +1,84 @@ +{% extends 'default/base.html' %} +{% block head %} + + + + +{% endblock %} + +{% block title %}{{_("Collector")}} - {{super()}} {% endblock %} +{% block subtitle %}{{_("Collector")}}{% endblock %} + +{% block menu %} +
  • + {{_("Home")}} +
  • +
  • + {{_("Queue")}} +
  • +
  • + {{_("Collector")}} +
  • +
  • + {{_("Downloads")}} +
  • +
  • + {{_("Logs")}} +
  • +
  • + {{_("Config")}} +
  • {% endblock %} + +{% block pageactions %} + +{% endblock %} + +{% block content %} +
    {{_("success")}}
    +
    {{_("failure")}}
    +
    + + {{_("loading")}} +
    + + + +{% include "default/edit_package.html" %} + +{% endblock %} \ No newline at end of file diff --git a/module/web/templates/jinja/default/downloads.html b/module/web/templates/jinja/default/downloads.html new file mode 100644 index 000000000..813dc8d06 --- /dev/null +++ b/module/web/templates/jinja/default/downloads.html @@ -0,0 +1,50 @@ +{% extends 'default/base.html' %} + +{% block title %}Downloads - {{super()}} {% endblock %} + +{% block menu %} +
  • + {{_("Home")}} +
  • +
  • + {{_("Queue")}} +
  • +
  • + {{_("Collector")}} +
  • +
  • + {{_("Downloads")}} +
  • +
  • + {{_("Logs")}} +
  • +
  • + {{_("Config")}} +
  • +{% endblock %} + +{% block subtitle %} +{{_("Downloads")}} +{% endblock %} + +{% block content %} + + + +{% endblock %} \ No newline at end of file diff --git a/module/web/templates/jinja/default/edit_package.html b/module/web/templates/jinja/default/edit_package.html new file mode 100644 index 000000000..0c9dcff42 --- /dev/null +++ b/module/web/templates/jinja/default/edit_package.html @@ -0,0 +1,40 @@ +
    +
    +

    {{_("Edit Package")}}

    +

    {{_("Edit the package detais below.")}}

    + + + + + + + + + + + + + + + +
    + +
    + +
    \ No newline at end of file diff --git a/module/web/templates/jinja/default/home.html b/module/web/templates/jinja/default/home.html new file mode 100644 index 000000000..b2cef2cb7 --- /dev/null +++ b/module/web/templates/jinja/default/home.html @@ -0,0 +1,241 @@ +{% extends 'default/base.html' %} +{% block head %} + + + +{% endblock %} + +{% block subtitle %} +{{_("Active Downloads")}} +{% endblock %} + +{% block content %} + + + + + + + + + + + + + {% for link in content %} + + + + + + + + + + + {% endfor %} + + +
    {{_("Name")}}{{_("Status")}}{{_("Information")}}{{_("Size")}}{{_("Progress")}}
    +{% endblock %} \ No newline at end of file diff --git a/module/web/templates/jinja/default/login.html b/module/web/templates/jinja/default/login.html new file mode 100644 index 000000000..0e9e4d568 --- /dev/null +++ b/module/web/templates/jinja/default/login.html @@ -0,0 +1,35 @@ +{% extends 'default/base.html' %} + +{% block title %}{{_("Login")}} - {{super()}} {% endblock %} + +{% block content %} + +
    +
    +
    + +
    + Login + +
    + +
    + +
    +
    +
    + +{% if errors %} +

    {{_("Your username and password didn't match. Please try again.")}}

    +{% endif %} + +
    +
    + +{% endblock %} diff --git a/module/web/templates/jinja/default/logout.html b/module/web/templates/jinja/default/logout.html new file mode 100644 index 000000000..d3f07472b --- /dev/null +++ b/module/web/templates/jinja/default/logout.html @@ -0,0 +1,9 @@ +{% extends 'default/base.html' %} + +{% block head %} + +{% endblock %} + +{% block content %} +

    {{_("You were successfully logged out.")}}

    +{% endblock %} \ No newline at end of file diff --git a/module/web/templates/jinja/default/logs.html b/module/web/templates/jinja/default/logs.html new file mode 100644 index 000000000..7a95b4364 --- /dev/null +++ b/module/web/templates/jinja/default/logs.html @@ -0,0 +1,61 @@ +{% extends 'default/base.html' %} + +{% block title %}{{_("Logs")}} - {{super()}} {% endblock %} +{% block subtitle %}{{_("Logs")}}{% endblock %} +{% block head %} + +{% endblock %} +{% block menu %} +
  • + {{_("Home")}} +
  • +
  • + {{_("Queue")}} +
  • +
  • + {{_("Collector")}} +
  • +
  • + {{_("Downloads")}} +
  • +
  • + {{_("Logs")}} +
  • +
  • + {{_("Config")}} +
  • +{% endblock %} + +{% block content %} +
    + +
    << {{_("Start")}} < {{_("prev")}} {{_("next")}} > {{_("End")}} >>
    +
    +
    + +   + + +
    +
    +
    {{warning}}
    +
    +
    + + {% for line in log %} + + {% endfor %} +
    {{line.line}}{{line.date}}{{line.level}}{{line.message}}
    +
    +
    +
    + + +
    +
    +
     
    +{% endblock %} \ No newline at end of file diff --git a/module/web/templates/jinja/default/package_ui.js b/module/web/templates/jinja/default/package_ui.js new file mode 100644 index 000000000..45e284903 --- /dev/null +++ b/module/web/templates/jinja/default/package_ui.js @@ -0,0 +1,408 @@ +var load, success, fail, pack_box; + +document.addEvent("domready", function() { + load = new Fx.Tween($("load-indicator"), {link: "cancel"}); + success = new Fx.Tween($("load-success"), {link: "chain"}); + fail = new Fx.Tween($("load-failure"), {link: "chain"}); + + [load,success,fail].each(function(fx) { + fx.set("opacity", 0) + }); + + pack_box = new Fx.Tween($('pack_box')); + $('pack_reset').addEvent('click', function() { + hide_pack() + }); +}); + +function indicateLoad() { + //$("load-indicator").reveal(); + load.start("opacity", 1) +} + +function indicateFinish() { + load.start("opacity", 0) +} + +function indicateSuccess() { + indicateFinish(); + success.start("opacity", 1).chain(function() { + (function() { + success.start("opacity", 0); + }).delay(250); + }); + +} + +function indicateFail() { + indicateFinish(); + fail.start("opacity", 1).chain(function() { + (function() { + fail.start("opacity", 0); + }).delay(250); + }); +} + +function show_pack() { + bg_show(); + $("pack_box").setStyle('display', 'block'); + pack_box.start('opacity', 1) +} + +function hide_pack() { + bg_hide(); + pack_box.start('opacity', 0).chain(function() { + $('pack_box').setStyle('display', 'none'); + }); +} + +var PackageUI = new Class({ + initialize: function(url, type) { + this.url = url; + this.type = type; + this.packages = []; + this.parsePackages(); + + this.sorts = new Sortables($("package-list"), { + constrain: false, + clone: true, + revert: true, + opacity: 0.4, + handle: ".package_drag", + //onStart: this.startSort, + onComplete: this.saveSort.bind(this) + }); + + $("del_finished").addEvent("click", this.deleteFinished.bind(this)); + $("restart_failed").addEvent("click", this.restartFailed.bind(this)); + + }, + + parsePackages: function() { + $("package-list").getChildren("li").each(function(ele) { + var id = ele.getFirst().get("id").match(/[0-9]+/); + this.packages.push(new Package(this, id, ele)) + }.bind(this)) + }, + + loadPackages: function() { + }, + + deleteFinished: function() { + indicateLoad(); + new Request.JSON({ + method: 'get', + url: '/json/delete_finished', + onSuccess: function(data) { + if (data.del.length > 0) { + window.location.reload() + } else { + this.packages.each(function(pack) { + pack.close(); + }); + indicateSuccess(); + } + }.bind(this), + onFailure: indicateFail + }).send(); + }, + + restartFailed: function() { + indicateLoad(); + new Request.JSON({ + method: 'get', + url: '/json/restart_failed', + onSuccess: function(data) { + this.packages.each(function(pack) { + pack.close(); + }); + indicateSuccess(); + }.bind(this), + onFailure: indicateFail + }).send(); + }, + + startSort: function(ele, copy) { + }, + + saveSort: function(ele, copy) { + var order = []; + this.sorts.serialize(function(li, pos) { + if (li == ele && ele.retrieve("order") != pos) { + order.push(ele.retrieve("pid") + "|" + pos) + } + li.store("order", pos) + }); + if (order.length > 0) { + indicateLoad(); + new Request.JSON({ + method: 'get', + url: '/json/package_order/' + order[0], + onSuccess: indicateFinish, + onFailure: indicateFail + }).send(); + } + } + +}); + +var Package = new Class({ + initialize: function(ui, id, ele, data) { + this.ui = ui; + this.id = id; + this.linksLoaded = false; + + if (!ele) { + this.createElement(data); + } else { + this.ele = ele; + this.order = ele.getElements("div.order")[0].get("html"); + this.ele.store("order", this.order); + this.ele.store("pid", this.id); + this.parseElement(); + } + + var pname = this.ele.getElements(".packagename")[0]; + this.buttons = new Fx.Tween(this.ele.getElements(".buttons")[0], {link: "cancel"}); + this.buttons.set("opacity", 0); + + pname.addEvent("mouseenter", function(e) { + this.buttons.start("opacity", 1) + }.bind(this)); + + pname.addEvent("mouseleave", function(e) { + this.buttons.start("opacity", 0) + }.bind(this)); + + + }, + + createElement: function() { + alert("create") + }, + + parseElement: function() { + var imgs = this.ele.getElements('img'); + + this.name = this.ele.getElements('.name')[0]; + this.folder = this.ele.getElements('.folder')[0]; + this.password = this.ele.getElements('.password')[0]; + this.prio = this.ele.getElements('.prio')[0]; + + imgs[1].addEvent('click', this.deletePackage.bind(this)); + + imgs[2].addEvent('click', this.restartPackage.bind(this)); + + imgs[3].addEvent('click', this.editPackage.bind(this)); + + imgs[4].addEvent('click', this.movePackage.bind(this)); + + this.ele.getElement('.packagename').addEvent('click', this.toggle.bind(this)); + + }, + + loadLinks: function() { + indicateLoad(); + new Request.JSON({ + method: 'get', + url: '/json/package/' + this.id, + onSuccess: this.createLinks.bind(this), + onFailure: indicateFail + }).send(); + }, + + createLinks: function(data) { + var ul = $("sort_children_{id}".substitute({"id": this.id})); + ul.erase("html"); + data.links.each(function(link) { + var li = new Element("li", { + "style": { + "margin-left": 0 + } + }); + + var html = "\n".substitute({"icon": link.icon}); + html += "{name}
    ".substitute({"name": link.name}); + html += "{statusmsg}{error} ".substitute({"statusmsg": link.statusmsg, "error":link.error}); + html += "{format_size}".substitute({"format_size": link.format_size}); + html += "{plugin}  ".substitute({"plugin": link.plugin}); + html += "  "; + html += "
    "; + + var div = new Element("div", { + "id": "file_" + link.id, + "class": "child", + "html": html + }); + + li.store("order", link.order); + li.store("lid", link.id); + + li.adopt(div); + ul.adopt(li); + }); + this.sorts = new Sortables(ul, { + constrain: false, + clone: true, + revert: true, + opacity: 0.4, + handle: ".sorthandle", + onComplete: this.saveSort.bind(this) + }); + this.registerLinkEvents(); + this.linksLoaded = true; + indicateFinish(); + this.toggle(); + }, + + registerLinkEvents: function() { + this.ele.getElements('.child').each(function(child) { + var lid = child.get('id').match(/[0-9]+/); + var imgs = child.getElements('.child_secrow img'); + imgs[0].addEvent('click', function(e) { + new Request({ + method: 'get', + url: '/json/remove_link/' + this, + onSuccess: function() { + $('file_' + this).nix() + }.bind(this), + onFailure: indicateFail + }).send(); + }.bind(lid)); + + imgs[1].addEvent('click', function(e) { + new Request({ + method: 'get', + url: '/json/restart_link/' + this, + onSuccess: function() { + var ele = $('file_' + this); + var imgs = ele.getElements("img"); + imgs[0].set("src", "/media/default/img/status_queue.png"); + var spans = ele.getElements(".child_status"); + spans[1].set("html", "queued"); + indicateSuccess(); + }.bind(this), + onFailure: indicateFail + }).send(); + }.bind(lid)); + }); + }, + + toggle: function() { + var child = this.ele.getElement('.children'); + if (child.getStyle('display') == "block") { + child.dissolve(); + } else { + if (!this.linksLoaded) { + this.loadLinks(); + } else { + child.reveal(); + } + } + }, + + deletePackage: function(event) { + indicateLoad(); + new Request({ + method: 'get', + url: '/json/remove_package/' + this.id, + onSuccess: function() { + this.ele.nix(); + indicateFinish(); + }.bind(this), + onFailure: indicateFail + }).send(); + event.stop(); + }, + + restartPackage: function(event) { + indicateLoad(); + new Request({ + method: 'get', + url: '/json/restart_package/' + this.id, + onSuccess: function() { + this.close(); + indicateSuccess(); + }.bind(this), + onFailure: indicateFail + }).send(); + event.stop(); + }, + + close: function() { + var child = this.ele.getElement('.children'); + if (child.getStyle('display') == "block") { + child.dissolve(); + } + var ul = $("sort_children_{id}".substitute({"id": this.id})); + ul.erase("html"); + this.linksLoaded = false; + }, + + movePackage: function(event) { + indicateLoad(); + new Request({ + method: 'get', + url: '/json/move_package/' + ((this.ui.type + 1) % 2) + "/" + this.id, + onSuccess: function() { + this.ele.nix(); + indicateFinish(); + }.bind(this), + onFailure: indicateFail + }).send(); + event.stop(); + }, + + editPackage: function(event) { + $("pack_form").removeEvents("submit"); + $("pack_form").addEvent("submit", this.savePackage.bind(this)); + + $("pack_id").set("value", this.id); + $("pack_name").set("value", this.name.get("text")); + $("pack_folder").set("value", this.folder.get("text")); + $("pack_pws").set("value", this.password.get("text")); + + var prio = 3; + $("pack_prio").getChildren("option").each(function(item, index) { + item.erase("selected"); + if (prio.toString() == this.prio.get("text")) { + item.set("selected", "selected"); + } + prio--; + }.bind(this)); + + + show_pack(); + event.stop(); + }, + + savePackage: function(event) { + $("pack_form").send(); + this.name.set("text", $("pack_name").get("value")); + this.folder.set("text", $("pack_folder").get("value")); + this.password.set("text", $("pack_pws").get("value")); + this.prio.set("text", $("pack_prio").get("value")); + hide_pack(); + event.stop(); + }, + + saveSort: function(ele, copy) { + var order = []; + this.sorts.serialize(function(li, pos) { + if (li == ele && ele.retrieve("order") != pos) { + order.push(ele.retrieve("lid") + "|" + pos) + } + li.store("order", pos) + }); + if (order.length > 0) { + indicateLoad(); + new Request.JSON({ + method: 'get', + url: '/json/link_order/' + order[0], + onSuccess: indicateFinish, + onFailure: indicateFail + }).send(); + } + } + +}); \ No newline at end of file diff --git a/module/web/templates/jinja/default/pathchooser.html b/module/web/templates/jinja/default/pathchooser.html new file mode 100644 index 000000000..d00637055 --- /dev/null +++ b/module/web/templates/jinja/default/pathchooser.html @@ -0,0 +1,76 @@ + + + + + + +
    +
    +
    + + +
    + + {% if type == 'folder' %} + {{_("Path")}}: {{_("absolute")}} | {{_("relative")}} + {% else %} + {{_("Path")}}: {{_("absolute")}} | {{_("relative")}} + {% endif %} +
    + + + + + + + + {% if parentdir %} + + + + {% endif %} +{% for file in files %} + + {% if type == 'folder' %} + + {% else %} + + {% endif %} + + + + + +{% endfor %} +
    {{_("name")}}{{_("size")}}{{_("type")}}{{_("last modified")}}
    + {{_("parent directory")}} +
    {% if file.type == 'dir' %}{{ file.name|truncate(25) }}{% else %}{{ file.name|truncate(25) }}{% endif %}{% if file.type == 'dir' %}{{ file.name|truncate(25) }}{% else %}{{ file.name|truncate(25) }}{% endif %}{{ file.size|float|filesizeformat }}{% if file.type == 'dir' %}directory{% else %}{{ file.ext|default("file") }}{% endif %}{{ file.modified|date("d.m.Y - H:i:s") }}
    +
    + + \ No newline at end of file diff --git a/module/web/templates/jinja/default/queue.html b/module/web/templates/jinja/default/queue.html new file mode 100644 index 000000000..e72871873 --- /dev/null +++ b/module/web/templates/jinja/default/queue.html @@ -0,0 +1,85 @@ +{% extends 'default/base.html' %} +{% block head %} + + + + +{% endblock %} + +{% block title %}{{_("Queue")}} - {{super()}} {% endblock %} +{% block subtitle %}{{_("Queue")}}{% endblock %} + +{% block menu %} +
  • + {{_("Home")}} +
  • +
  • + {{_("Queue")}} +
  • +
  • + {{_("Collector")}} +
  • +
  • + {{_("Downloads")}} +
  • +
  • + {{_("Logs")}} +
  • +
  • + {{_("Config")}} +
  • +{% endblock %} + +{% block pageactions %} + +{% endblock %} + +{% block content %} +
    {{_("success")}}
    +
    {{_("failure")}}
    +
    + + {{_("loading")}} +
    + + + +{% include "default/edit_package.html" %} + +{% endblock %} \ No newline at end of file diff --git a/module/web/templates/jinja/default/settings.html b/module/web/templates/jinja/default/settings.html new file mode 100644 index 000000000..18bc78e30 --- /dev/null +++ b/module/web/templates/jinja/default/settings.html @@ -0,0 +1,232 @@ +{% extends 'default/base.html' %} + +{% block title %}{{ _("Config") }} - {{ super() }} {% endblock %} +{% block subtitle %}{{ _("Config") }}{% endblock %} + +{% block head %} + + +{% endblock %} + +{% block menu %} +
  • + {{ _("Home") }} +
  • +
  • + {{ _("Queue") }} +
  • +
  • + {{ _("Collector") }} +
  • +
  • + {{ _("Downloads") }} +
  • +
  • + {{ _("Logs") }} +
  • +
  • + {{ _("Config") }} +
  • +{% endblock %} + +{% block content %} + + + +
    +
      + {% for configname, config in conf.iteritems() %} + + {% if configname != "Accounts" %} + {% for skey, section in config.iteritems() %} +
    • {{ section.desc }}
    • + {% endfor %} + {% else %} + {% for skey, section in config.iteritems() %} +
    • {{ skey }}
    • + {% endfor %} + {% endif %} +
      + {% endfor %} +
    +
    +
    + {% for configname, config in conf.iteritems() %} + {% if configname != "Accounts" %} + {% for skey, section in config.iteritems() %} +
    + + {% for okey, option in section.iteritems() %} + {% if okey != "desc" %} + + + + + {% endif %} + {% endfor %} +
    + {% if option.type == "bool" %} + + {% elif ";" in option.type %} + + {% elif option.type == "folder" %} + + + {% elif option.type == "file" %} + + + {% else %} + + {% endif %} +
    +
    + {% endfor %} + {% else %} + + {% for plugin, accounts in config.iteritems() %} +
    + + {% for account in accounts %} + + + + + + + + + + + {% endfor %} + + + + + + + + + + + + + + + +
    + + + {{ _("Status:") }} + {% if account.valid %} + + {{ _("valid") }} + {% else %} + + {{ _("not valid") }} + {% endif %} + + + {{ _("Valid until:") }} + + {{ account.validuntil }} + + + {{ _("Traffic left:") }} + + {{ account.trafficleft }} + + + {{ _("Time:") }} + + + {{ _("Delete? ") }} + +
     
    + +
    + +
    +
    + {% endfor %} + {% endif %} + {% endfor %} + {% if conf %} + +
    + +
    + {% for message in errors %} + {{ message }}
    + {% endfor %} + + {% endif %} + +{% endblock %} diff --git a/module/web/templates/jinja/default/test.html b/module/web/templates/jinja/default/test.html new file mode 100644 index 000000000..b4f17f134 --- /dev/null +++ b/module/web/templates/jinja/default/test.html @@ -0,0 +1,12 @@ + + + + Test + + +

    Template Test

    +{{ user }} +{{ status }} + + \ No newline at end of file diff --git a/module/web/templates/jinja/default/window.html b/module/web/templates/jinja/default/window.html new file mode 100644 index 000000000..734745887 --- /dev/null +++ b/module/web/templates/jinja/default/window.html @@ -0,0 +1,45 @@ + + + + + +
    +
    +

    {{_("Add Package")}}

    +

    {{_("Paste your links or upload a container.")}}

    + + + + + + + + + + + + + + + {{_("Queue")}} + + {{_("Collector")}} + + + + + +
    + +
    + +
    \ No newline at end of file -- cgit v1.2.3