* Added stop button to export/import features, cancelling a previously started job
* Added some messages to the export/import features * Added routine to remove the corresponding file after successful import
This commit is contained in:
parent
081d601cea
commit
01b15b36f0
3 changed files with 52 additions and 35 deletions
|
@ -30,9 +30,9 @@ var Importer = {}
|
|||
|
||||
Importer.run = function(site, user) {
|
||||
try {
|
||||
var file = File.getById(site.import_id);
|
||||
if (file) {
|
||||
file = new java.io.File(file.getFile());
|
||||
var xml = File.getById(site.import_id);
|
||||
if (xml) {
|
||||
var file = new java.io.File(xml.getFile());
|
||||
var reader = new rome.XmlReader(file);
|
||||
var input = new rome.SyndFeedInput(true);
|
||||
var feed = input.build(reader);
|
||||
|
@ -55,6 +55,7 @@ Importer.run = function(site, user) {
|
|||
});
|
||||
site.stories.add(story);
|
||||
}
|
||||
File.remove.call(xml);
|
||||
}
|
||||
} catch (ex) {
|
||||
app.log(ex);
|
||||
|
|
|
@ -120,11 +120,13 @@ referrers.push(new Antville.Referrer("<% param.referrer %>",
|
|||
<% #export %>
|
||||
<p class="storyTitle"><% gettext "Export Site Data" %></p>
|
||||
<div class="ample">
|
||||
<p><% if <% file.self %> is null then '' else <% gettext "Download file {0}."
|
||||
<p><% if <% param.status %> is null then <% if <% file.self %> is null then '' else <% gettext "Download file {0}."
|
||||
<% file.skin File#main %> '<small>'
|
||||
<% file.created | format short %> '</small>' %> %></p>
|
||||
<% file.created | format short %> '</small>' %> %> else <% param.status %> %></p>
|
||||
<form action="" method="post">
|
||||
<button type="submit" name="submit" value="export"><% gettext Export %></button>
|
||||
<button type="submit" name="submit" value="<% if <% param.status %> is null then start else stop %>">
|
||||
<% if <% param.status %> is null then <% gettext Start %> else <% gettext Stop %> %>
|
||||
</button>
|
||||
<a href="" class="cancel"><% gettext Cancel %></a>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -132,12 +134,14 @@ referrers.push(new Antville.Referrer("<% param.referrer %>",
|
|||
<% #import %>
|
||||
<p class="storyTitle"><% gettext 'Import Site Data' %></p>
|
||||
<div class="ample">
|
||||
<p><% if <% file.self %> is null then '' else <% gettext "Queued file {0} for import."
|
||||
<p><% if <% file.self %> is null then '' else <% gettext "The site is scheduled for importing the file {0}. The imported site data will be available within 24 hours."
|
||||
<% file.skin File#main %> '</a>' '<small>'
|
||||
<% file.created | format short %> '</small>' %> %></p>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<p><input type="file" name="file" /></p><br />
|
||||
<button type="submit" name="submit" value="import"><% gettext Import %></button>
|
||||
<% if <% file.self %> is null then '<p><input type="file" name="file" /></p><br />' %>
|
||||
<button type="submit" name="submit" value="<% if <% file.self %> is null then start else stop %>">
|
||||
<% if <% file.self %> is null then <% gettext Start %> else <% gettext Stop %> %>
|
||||
</button>
|
||||
<a href="" class="cancel"><% gettext Cancel %></a>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -643,17 +643,18 @@ Site.prototype.unsubscribe_action = function() {
|
|||
}
|
||||
|
||||
Site.prototype.export_action = function() {
|
||||
if (req.postParams.submit === "export") {
|
||||
var job = this.job && new Admin.Job(this.job);
|
||||
|
||||
var data = req.postParams;
|
||||
if (data.submit === "start") {
|
||||
try {
|
||||
if (!this.job) {
|
||||
if (!job) {
|
||||
this.job = Admin.queue(this, "export");
|
||||
res.message = gettext("Site is queued for export.");
|
||||
res.message = gettext("Site is scheduled for export.");
|
||||
} else {
|
||||
var job = new Admin.Job(this.job);
|
||||
if (job.method === "export") {
|
||||
throw Error(gettext("Site is already being exported."));
|
||||
} else if (job.method) {
|
||||
throw Error(gettext("There is already another job queued for this site: {0}", job.method));
|
||||
if (job.method !== "export") {
|
||||
throw Error(gettext("There is already another job queued for this site: {0}",
|
||||
job.method));
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
|
@ -661,33 +662,31 @@ Site.prototype.export_action = function() {
|
|||
app.log(res.message);
|
||||
}
|
||||
res.redirect(this.href(req.action));
|
||||
} else if (data.submit === "stop") {
|
||||
job && job.remove();
|
||||
this.job = null;
|
||||
res.redirect(this.href(req.action));
|
||||
}
|
||||
|
||||
var param = {
|
||||
status: (job && job.method === "export") ?
|
||||
gettext("The site is scheduled for export. Exported site data will be available for download from here within 24 hours.") :
|
||||
null
|
||||
}
|
||||
res.handlers.file = File.getById(this.export_id) || {};
|
||||
res.data.body = this.renderSkinAsString("$Site#export");
|
||||
res.data.body = this.renderSkinAsString("$Site#export", param);
|
||||
this.renderSkin("Site#page");
|
||||
return;
|
||||
}
|
||||
|
||||
Site.prototype.import_action = function() {
|
||||
var job = this.job && new Admin.Job(this.job);
|
||||
var file = this.import_id && File.getById(this.import_id);
|
||||
|
||||
var data = req.postParams;
|
||||
if (data.submit === "import") {
|
||||
if (data.submit === "start") {
|
||||
try {
|
||||
if (!data.file) {
|
||||
throw Error(gettext("Please choose a ZIP file to import."));
|
||||
}
|
||||
var file;
|
||||
if (this.import_id && (file = File.getById(this.import_id))) {
|
||||
File.remove.call(file);
|
||||
}
|
||||
data.file_origin = data.file.name;
|
||||
file = new File;
|
||||
file.site = this;
|
||||
file.update(data);
|
||||
this.files.add(file);
|
||||
file.creator = session.user;
|
||||
if (this.job) {
|
||||
var job = new Admin.Job(this.job);
|
||||
if (job) {
|
||||
if (job.method === "import") {
|
||||
job.remove();
|
||||
this.job = null;
|
||||
|
@ -696,14 +695,27 @@ Site.prototype.import_action = function() {
|
|||
job.method));
|
||||
}
|
||||
}
|
||||
file && File.remove.call(file);
|
||||
data.file_origin = data.file.name;
|
||||
file = new File;
|
||||
file.site = this;
|
||||
file.update(data);
|
||||
this.files.add(file);
|
||||
file.creator = session.user;
|
||||
this.job = Admin.queue(this, "import");
|
||||
this.import_id = file._id;
|
||||
res.message = gettext("Site is queued for import.");
|
||||
res.message = gettext("Site is scheduled for import.");
|
||||
res.redirect(this.href(req.action));
|
||||
} catch (ex) {
|
||||
res.message = ex.toString();
|
||||
app.log(res.message);
|
||||
}
|
||||
} else if (data.submit === "stop") {
|
||||
file && File.remove.call(file);
|
||||
job && job.remove();
|
||||
this.job = null;
|
||||
this.import_id = null;
|
||||
res.redirect(this.href(req.action));
|
||||
}
|
||||
|
||||
res.handlers.file = File.getById(this.import_id) || {};
|
||||
|
|
Loading…
Add table
Reference in a new issue