Browse Source

store mail options in db

v1.0.0^2
alseambusher 8 years ago
parent
commit
3d56cb1db0
  1. 2
      README/mail.md
  2. 2
      app.js
  3. 11
      crontab.js
  4. 16
      public/js/script.js
  5. 2
      views/popup.ejs

2
README/mail.md

@ -0,0 +1,2 @@
Mailing and Hooks
=================

2
app.js

@ -57,7 +57,7 @@ If it is a new job @param _id is set to -1
app.post(routes.save, function(req, res) { app.post(routes.save, function(req, res) {
// new job // new job
if(req.body._id == -1){ if(req.body._id == -1){
crontab.create_new(req.body.name, req.body.command, req.body.schedule, req.body.logging); crontab.create_new(req.body.name, req.body.command, req.body.schedule, req.body.logging, req.body.mailing);
} }
// edit job // edit job
else{ else{

11
crontab.js

@ -15,7 +15,7 @@ var os = require("os");
exports.log_folder = __dirname + '/crontabs/logs'; exports.log_folder = __dirname + '/crontabs/logs';
exports.env_file = __dirname + '/crontabs/env.db'; exports.env_file = __dirname + '/crontabs/env.db';
crontab = function(name, command, schedule, stopped, logging){ crontab = function(name, command, schedule, stopped, logging, mailing){
var data = {}; var data = {};
data.name = name; data.name = name;
data.command = command; data.command = command;
@ -25,17 +25,20 @@ crontab = function(name, command, schedule, stopped, logging){
} }
data.timestamp = (new Date()).toString(); data.timestamp = (new Date()).toString();
data.logging = logging; data.logging = logging;
if (!mailing)
mailing = {};
data.mailing = mailing;
return data; return data;
}; };
exports.create_new = function(name, command, schedule, logging){ exports.create_new = function(name, command, schedule, logging, mailing){
var tab = crontab(name, command, schedule, false, logging); var tab = crontab(name, command, schedule, false, logging, mailing);
tab.created = new Date().valueOf(); tab.created = new Date().valueOf();
db.insert(tab); db.insert(tab);
}; };
exports.update = function(data){ exports.update = function(data){
db.update({_id: data._id}, crontab(data.name, data.command, data.schedule, null, data.logging)); db.update({_id: data._id}, crontab(data.name, data.command, data.schedule, null, data.logging, data.mailing));
}; };
exports.status = function(_id, stopped){ exports.status = function(_id, stopped){

16
public/js/script.js

@ -95,6 +95,9 @@ function editJob(_id){
$("#job-month").val(components[3]); $("#job-month").val(components[3]);
$("#job-week").val(components[4]); $("#job-week").val(components[4]);
} }
if (job.mailing) {
$("#job-mailing").attr("data-json", JSON.stringify(job.mailing));
}
schedule = job.schedule; schedule = job.schedule;
job_command = job.command; job_command = job.command;
if (job.logging && job.logging != "false") if (job.logging && job.logging != "false")
@ -108,7 +111,10 @@ function editJob(_id){
if (!schedule) { if (!schedule) {
schedule = "* * * * *"; schedule = "* * * * *";
} }
$.post(routes.save, {name: $("#job-name").val(), command: job_command , schedule: schedule, _id: _id, logging: $("#job-logging").prop("checked")}, function(){ let name = $("#job-name").val();
let mailing = JSON.parse($("#job-mailing").attr("data-json"));
let logging = $("#job-logging").prop("checked");
$.post(routes.save, {name: name, command: job_command , schedule: schedule, _id: _id, logging: logging, mailing: mailing}, function(){
location.reload(); location.reload();
}); });
}); });
@ -126,6 +132,7 @@ function newJob(){
$("#job").modal("show"); $("#job").modal("show");
$("#job-name").val(""); $("#job-name").val("");
$("#job-command").val(""); $("#job-command").val("");
$("#job-mailing").attr("data-json", "{}");
job_string(); job_string();
$("#job-save").unbind("click"); // remove existing events attached to this $("#job-save").unbind("click"); // remove existing events attached to this
$("#job-save").click(function(){ $("#job-save").click(function(){
@ -133,7 +140,10 @@ function newJob(){
if (!schedule) { if (!schedule) {
schedule = "* * * * *"; schedule = "* * * * *";
} }
$.post(routes.save, {name: $("#job-name").val(), command: job_command , schedule: schedule, _id: -1, logging: $("#job-logging").prop("checked")}, function(){ let name = $("#job-name").val();
let mailing = JSON.parse($("#job-mailing").attr("data-json"));
let logging = $("#job-logging").prop("checked");
$.post(routes.save, {name: name, command: job_command , schedule: schedule, _id: -1, logging: logging, mailing: mailing}, function(){
location.reload(); location.reload();
}); });
}); });
@ -173,7 +183,7 @@ function setMailConfig(a){
let data = JSON.parse(a.getAttribute("data-json")); let data = JSON.parse(a.getAttribute("data-json"));
let container = document.createElement("div"); let container = document.createElement("div");
let message = "<p>This is based on nodemailer. Refer <a href='https://github.com/nodemailer/nodemailer'>this</a> for more details.</p>"; let message = "<p>This is based on nodemailer. Refer <a href='https://github.com/alseambusher/crontab-ui/tree/master/README/mail.md'>this</a> for more details.</p>";
container.innerHTML += message; container.innerHTML += message;
let transporterLabel = document.createElement("label"); let transporterLabel = document.createElement("label");

2
views/popup.ejs

@ -40,7 +40,7 @@
<label>Job</label> <label>Job</label>
<input type='text' class='form-control' id='job-string' disabled='disabled'/><br /> <input type='text' class='form-control' id='job-string' disabled='disabled'/><br />
<label><input type="checkbox" id="job-logging" style="position:relative;top:2px"/> Enable error logging.</label><br /> <label><input type="checkbox" id="job-logging" style="position:relative;top:2px"/> Enable error logging.</label><br />
<a class="btn btn-primary btn-small" data-json="{}" onclick="setMailConfig(this);">Mailing</a> <a class="btn btn-primary btn-small" data-json="{}" onclick="setMailConfig(this);" id="job-mailing">Mailing</a>
<a class="btn btn-primary btn-small" data-json="{}" onclick="setHookConfig(this);">Hooks</a> <a class="btn btn-primary btn-small" data-json="{}" onclick="setHookConfig(this);">Hooks</a>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">

Loading…
Cancel
Save