mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-03 03:15:31 -04:00
Set and load display names in frontend
This commit is contained in:
parent
51d19328be
commit
75edfcdb5b
@ -56,3 +56,6 @@
|
|||||||
td > .uk-dropdown {
|
td > .uk-dropdown {
|
||||||
white-space: pre-line;
|
white-space: pre-line;
|
||||||
}
|
}
|
||||||
|
.title-rename > .uk-inline {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
@ -15,7 +15,10 @@ function showModal(encodedPath, pages, percentage, encodedeTitle, encodedEntryTi
|
|||||||
if (percentage === 100) {
|
if (percentage === 100) {
|
||||||
$('#read-btn').attr('hidden', '');
|
$('#read-btn').attr('hidden', '');
|
||||||
}
|
}
|
||||||
$('#modal-title').text(entry);
|
$('#modal-title').find('span').text(entry);
|
||||||
|
$('#modal-title').next().attr('data-id', titleID);
|
||||||
|
$('#modal-title').next().attr('data-entry-id', entryID);
|
||||||
|
$('#modal-title').next().find('.title-rename-field').val(entry);
|
||||||
$('#path-text').text(zipPath);
|
$('#path-text').text(zipPath);
|
||||||
$('#pages-text').text(pages + ' pages');
|
$('#pages-text').text(pages + ' pages');
|
||||||
|
|
||||||
@ -43,3 +46,60 @@ function updateProgress(titleID, entryID, page) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const rename = ele => {
|
||||||
|
const h2 = $(ele).parent();
|
||||||
|
|
||||||
|
$(h2).attr('hidden', true);
|
||||||
|
$(h2).next().removeAttr('hidden');
|
||||||
|
};
|
||||||
|
|
||||||
|
const renameSubmit = ele => {
|
||||||
|
const group = $(ele).closest('.title-rename');
|
||||||
|
const id = $(group).attr('data-id');
|
||||||
|
const eid = $(group).attr('data-entry-id');
|
||||||
|
const name = $(ele).next().val();
|
||||||
|
|
||||||
|
console.log(name);
|
||||||
|
|
||||||
|
$(group).attr('hidden', true);
|
||||||
|
$(group).prev().removeAttr('hidden');
|
||||||
|
|
||||||
|
if (name.length === 0) {
|
||||||
|
alert('danger', 'The display name should not be empty');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(group).prev().find('span').text(name);
|
||||||
|
|
||||||
|
const query = $.param({ entry: eid });
|
||||||
|
let url = `/api/admin/display_name/${id}/${name}`;
|
||||||
|
if (eid)
|
||||||
|
url += `?${query}`;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: url,
|
||||||
|
contentType: "application/json",
|
||||||
|
dataType: 'json'
|
||||||
|
})
|
||||||
|
.done(data => {
|
||||||
|
console.log(data);
|
||||||
|
if (data.error) {
|
||||||
|
alert('danger', `Failed to update display name. Error: ${data.error}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
location.reload();
|
||||||
|
})
|
||||||
|
.fail((jqXHR, status) => {
|
||||||
|
alert('danger', `Failed to update display name. Error: [${jqXHR.status}] ${jqXHR.statusText}`);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$(() => {
|
||||||
|
$('.uk-input.title-rename-field').keyup(event => {
|
||||||
|
if (event.keyCode === 13) {
|
||||||
|
renameSubmit($(event.currentTarget).prev());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
@ -51,6 +51,14 @@ class Entry
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def display_name
|
||||||
|
@book.display_name @title
|
||||||
|
end
|
||||||
|
|
||||||
|
def encoded_display_name
|
||||||
|
URI.encode display_name
|
||||||
|
end
|
||||||
|
|
||||||
def read_page(page_num)
|
def read_page(page_num)
|
||||||
Zip::File.open @zip_path do |file|
|
Zip::File.open @zip_path do |file|
|
||||||
page = file.entries
|
page = file.entries
|
||||||
@ -191,6 +199,10 @@ class Title
|
|||||||
dn.empty? ? @title : dn
|
dn.empty? ? @title : dn
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def encoded_display_name
|
||||||
|
URI.encode display_name
|
||||||
|
end
|
||||||
|
|
||||||
def display_name(entry_name)
|
def display_name(entry_name)
|
||||||
info = TitleInfo.new @dir
|
info = TitleInfo.new @dir
|
||||||
dn = info.entry_display_name[entry_name]?
|
dn = info.entry_display_name[entry_name]?
|
||||||
|
@ -94,13 +94,13 @@ class APIRouter < Router
|
|||||||
begin
|
begin
|
||||||
title = (@context.library.get_title env.params.url["title"])
|
title = (@context.library.get_title env.params.url["title"])
|
||||||
.not_nil!
|
.not_nil!
|
||||||
entry = title.get_entry env.params.query["entry"]?
|
|
||||||
name = env.params.url["name"]
|
name = env.params.url["name"]
|
||||||
|
entry = env.params.query["entry"]?
|
||||||
if entry.nil?
|
if entry.nil?
|
||||||
title.set_display_name name
|
title.set_display_name name
|
||||||
else
|
else
|
||||||
title.set_display_name entry.title, name
|
eobj = title.get_entry entry
|
||||||
|
title.set_display_name eobj.not_nil!.title, name
|
||||||
end
|
end
|
||||||
rescue e
|
rescue e
|
||||||
@context.error e
|
@context.error e
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
<%- if t.entries.size > 0 -%>
|
<%- if t.entries.size > 0 -%>
|
||||||
<div class="uk-card-badge uk-label"><%= (percentage[i] * 100).round(1) %>%</div>
|
<div class="uk-card-badge uk-label"><%= (percentage[i] * 100).round(1) %>%</div>
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
<h3 class="uk-card-title break-word" data-title="<%= t.title.gsub("\"", """) %>"><%= t.title %></h3>
|
<h3 class="uk-card-title break-word" data-title="<%= t.display_name.gsub("\"", """) %>"><%= t.display_name %></h3>
|
||||||
<p><%= t.size %> entries</p>
|
<p><%= t.size %> entries</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,10 +1,18 @@
|
|||||||
<h2 class=uk-title><%= title.title %></h2>
|
<div>
|
||||||
|
<h2 class=uk-title><span><%= title.display_name %></span> <a onclick="rename(this)" class="uk-icon-button" uk-icon="icon:pencil"></a></h2>
|
||||||
|
<div class="uk-margin title-rename" data-id="<%= title.id %>" hidden>
|
||||||
|
<div class="uk-inline">
|
||||||
|
<a class="uk-form-icon uk-form-icon-flip" onclick="renameSubmit(this)" uk-icon="icon:check"></a>
|
||||||
|
<input class="uk-input title-rename-field" type="text" value="<%= title.display_name.gsub("\"", """) %>">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<ul class="uk-breadcrumb">
|
<ul class="uk-breadcrumb">
|
||||||
<li><a href="/">Library</a></li>
|
<li><a href="/">Library</a></li>
|
||||||
<%- title.parents.each do |t| -%>
|
<%- title.parents.each do |t| -%>
|
||||||
<li><a href="/book/<%= t.id %>"><%= t.title %></a></li>
|
<li><a href="/book/<%= t.id %>"><%= t.display_name %></a></li>
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
<li class="uk-disabled"><a><%= title.title %></a></li>
|
<li class="uk-disabled"><a><%= title.display_name %></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p class="uk-text-meta"><%= title.size %> entries found</p>
|
<p class="uk-text-meta"><%= title.size %> entries found</p>
|
||||||
<div class="uk-grid-small" uk-grid>
|
<div class="uk-grid-small" uk-grid>
|
||||||
@ -42,7 +50,7 @@
|
|||||||
<%- end -%>
|
<%- end -%>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-card-body">
|
<div class="uk-card-body">
|
||||||
<h3 class="uk-card-title break-word" data-title="<%= t.title.gsub("\"", """) %>"><%= t.title %></h3>
|
<h3 class="uk-card-title break-word" data-title="<%= t.display_name.gsub("\"", """) %>"><%= t.display_name %></h3>
|
||||||
<p><%= t.size %> entries</p>
|
<p><%= t.size %> entries</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -52,13 +60,13 @@
|
|||||||
<%- title.entries.each_with_index do |e, i| -%>
|
<%- title.entries.each_with_index do |e, i| -%>
|
||||||
<div class="item" data-mtime="<%= e.mtime.to_unix %>" data-progress="<%= percentage[i] %>">
|
<div class="item" data-mtime="<%= e.mtime.to_unix %>" data-progress="<%= percentage[i] %>">
|
||||||
<a class="acard">
|
<a class="acard">
|
||||||
<div class="uk-card uk-card-default" onclick="showModal("<%= e.encoded_path %>", '<%= e.pages %>', <%= (percentage[i] * 100).round(1) %>, "<%= title.encoded_title %>", "<%= e.encoded_title %>", '<%= e.title_id %>', '<%= e.id %>')">
|
<div class="uk-card uk-card-default" onclick="showModal("<%= e.encoded_path %>", '<%= e.pages %>', <%= (percentage[i] * 100).round(1) %>, "<%= title.encoded_display_name %>", "<%= e.encoded_display_name %>", '<%= e.title_id %>', '<%= e.id %>')">
|
||||||
<div class="uk-card-media-top">
|
<div class="uk-card-media-top">
|
||||||
<img data-src="<%= e.cover_url %>" alt="" data-width data-height uk-img>
|
<img data-src="<%= e.cover_url %>" alt="" data-width data-height uk-img>
|
||||||
</div>
|
</div>
|
||||||
<div class="uk-card-body">
|
<div class="uk-card-body">
|
||||||
<div class="uk-card-badge uk-label"><%= (percentage[i] * 100).round(1) %>%</div>
|
<div class="uk-card-badge uk-label"><%= (percentage[i] * 100).round(1) %>%</div>
|
||||||
<h3 class="uk-card-title break-word" data-title="<%= e.title.gsub("\"", """) %>"><%= e.title %></h3>
|
<h3 class="uk-card-title break-word" data-title="<%= e.display_name.gsub("\"", """) %>"><%= e.display_name %></h3>
|
||||||
<p><%= e.pages %> pages</p>
|
<p><%= e.pages %> pages</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -71,7 +79,15 @@
|
|||||||
<div class="uk-modal-dialog uk-margin-auto-vertical">
|
<div class="uk-modal-dialog uk-margin-auto-vertical">
|
||||||
<button class="uk-modal-close-default" type="button" uk-close></button>
|
<button class="uk-modal-close-default" type="button" uk-close></button>
|
||||||
<div class="uk-modal-header">
|
<div class="uk-modal-header">
|
||||||
<h3 class="uk-modal-title break-word" id="modal-title"></h3>
|
<div>
|
||||||
|
<h3 class="uk-modal-title break-word" id="modal-title"><span></span> <a onclick="rename(this)" class="uk-icon-button" uk-icon="icon:pencil"></a></h3>
|
||||||
|
<div class="uk-margin title-rename" data-id="" data-entry-id="" hidden>
|
||||||
|
<div class="uk-inline">
|
||||||
|
<a class="uk-form-icon uk-form-icon-flip" onclick="renameSubmit(this)" uk-icon="icon:check"></a>
|
||||||
|
<input class="uk-input title-rename-field" type="text" value="">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<p class="uk-text-meta uk-margin-remove-bottom break-word" id="path-text"></p>
|
<p class="uk-text-meta uk-margin-remove-bottom break-word" id="path-text"></p>
|
||||||
<p class="uk-text-meta uk-margin-remove-top" id="pages-text"></p>
|
<p class="uk-text-meta uk-margin-remove-top" id="pages-text"></p>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user