work on comments

This commit is contained in:
albert
2010-10-20 19:24:53 -04:00
parent d7eafdaaf5
commit f8b1bd3142
15 changed files with 184 additions and 44 deletions

View File

@@ -0,0 +1,5 @@
class DtextController < ApplicationController
def preview
render :inline => "<h1>Preview</h1><%= format_text(params[:body]) %>"
end
end

View File

@@ -7,7 +7,7 @@ class SessionsController < ApplicationController
if User.authenticate(params[:name], params[:password])
@user = User.find_by_name(params[:name])
session[:user_id] = @user.id
redirect_to(params[:url] || posts_path, :notice => "You are now logged in.")
redirect_to(params[:url] || session[:previous_uri] || posts_path, :notice => "You are now logged in.")
else
redirect_to(new_session_path, :notice => "Password was incorrect.")
end

View File

@@ -1,19 +0,0 @@
<div class="comment-section" data-post-id="<%= post.id %>">
<div class="comment-list">
<%= render :partial => "comments/partials/show/comment", :collection => comments %>
</div>
<div class="comment-response">
<p><%= submit_tag "Post comment", :class => "expand-comment-response" %></p>
<div class="comment-preview"></div>
<%= form_tag(comments_path) do %>
<%= hidden_field "comment", "post_id", :value => post.id%>
<%= text_area "comment", "body", :size => "60x7" %><br>
<%= submit_tag "Post" %>
<%= submit_tag "Preview" %>
<% end %>
</div>
</div>

View File

@@ -0,0 +1,6 @@
%div{:class => "comments-for-post", "data-post-id" => post.id}
%div{:class => "list-of-comments"}
= render :partial => "comments/partials/show/comment", :collection => comments
%div{:class => "new-comment"}
%p= link_to "Post comment", new_comment_path, :class => "expand-comment-response"
= render :partial => "comments/partials/new/form", :locals => {:post => post}

View File

@@ -0,0 +1,7 @@
%div{:class => "comment-preview dtext"}
= form_tag(comments_path) do
= hidden_field "comment", "post_id", :value => post.id
= text_area "comment", "body", :size => "60x7"
%br
= submit_tag "Post"
= submit_tag "Preview"

View File

@@ -1,22 +0,0 @@
<article data-comment-id="<%= comment.id %>">
<header>
<h1><%= link_to comment.creator_name, user_path(comment.creator_id) %></h1>
<time datetime="<%= comment.created_at %>"><%= time_ago_in_words(comment.created_at) %> ago</time>
</header>
<div>
<section>
<%= format_text(comment.body) %>
</section>
<footer>
<menu>
<li><span class="link">Quote</span></li>
<% if CurrentUser.user.is_janitor? || CurrentUser.user.id == comment.creator_id %>
<li><%= link_to "Delete", comment_path(comment.id), :confirm => "Do you really want to delete this comment?", :method => :delete %></li>
<% end %>
<li><%= link_to "Vote up", comment_vote_path(comment.id, :is_positive => true), :method => :post %></li>
<li><%= link_to "Vote down", comment_vote_path(comment.id, :is_positive => false), :method => :post %></li>
</menu>
</footer>
</div>
</article>
<div class="clearfix"></div>

View File

@@ -0,0 +1,16 @@
%article{"data-comment-id" => comment.id}
%div{:class => "author"}
%h1= link_to comment.creator_name, user_path(comment.creator_id)
%time{:datetime => comment.created_at}
= time_ago_in_words(comment.created_at)
= " ago"
%div{:class => "content"}
%div= format_text(comment.body)
%menu
%li
%span{:class => "link"} Quote
- if CurrentUser.user.is_janitor? || CurrentUser.user.id == comment.creator_id
%li= link_to "Delete", comment_path(comment.id), :confirm => "Do you really want to delete this comment?", :method => :delete
%li= link_to "Vote up", comment_vote_path(comment.id, :is_positive => true), :method => :post
%li= link_to "Vote down", comment_vote_path(comment.id, :is_positive => false), :method => :post
%div{:class => "clearfix"}

View File

@@ -5,7 +5,7 @@
</div>
<% end %>
<% form_for(post, :html => {:class => "simple_form"}) do |f| %>
<%= form_for(post, :html => {:class => "simple_form"}) do |f| %>
<%= f.hidden_field :old_tags, :value => post.tag_string %>
<div class="input">

View File

@@ -62,6 +62,7 @@ Danbooru::Application.routes.draw do
end
resources :wiki_page_versions
match '/dtext/preview' => 'dtext#preview', :via => :post
match "/site_map" => "static#site_map", :as => "site_map"
match "/terms_of_service" => "static#terms_of_service", :as => "terms_of_service"
match "/user_maintenance/delete_account" => "user_maintenance#delete_account", :as => "delete_account_info"

View File

