Mercurial Hosting > freedit
comparison src/thread.html.luan @ 16:bff178656073
delete function
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Wed, 06 Jul 2022 22:42:42 -0600 |
| parents | 0edde02b908c |
| children | 94e26bffd4fb |
comparison
equal
deleted
inserted
replaced
| 15:0edde02b908c | 16:bff178656073 |
|---|---|
| 11 local forum_title = Forum.title or error() | 11 local forum_title = Forum.title or error() |
| 12 local Db = require "site:/lib/Db.luan" | 12 local Db = require "site:/lib/Db.luan" |
| 13 local Post = require "site:/lib/Post.luan" | 13 local Post = require "site:/lib/Post.luan" |
| 14 local Bbcode = require "site:/lib/Bbcode.luan" | 14 local Bbcode = require "site:/lib/Bbcode.luan" |
| 15 local bbcode_to_html = Bbcode.to_html or error() | 15 local bbcode_to_html = Bbcode.to_html or error() |
| 16 local User = require "site:/lib/User.luan" | |
| 16 | 17 |
| 18 | |
| 19 local function deletePost() | |
| 20 %><a href="javascript:" onclick="deletePost(parentNode)">delete</a><% | |
| 21 end | |
| 17 | 22 |
| 18 return function() | 23 return function() |
| 19 local root_id = Http.request.parameters.root or error() | 24 local root_id = Http.request.parameters.root or error() |
| 20 local docs, total_hits = Db.search("post_root_id:"..root_id,1,1000,{sort="id"}) | 25 local docs, total_hits = Db.search("post_root_id:"..root_id,1,1000,{sort="id"}) |
| 21 local posts = Post.from_docs(docs) | 26 local posts = Post.from_docs(docs) |
| 22 local subject_html = posts[1].subject_html | 27 local subject_html = posts[1].subject_html |
| 28 local user = User.current() | |
| 29 local user_name = user and user.name | |
| 23 Io.stdout = Http.response.text_writer() | 30 Io.stdout = Http.response.text_writer() |
| 24 %> | 31 %> |
| 25 <!doctype html> | 32 <!doctype html> |
| 26 <html> | 33 <html> |
| 27 <head> | 34 <head> |
| 36 function cancelEdit(post) { | 43 function cancelEdit(post) { |
| 37 let postDiv = document.querySelector('[post="'+post+'"]'); | 44 let postDiv = document.querySelector('[post="'+post+'"]'); |
| 38 postDiv.querySelector('[output]').style.display = 'block'; | 45 postDiv.querySelector('[output]').style.display = 'block'; |
| 39 postDiv.querySelector('[edit]').innerHTML = ''; | 46 postDiv.querySelector('[edit]').innerHTML = ''; |
| 40 } | 47 } |
| 41 | |
| 42 function saveEdit(post) { | 48 function saveEdit(post) { |
| 43 let postDiv = document.querySelector('[post="'+post+'"]'); | 49 let postDiv = document.querySelector('[post="'+post+'"]'); |
| 44 let text = postDiv.querySelector('textarea').value; | 50 let text = postDiv.querySelector('textarea').value; |
| 45 let postData = 'post=' + post + '&text=' + encodeURIComponent(text); | 51 let postData = 'post=' + post + '&text=' + encodeURIComponent(text); |
| 46 ajax("save_edit.js",postData); | 52 ajax("save_edit.js",postData); |
| 53 } | |
| 54 | |
| 55 function deletePost(span) { | |
| 56 span.innerHTML = document.querySelector('[hidden][delete]').innerHTML; | |
| 57 } | |
| 58 function deleteNo(span) { | |
| 59 span.innerHTML = document.querySelector('[hidden][undelete]').innerHTML; | |
| 60 } | |
| 61 function deleteYes(span) { | |
| 62 let post = span.getAttribute('delete'); | |
| 63 ajax( '/delete.js?post=' + post ); | |
| 47 } | 64 } |
| 48 </script> | 65 </script> |
| 49 </head> | 66 </head> |
| 50 <body> | 67 <body> |
| 51 <% header() %> | 68 <% header() %> |
| 52 <div content> | 69 <div content> |
| 53 <h1><%=subject_html%></h1> | 70 <h1><%=subject_html%></h1> |
| 54 <% for _, post in ipairs(posts) do %> | 71 <% for _, post in ipairs(posts) do |
| 72 if post.is_deleted then | |
| 73 continue | |
| 74 end | |
| 75 %> | |
| 55 <hr> | 76 <hr> |
| 56 <div post="<%=post.id%>"> | 77 <div post="<%=post.id%>"> |
| 57 <div output> | 78 <div output> |
| 58 <% bbcode_to_html(post.content) %> | 79 <% bbcode_to_html(post.content) %> |
| 59 <p> | 80 <p> |
| 60 <a href="/reply.html?parent=<%=post.id%>">reply</a> | 81 <a href="/reply.html?parent=<%=post.id%>">reply</a> |
| 82 <% if post.author_name == user_name then %> | |
| 61 - <a href="javascript:ajax('/edit.js?post=<%=post.id%>')">edit</a> | 83 - <a href="javascript:ajax('/edit.js?post=<%=post.id%>')">edit</a> |
| 84 - <span delete="<%=post.id%>"><%deletePost()%></span> | |
| 85 <% end %> | |
| 62 </p> | 86 </p> |
| 63 </div> | 87 </div> |
| 64 <div edit></div> | 88 <div edit></div> |
| 65 </div> | 89 </div> |
| 66 <% end %> | 90 <% end %> |
| 67 </div> | 91 </div> |
| 68 <% footer() %> | 92 <% footer() %> |
| 93 <span hidden delete>Delete? <a href="javascript:" onclick="deleteYes(parentNode)">yes</a> / <a href="javascript:" onclick="deleteNo(parentNode)">no</a></span> | |
| 94 <span hidden undelete><%deletePost()%></span> | |
| 69 </body> | 95 </body> |
| 70 </html> | 96 </html> |
| 71 <% | 97 <% |
| 72 end | 98 end |
