work on comments
This commit is contained in:
5
app/controllers/dtext_controller.rb
Normal file
5
app/controllers/dtext_controller.rb
Normal file
@@ -0,0 +1,5 @@
|
||||
class DtextController < ApplicationController
|
||||
def preview
|
||||
render :inline => "<h1>Preview</h1><%= format_text(params[:body]) %>"
|
||||
end
|
||||
end
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
6
app/views/comments/partials/index/_list.html.haml
Normal file
6
app/views/comments/partials/index/_list.html.haml
Normal 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}
|
||||
7
app/views/comments/partials/new/_form.html.haml
Normal file
7
app/views/comments/partials/new/_form.html.haml
Normal 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"
|
||||
@@ -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>
|
||||
16
app/views/comments/partials/show/_comment.html.haml
Normal file
16
app/views/comments/partials/show/_comment.html.haml
Normal 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"}
|
||||
@@ -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">
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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) {
|
||||
|
||||
42
public/javascripts/src/app/comments.js
Normal file
42
public/javascripts/src/app/comments.js
Normal 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();
|
||||
});
|
||||
@@ -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");
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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 {
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user