Instantiate Plugin objects with IDs

This commit is contained in:
Alex Ling 2020-07-26 14:26:44 +00:00
parent 361d37d742
commit 0e9a659828
5 changed files with 25 additions and 32 deletions

View File

@ -1,16 +1,16 @@
const loadPlugin = title => {
localStorage.setItem('plugin', title);
const loadPlugin = id => {
localStorage.setItem('plugin', id);
const url = `${location.protocol}//${location.host}${location.pathname}`;
const newURL = `${url}?${$.param({
plugin: encodeURIComponent(title)
plugin: id
})}`;
window.location.href = newURL;
};
$(() => {
var storedTitle = localStorage.getItem('plugin');
if (storedTitle && storedTitle !== plugin) {
loadPlugin(storedTitle);
var storedID = localStorage.getItem('plugin');
if (storedID && storedID !== pid) {
loadPlugin(storedID);
} else {
$('#controls').removeAttr('hidden');
}
@ -20,10 +20,10 @@ $(() => {
search();
}
});
$('#plugin-select').val(plugin);
$('#plugin-select').val(pid);
$('#plugin-select').change(() => {
const title = $('#plugin-select').val();
loadPlugin(title);
const id = $('#plugin-select').val();
loadPlugin(id);
});
});
@ -39,7 +39,7 @@ const search = () => {
url: base_url + 'api/admin/plugin/search',
data: JSON.stringify({
query: query,
plugin: plugin
plugin: pid
}),
contentType: "application/json",
dataType: 'json'
@ -112,7 +112,7 @@ const download = () => {
type: 'POST',
url: base_url + 'api/admin/plugin/download',
data: JSON.stringify({
plugin: plugin,
plugin: pid,
chapters: chapters,
title: mangaTitle
}),

View File

@ -35,7 +35,7 @@ class Plugin
raise "Job does not have a plugin ID specificed"
end
plugin = Plugin.new_from_id job.plugin_id.not_nil!
plugin = Plugin.new job.plugin_id.not_nil!
info = plugin.select_chapter job.plugin_chapter_id.not_nil!
pages = info["pages"].as_i

View File

@ -106,28 +106,21 @@ class Plugin
def self.list
self.build_info_ary
@@info_ary.map &.title
@@info_ary.map do |m|
{id: m.id, title: m.title}
end
end
def info
@info.not_nil!
end
def self.new_from_id(id : String)
self.build_info_ary
info = @@info_ary.find { |i| i.id == id }
raise Error.new "Plugin with id #{id} not found" unless info
self.new info.title
end
def initialize(title : String)
def initialize(id : String)
Plugin.build_info_ary
@info = @@info_ary.find { |i| i.title == title }
@info = @@info_ary.find { |i| i.id == id }
if @info.nil?
raise Error.new "Plugin with title #{title} not found"
raise Error.new "Plugin with ID #{id} not found"
end
@js_path = File.join info.dir, "index.js"

View File

@ -80,13 +80,13 @@ class MainRouter < Router
get "/download/plugins" do |env|
begin
title = env.params.query["plugin"]?
id = env.params.query["plugin"]?
plugins = Plugin.list
if title
plugin = Plugin.new URI.decode title
if id
plugin = Plugin.new id
else
plugin = Plugin.new plugins[0]
plugin = Plugin.new plugins[0][:id]
end
layout "plugin-download"

View File

@ -22,8 +22,8 @@
<label class="uk-form-label" for="plugin-select">Choose a plugin</label>
<div class="uk-form-controls">
<select id="plugin-select" class="uk-select">
<% plugins.each do |s| %>
<option><%= s %></option>
<% plugins.each do |p| %>
<option value="<%= p[:id] %>"><%= p[:title] %></option>
<% end %>
</select>
</div>
@ -64,7 +64,7 @@
<% content_for "script" do %>
<script>
var plugin = "<%= plugin.info.title %>";
var pid = "<%= plugin.info.id %>";
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.combined.min.js"></script>