Skip to content

Commit

Permalink
added discussion editor
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatov committed Jul 19, 2011
1 parent 407f4b8 commit d546fd7
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 12 deletions.
61 changes: 52 additions & 9 deletions src/main/scala/scala/tools/colladoc/page/Template.scala
Original file line number Diff line number Diff line change
Expand Up @@ -108,12 +108,7 @@ class Template(tpl: DocTemplateEntity) extends tools.nsc.doc.html.page.Template(
}
</div>

<div id="discussion">
<h3>Discussion ({discussionCommentsCount})</h3>
<ol id="discussion_thread">
{discussionComments map (d => discussionToHtml(d))}
</ol>
</div>
{ discussion }

{ if (constructors.isEmpty) NodeSeq.Empty else
<div id="constructors" class="members">
Expand Down Expand Up @@ -161,16 +156,64 @@ class Template(tpl: DocTemplateEntity) extends tools.nsc.doc.html.page.Template(

</body>

def discussionComments = Discussion.findAll(By(Discussion.qualifiedName, tpl.qualifiedName), By(Discussion.valid, true))
/** Render discussion block. */
private def discussion =
<div id="discussion">
<h3 id="discussion_header">Discussion ({discussionCommentsCount})</h3>
<div id="discussion_wrapper">
<ol id="discussion_thread">
{discussionComments map (d => discussionToHtml(d))}
</ol>
{ discussionCommentAddButton }
</div>
</div>

def discussionCommentsCount = discussionComments.length
/** Get discussion comments for current template. */
private def discussionComments = Discussion.findAll(By(Discussion.qualifiedName, tpl.qualifiedName), By(Discussion.valid, true))

def discussionToHtml(d: Discussion) =
/** Get discussion comments count for current template. */
private def discussionCommentsCount = discussionComments.length

/** Render discussion comment. */
private def discussionToHtml(d: Discussion) =
<li class="discussion_comment">
<span class="comment">{d.comment.is}</span>
<span class="info">{d.userNameDate}</span>
</li>

/** Render add comment button. */
private def discussionCommentAddButton = {
SHtml.ajaxButton(Text("Add comment"), discussionEditor _, ("class", "button"), ("id", "add_discussion_button"))
}

/** Render editor. */
private def discussionEditor: JsCmd = {
Editor.editorObj("", text => NodeSeq.Empty, saveDiscussionComment _) match {
case (n, j) =>
Replace("add_discussion_button",
<form id="discussion_form" class="edit" method="GET">
<div class="editor">
{ n }
<div class="buttons">
{ SHtml.ajaxButton(Text("Save"), () => SHtml.submitAjaxForm("discussion_form", () => reloadDiscussion)) }
{ SHtml.a(Text("Cancel"), Replace("discussion_form", discussionCommentAddButton) & Jq(Str("button")) ~> Button(), ("class", "button")) }
</div>
</div>
</form>) & j & Jq(Str("button")) ~> Button()
case _ => JsCmds.Noop
}
}

/** Reload discussion block after new comment adding. */
private def reloadDiscussion = Replace("discussion", discussion) &
JsRaw("$('#discussion_wrapper').toggle();") &
Jq(Str("button")) ~> Button()

/** Save discussion comment to database. */
private def saveDiscussionComment(text: String) {
Discussion.create.qualifiedName(tpl.qualifiedName).comment(text).dateTime(now).user(User.currentUser.open_!).valid(true).save
}

override def memberToHtml(mbr: MemberEntity): NodeSeq =
super.memberToHtml(mbr) \% Map("data-istype" -> (mbr.isAbstractType || mbr.isAliasType).toString)

Expand Down
3 changes: 2 additions & 1 deletion src/main/webapp/cotemplate.css
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ background-color: #E5E5E5;
font-weight: bold;
}

#discussion_thread {
#discussion_wrapper {
display: none;
padding: 4px;
}
4 changes: 2 additions & 2 deletions src/main/webapp/scripts/cotemplate.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,6 @@ function confirm(message, callback, options) {
$confirm.dialog($.extend({}, defaults, options));
}

$("#discussion").live("click", function(){
$("#discussion_thread").slideToggle(100);
$("#discussion_header").live("click", function(){
$("#discussion_wrapper").slideToggle(100);
});

0 comments on commit d546fd7

Please sign in to comment.