From: konekoneko Date: Thu, 15 Nov 2012 08:53:14 +0000 (+0900) Subject: プロフィール用の管理モードを追加した X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=563c4cb9a34b81e6454dc49a8f5ffc19009b1acd;p=webchat%2FWebChat.git プロフィール用の管理モードを追加した --- diff --git a/profile.js b/profile.js index 61f4550..d838ade 100644 --- a/profile.js +++ b/profile.js @@ -19,6 +19,8 @@ var collection = new ProfileCollection(); module.exports = function(app){ app.get("/profile",list_proc); + app.get("/profile/admin",admin_proc); + app.post("/profile/admin",admin_postproc); app.get("/profile/detail",detail_proc); app.post("/profile/detail",detail_postproc); app.post("/profile/edit",edit_postproc); @@ -26,8 +28,63 @@ module.exports = function(app){ app.post("/profile/registor",registor_postproc); }; +function admin_proc(req, res) +{ + var info = new security.SessionInfomation(true); + req.session.items = info; + async.waterfall([ + function(callback){ + PrepaerListAsync(req,callback); + } + ],function(err,result){ + if(err != null) + RenderMessage(res,err,info); + else{ + result.token = info.token; + res.render("profile\\admin",result); + } + }); +} + +function admin_postproc(req,res) +{ + if(req.session.items.token != req.body.token){ + RenderMessage(res,$invaild_parameter,req.session.items); + return; + } + async.waterfall([ + function(cb){ + if(typeof(req.body.removeall) != "undefined") + collection.ClearAsync(cb); + if(typeof(req.body.remove) != "undefined") + collection.RemoveRangeAsync(req.body.names,cb); + } + ],function(err,result){ + if(err != null) + RenderMessage(res,err,req.session.items); + else + RenderMessage(res,$success_remove,req.session.items); + }); +} + function list_proc(req, res) { + if(typeof(req.session.items) != "undefined") + req.session.items.admin = false; + async.waterfall([ + function(cb){ + PrepaerListAsync(req,cb); + } + ],function(err,result){ + if(err != null) + RenderMessage(res,err,req.session.items); + else + res.render("profile\\list",result); + }); +} + +function PrepaerListAsync(req,callback) +{ var limit = $db_limit; var start = 0; var parttern = ""; @@ -48,14 +105,15 @@ function list_proc(req, res) } ],function(err,result){ if(err != null){ - res.render("profile\\message",{message:err}); + cb(err,null); }else{ var next = start + limit; var prev = start - limit; if(prev < 0) prev = 0; - result[0].lastmodified = result[0].lastmodified.toFormat("YYYY/MM/DD HH:MI:SS"); - res.render("profile\\list",{list:result,search:parttern,next:next,prev:prev,limit:limit}); + for(var i = 0; i < result.length; i++) + result[i].lastmodified = result[i].lastmodified.toFormat("YYYY/MM/DD HH:MI:SS"); + callback(null,{list:result,search:parttern,next:next,prev:prev,limit:limit}); } }); } @@ -64,12 +122,12 @@ function detail_proc(req, res) { if(typeof(req.query.name) == "undefined") { - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage(res,$invaild_parameter,req.session.items); return; } - var info = new security.SessionInfomation(false); - req.session.items = info; + if(typeof(req.session.items) == "undefined") + req.session.items = new security.SessionInfomation(false); async.waterfall([ function(cb){ @@ -77,11 +135,11 @@ function detail_proc(req, res) }, ],function(err,result){ if(err != null) - res.render("profile\\message",{message:err}); + RenderMessage(res,err,req.session.items); else if(result.length == 0) - res.render("profile\\message",{message:$notfound_name}); + RenderMessage(res,$notfound_name,req.session.items); else{ - res.render("profile\\detail",{list:result,token:info.token}); + res.render("profile\\detail",{list:result,token:req.session.items.token}); } }); } @@ -89,7 +147,7 @@ function detail_proc(req, res) function detail_postproc(req, res) { if(req.session.items.token != req.body.token){ - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage(res,$invaild_parameter,req.session.items); return; } if(typeof(req.body.remove) != "undefined"){ @@ -105,11 +163,11 @@ function detail_postproc(req, res) } ],function(err,result){ if(err != null) - res.render("profile\\message",{message:err}); + RenderMessage(res,err,req.session.items); else if(result == null) - res.render("profile\\message",{message:$unmatch_password}); + RenderMessage(res,$unmatch_password,req.session.items); else - res.render("profile\\message",{message:$success_remove}); + RenderMessage(res,$success_remove,req.session.items); }); }else if(typeof(req.body.edit) != "undefined"){ async.waterfall([ @@ -124,27 +182,27 @@ function detail_postproc(req, res) } ],function(err,result){ if(err != null){ - res.render("profile\\message",{message:err}); + RenderMessage(res,err,req.session.items); }else if(result != null){ res.render("profile\\edit",{list:result,token:req.body.token}); }else{ - res.render("profile\\message",{message:$unmatch_password}); + RenderMessage(res,$unmatch_password,req.session.items); } }); }else{ - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage(res,$invaild_parameter,req.session.items); } } function edit_postproc(req, res) { if(req.session.items.token != req.body.token){ - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage(res,$invaild_parameter,req.session.items); return; } if(typeof(req.body.name) == "undefined") { - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage(res,$invaild_parameter,req.session.items); return; }else if(typeof(req.body.edit) != "undefined"){ async.waterfall([ @@ -153,19 +211,19 @@ function edit_postproc(req, res) } ],function(err,result){ if(err != null) - res.render("profile\\message",{message:err}); + RenderMessage(res,err,req.session.items); else - res.render("profile\\message",{message:$success_edit}); + RenderMessage(res,$success_edit,req.session.items); }); }else{ - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage(res,$invaild_parameter,req.session.items); } } function registor_postproc(req, res) { if(req.session.items.token != req.body.token){ - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage(res,$invaild_parameter,req.session.items); return; } if(typeof(req.body.registor) != "undefined"){ @@ -175,20 +233,29 @@ function registor_postproc(req, res) } ],function(err,result){ if(err != null) - res.render("profile\\message",{message:err}); + RenderMessage(res,err,req.session.items); else - res.render("profile\\message",{message:$success_registor}); + RenderMessage(res,$success_registor,req.session.items); }); }else{ - res.render("profile\\message",{message:$invaild_parameter}); + RenderMessage($invaild_parameter,req.session.items); } } + function registor_proc(req, res) { - var info = new security.SessionInfomation(false); - req.session.items = info; + if(typeof(req.session.items) == "undefined") + req.session.items = new security.SessionInfomation(false); - res.render("profile\\registor",{token:info.token}); + res.render("profile\\registor",{token:req.session.items.token}); +} + +function RenderMessage(res,msg,info) +{ + if(typeof(info) == "undefined") + res.render("profile\\message",{message:msg}); + else + res.render("profile\\message",{message:msg,admin:info.admin}); } // @@ -286,13 +353,45 @@ function ProfileCollection() } ],cb); } + this.ClearAsync = function(cb){ + async.waterfall([ + function(callback){ + pool.acquire(callback); + }, + function(client,callback){ + client.query("TRUNCATE TABLE list",function(err,result){ + callback(err,result,client); + }); + }, + function(result,client,callback){ + pool.release(client); + callback(null,result); + } + ],cb); + } + this.RemoveRangeAsync = function(names,cb){ + async.waterfall([ + function(callback){ + pool.acquire(callback); + }, + function(client,callback){ + var query = client.query("DELETE FROM list WHERE name IN (?)",[names],function(err,result){ + callback(err,result,client); + }); + }, + function(result,client,callback){ + pool.release(client); + callback(null,result); + } + ],cb); + } this.RemoveAsync = function(name,cb){ async.waterfall([ function(callback){ pool.acquire(callback); }, function(client,callback){ - client.query("DELETE FROM list WHERE name = ?",[name],function(err,result){ + var query = client.query("DELETE FROM list WHERE name = ?",[name],function(err,result){ callback(err,result,client); }); }, diff --git a/public/profile/admin.ejs b/public/profile/admin.ejs new file mode 100644 index 0000000..4a8710d --- /dev/null +++ b/public/profile/admin.ejs @@ -0,0 +1,43 @@ + + + + + +管理モード + + +

管理モード

+
+
+ + + +
+
+ + + + + + + + <% for(var i=0; i + + + + + + + <% } %> +
名前年齢更新日時
<%= list[i].name %><%= list[i].age %><%- list[i].lastmodified %>
+ + + +
+<前 +次> +
+ + diff --git a/public/profile/message.ejs b/public/profile/message.ejs index b2ec31c..79cb6fb 100644 --- a/public/profile/message.ejs +++ b/public/profile/message.ejs @@ -9,7 +9,13 @@

メッセージ

<%= message %>

-

TOP

+

+ <% if(admin){ %> + TOP + <% }else{ %> + TOP + <% } %> +