Skip to content

Commit

Permalink
added discussion comments list to user profile
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatov committed Jul 20, 2011
1 parent ef41a77 commit f1dde8c
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 9 deletions.
4 changes: 4 additions & 0 deletions src/main/scala/scala/tools/colladoc/page/Profile.scala
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class Profile(rootPack: Package) extends scala.tools.colladoc.page.Template(root
<li><a href="#profile_tab">Public Profile</a></li>
<li><a href="#account_admin_tab">Account Admin</a></li>
<li><a href="#comments_tab">Comments</a></li>
<li><a href="#discussion_comments_tab">Discussion Comments</a></li>
</ul>
<div id="profile_tab">
<profile:form />
Expand All @@ -55,6 +56,9 @@ class Profile(rootPack: Package) extends scala.tools.colladoc.page.Template(root
<div id="comments_tab">
<profile:comments />
</div>
<div id="discussion_comments_tab">
<profile:discussion_comments />
</div>
</div>
</div>
</body>
Expand Down
17 changes: 12 additions & 5 deletions src/main/scala/scala/tools/colladoc/page/Template.scala
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ class Template(tpl: DocTemplateEntity) extends tools.nsc.doc.html.page.Template(
<h3 id="discussion_header">Discussion ({discussionCommentsCount})</h3>
<div id="discussion_wrapper">
<ul id="discussion_thread">
{discussionComments map (d => discussionToHtml(d))}
{discussionComments map (d => discussionToHtmlWithActions(d))}
</ul>
{ discussionCommentAddButton }
</div>
Expand All @@ -179,18 +179,25 @@ class Template(tpl: DocTemplateEntity) extends tools.nsc.doc.html.page.Template(
private def discussionCommentsCount = discussionComments.length

/** Render discussion comment. */
private def discussionToHtml(d: Discussion) =
def discussionToHtml(d: Discussion) =
<li id={"discussion_comment_" + d.id} class="discussion_comment">
<div class="discussion_content">{bodyToHtml(parseWiki(d.comment.is, NoPosition))}</div>
<div class="discussion_info">
<span class="datetime" title={d.atomDateTime}>{d.humanDateTime}</span>
by
<span class="author">{d.userName}</span>
{ if (User.superUser_?) deleteDiscussionButton(d) }
{ if (User.superUser_?) editDiscussionButton(d) }
<discussion_comment:link />
<discussion_comment:edit />
<discussion_comment:delete />
</div>
</li>

/** Render discussion comment with actions. */
private def discussionToHtmlWithActions(d: Discussion) = bind("discussion_comment", discussionToHtml(d),
"edit" -> {if (User.superUser_?) { editDiscussionButton(d) } else NodeSeq.Empty},
"delete" -> {if (User.superUser_?) { deleteDiscussionButton(d) } else NodeSeq.Empty}
)

/** Render add comment button. */
private def discussionCommentAddButton = {
SHtml.ajaxButton(Text("Add comment"), discussionEditor(None) _, ("class", "button"), ("id", "add_discussion_button"))
Expand All @@ -208,7 +215,7 @@ class Template(tpl: DocTemplateEntity) extends tools.nsc.doc.html.page.Template(
{ n }
<div class="buttons">
{ SHtml.ajaxButton(Text("Save"), () => SHtml.submitAjaxForm("edit_form_" + d.id, () => reloadDiscussion)) }
{ SHtml.a(Text("Cancel"), Replace("edit_form_" + d.id, discussionToHtml(d)) & Jq(Str("button")) ~> Button(), ("class", "button")) }
{ SHtml.a(Text("Cancel"), Replace("edit_form_" + d.id, discussionToHtmlWithActions(d)) & Jq(Str("button")) ~> Button(), ("class", "button")) }
</div>
</div>
</form>) & j & Jq(Str("button")) ~> Button()
Expand Down
23 changes: 19 additions & 4 deletions src/main/scala/scala/tools/colladoc/snippet/ProfileOps.scala
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@
package scala.tools.colladoc
package snippet

import model.mapper.{Comment, User}
import model.mapper.{Discussion,Comment, User}
import lib.DependencyFactory._
import xml.{NodeSeq, Text}
import net.liftweb.util.BindHelpers._
import net.liftweb.util.DefaultDateTimeConverter._
import net.liftweb.http.{SHtml, S, RequestVar}
import net.liftweb.mapper.By
import net.liftweb.mapper.{Ascending, By, OrderBy}
import lib.js.JqUI.SubmitFormWithValidation
import net.liftweb.http.js.JsCmds.SetValById
import net.liftweb.http.js.JE.Str
import net.liftweb.http.js.{JsCmds, JsCmd}
import page.{History, Profile}
import page.{Template, History, Profile}

/**
* User profile snippet.
Expand Down Expand Up @@ -176,11 +176,26 @@ class ProfileOps {
val cmts: List[Comment] = Comment.findAll(By(Comment.user, user), By(Comment.valid, true))
val comments = new History(model.vend.rootPackage).commentsToHtml(cmts)

val template: Template = new Template(model.vend.rootPackage)
val dscs = Discussion.findAll(By(Discussion.user, user), By(Discussion.valid, true), OrderBy(Discussion.dateTime, Ascending))
def dToHtml(d: Discussion) = {
val abs = "/" + d.qualifiedName.is.replace(".", "/").replace("#", "$") + ".html"
bind("discussion_comment", template.discussionToHtml(d),
"link" -> <xml:group>on <a href={abs}>{d.qualifiedName.is}</a></xml:group>
)
}

val discussionComments =
<ul>
{dscs map dToHtml _}
</ul>

bind("profile", profile.body,
"form" -> userForm(user),
"change_password" -> changePasswordForm(user),
"fullname" -> Text(fullname),
"comments" -> comments
"comments" -> comments,
"discussion_comments" -> discussionComments
)
}
}
1 change: 1 addition & 0 deletions src/main/webapp/profile.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
<script src="/scripts/cotemplate.js" type="text/javascript"/>
<script src="/scripts/coprofile.js" type="text/javascript"/>
<script src="/scripts/cohistory.js" type="text/javascript" />
<script src="/scripts/jquery.prettydate.js" type="text/javascript" />
<link href="/lib/template.css" media="screen" type="text/css" rel="stylesheet" />
<link href="/cotemplate.css" media="screen" type="text/css" rel="stylesheet"/>
<link href="/coprofile.css" media="screen" type="text/css" rel="stylesheet"/>
Expand Down

0 comments on commit f1dde8c

Please sign in to comment.