@@ -991,10 +991,12 @@ var Danbooru = {};
Danbooru.Post.initialize_tag_list = function() {
$("#tag-box a.search-inc-tag").click(function(e) {
$("#tags").val($("#tags").val() + " " + $(e.target).parent("li").attr("data-tag-name"));
return false;
});
$("#tag-box a.search-exl-tag").click(function(e) {
$("#tags").val($("#tags").val() + " -" + $(e.target).parent("li").attr("data-tag-name"));
return false;
});
}
@@ -1006,6 +1008,7 @@ var Danbooru = {};
var name = e.target.hash;
$(name).show();
e.stopPropagation();
return false;
});
$("#tag-and-wiki-box menu li:first-child").addClass("active");
@@ -1022,6 +1025,7 @@ var Danbooru = {};
var name = e.target.hash;
$(name).show();
e.stopPropagation();
return false;
});
$("#post-sections li:first-child").addClass("active");
@@ -1036,6 +1040,48 @@ $(document).ready(function() {
Danbooru.Post.initialize_all();
});
(function() {
Danbooru.Comment = {};
Danbooru.Comment.initialize_all = function() {
this.initialize_response_link();
this.initialize_preview_button();
}
Danbooru.Comment.initialize_response_link = function() {
$("a.expand-comment-response").click(function(e) {
e.stopPropagation();
$(e.target).closest("div.new-comment").find("form").show();
$(e.target).hide();
return false;
});
$("div.new-comment form").hide();
}
Danbooru.Comment.initialize_preview_button = function() {
$("div.new-comment input[type=submit][value=Preview]").click(function(e) {
e.stopPropagation();
$.ajax({
context: e.target,
url: "/dtext/preview",
data: {
body: $(e.target).closest("form").find("textarea").val()
},
success: function(data, text_status, xhr) {
console.log($(this).closest("div.new-comment").find("div.comment-preview"));
$(this).closest("div.new-comment").find("div.comment-preview").show().html(data);
},
type: "post"
});
return false;
});
}
})();
$(document).ready(function() {
Danbooru.Comment.initialize_all();
});
$(document).ready(function() {
var img = $("#image-preview img");
if (img) {

View File

@@ -0,0 +1,42 @@
(function() {
Danbooru.Comment = {};
Danbooru.Comment.initialize_all = function() {
this.initialize_response_link();
this.initialize_preview_button();
}
Danbooru.Comment.initialize_response_link = function() {
$("a.expand-comment-response").click(function(e) {
e.stopPropagation();
$(e.target).closest("div.new-comment").find("form").show();
$(e.target).hide();
return false;
});
$("div.new-comment form").hide();
}
Danbooru.Comment.initialize_preview_button = function() {
$("div.new-comment input[type=submit][value=Preview]").click(function(e) {
e.stopPropagation();
$.ajax({
context: e.target,
url: "/dtext/preview",
data: {
body: $(e.target).closest("form").find("textarea").val()
},
success: function(data, text_status, xhr) {
console.log($(this).closest("div.new-comment").find("div.comment-preview"));
$(this).closest("div.new-comment").find("div.comment-preview").show().html(data);
},
type: "post"
});
return false;
});
}
})();
$(document).ready(function() {
Danbooru.Comment.initialize_all();
});

View File

@@ -174,10 +174,12 @@
Danbooru.Post.initialize_tag_list = function() {
$("#tag-box a.search-inc-tag").click(function(e) {
$("#tags").val($("#tags").val() + " " + $(e.target).parent("li").attr("data-tag-name"));
return false;
});
$("#tag-box a.search-exl-tag").click(function(e) {
$("#tags").val($("#tags").val() + " -" + $(e.target).parent("li").attr("data-tag-name"));
return false;
});
}
@@ -189,6 +191,7 @@
var name = e.target.hash;
$(name).show();
e.stopPropagation();
return false;
});
$("#tag-and-wiki-box menu li:first-child").addClass("active");
@@ -205,6 +208,7 @@
var name = e.target.hash;
$(name).show();
e.stopPropagation();
return false;
});
$("#post-sections li:first-child").addClass("active");

View File

@@ -205,6 +205,24 @@ form.simple_form div.input {
width: auto;
margin-right: 2em; }
/*** DText Preview ***/
div.dtext p {
margin-bottom: 1em; }
/*** Comments ***/
div.comments-for-post div.list-of-comments article {
margin-bottom: 2em; }
div.comments-for-post div.list-of-comments article div.author {
width: 20%;
float: left; }
div.comments-for-post div.list-of-comments article div.content {
margin-left: 2em;
width: 40em;
float: left; }
div.comments-for-post div.comment-preview {
width: 40em;
margin-bottom: 2em; }
/*** Posts ***/
div.posts h1 {
font-size: 1.2em; }

View File

@@ -285,6 +285,42 @@ form.simple_form {
}
/*** DText Preview ***/
div.dtext {
p {
margin-bottom: 1em;
}
}
/*** Comments ***/
div.comments-for-post {
div.list-of-comments {
article {
margin-bottom: 2em;
div.author {
width: 20%;
float: left;
}
div.content {
margin-left: 2em;
width: 40em;
float: left;
}
}
}
div.comment-preview {
width: 40em;
margin-bottom: 2em;
}
}
/*** Posts ***/
div.posts {
@@ -363,7 +399,6 @@ div.posts {
}
/*** Comments ***/
div.comment-response {
}

View File

@@ -8,4 +8,5 @@ cat public/javascripts/src/lib/rails.js >> public/javascripts/compiled/default.j
cat public/javascripts/src/app/cookie.js >> public/javascripts/compiled/default.js
cat public/javascripts/src/app/application.js >> public/javascripts/compiled/default.js
cat public/javascripts/src/app/posts.js >> public/javascripts/compiled/default.js
cat public/javascripts/src/app/comments.js >> public/javascripts/compiled/default.js
cat public/javascripts/src/app/uploads.js >> public/javascripts/compiled/default.js