뭐지? 글 다 적어놓고 임시저장만 해둠 ㄷ 순서꼬엿지만 올리기
request.on('end', function(){
var post = qs.parse(body); //입력값을 post에 저장. 즉 post data임.
var title = post.title;
var description = post.description;
fs.writeFile(`data/${title}`, description, 'utf8', function(err){
response.writeHead(302, {Location: `/?id=${title}`}); //302: 일시적으로 보낸다. location에 적힌 주소로 리다이렉션
response.end();
})
});
function templateHTML(title, list, body, control){ //매개변수 control 추가
return `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
${list}
${control}
${body}
</body>
</html>
`;
}
else { //루트가 아닐 때!
fs.readdir('./data', function(error, filelist) {
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
var title = queryData.id;
var list = templateList(filelist);
var template = templateHTML(title, list, `<h2>${title}</h2>${description}`,
`<a href="/create">create</a> <a href="/update?id=${title}">update</a>`);
//create 옆에 update 링크 생성. 클릭하면 title 값이 쿼리스트링으로 된 링크로 이동
response.writeHead(200);
response.end(template);
});
});
}
else if (pathname === '/update') {
fs.readdir('./data', function(error, filelist) {
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){ //불러온 내용을 description에 저장하는 것 같음
var title = queryData.id;
var list = templateList(filelist);
var template = templateHTML(title, list,
`<form action="/update_process" method="post">
<input type="hidden" name="id" value="${title}"> //기존 title 값을 id에 저장
<p><input type="text" name="title" placeholder="title" value="${title}""></p>
<p>
<textarea name="description" placeholder="description">${description}</textarea>
</p>
<p>
<input type="submit">
</p>
</form>
`,
`<a href="/create">create</a> <a href="/update?id=${title}">update</a>`);
response.writeHead(200);
response.end(template);
});
});
}
else if (pathname === '/update_process') {
var body ='';
request.on('data', function(data){
body = body + data;
}); //조각조각 데이터가 들어올 때마다 이어서 붙인다.
request.on('end', function(){
var post = qs.parse(body); //입력값을 post에 저장. 즉 post data임.
var id = post.id;
var title = post.title;
var description = post.description;
fs.rename(`data/${id}`, `data/${title}`, function(error) { //id 명으로 되어있는 파일을 title이름으로
fs.writeFile(`data/${title}`, description, 'utf8', function(err){ //내용 수정
response.writeHead(302, {Location: `/?id=${title}`});
response.end();
})
})
});
}
else {
fs.readdir('./data', function(error, filelist) {
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
var title = queryData.id;
var list = templateList(filelist);
var template = templateHTML(title, list, `<h2>${title}</h2>${description}`,
`<a href="/create">create</a>
<a href="/update?id=${title}">update</a>
<form action="delete_process" method="post"> //이부분!!!
<input type="hidden" name="id" value="${title}">
<input type="submit" value="delete">
</form>
`);
response.writeHead(200);
response.end(template);
});
});
}
else if (pathname === '/delete_process') {
var body ='';
request.on('data', function(data){
body = body + data;
}); //조각조각 데이터가 들어올 때마다 이어서 붙인다.
request.on('end', function(){
var post = qs.parse(body); //입력값을 post에 저장. 즉 post data임.
var id = post.id;
fs.unlink(`data/${id}`, function(error) { //경로에 있는 파일을 삭제
response.writeHead(302, {Location: `/`}); //302: 리다이렉션 번호. home으로 이동
response.end();
})
});
}
var template = {
HTML: function (title, list, body, control){
return `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
${list}
${control}
${body}
</body>
</html>
`;
}, list:function (filelist) {
var list = '<ul>';
var i = 0;
while(i < filelist.length) {
list = list +`<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`;
i = i +1;
}
list = list+'</ul>';
return list;
}
}