[dw-free] S2 page summary module doesn't show threaded comments
[commit: http://hg.dwscoalition.org/dw-free/rev/418db41d190c]
http://bugs.dwscoalition.org/show_bug.cgi?id=1530
Show number of replies to each comment (default is still as a tooltip); some
refactoring.
Patch by
kareila.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=1530
Show number of replies to each comment (default is still as a tooltip); some
refactoring.
Patch by
Files modified:
- bin/upgrading/s2layers/core2.s2
--------------------------------------------------------------------------------
diff -r f869d77eb4b4 -r 418db41d190c bin/upgrading/s2layers/core2.s2
--- a/bin/upgrading/s2layers/core2.s2 Sun Aug 09 09:05:46 2009 +0000
+++ b/bin/upgrading/s2layers/core2.s2 Sun Aug 09 13:14:11 2009 +0000
@@ -1993,6 +1993,13 @@ set text_post_comment_friends = "Leave a
set text_post_comment_friends = "Leave a comment";
set text_read_comments_friends = "1 comment // # comments";
+property string text_read_comments_threads {
+ des = "Link text to read comment threads from an entry";
+ format = "plurals";
+ example = "1 response // # responses";
+}
+set text_read_comments_threads = "1 response // # responses";
+
##===============================
## Text - entry actions
##===============================
@@ -3271,73 +3278,84 @@ function print_module_poweredby() {
close_module();
}
+function print_module_pagesummary_comment_count(Comment comment) : int {
+ var int count = 0;
+ foreach var Comment c ( $comment.replies ) {
+ $count = $count + 1 + print_module_pagesummary_comment_count($c);
+ }
+ return $count;
+}
+
+function print_module_pagesummary_comments(string esubject, int count, string prop) : string {
+ var string subject = ($esubject != "" ? striphtml($esubject) : "<em>$*text_nosubject</em>");
+ var string module_comment_text = get_plural_phrase($count, $prop);
+
+ if ($*module_pagesummary_opts_comments_tooltip) {
+ return "title='$module_comment_text'>$subject</a>";
+ }
+ elseif ($count != 0) {
+ return ">$subject</a> +$module_comment_text";
+ }
+ else {
+ return ">$subject</a>";
+ }
+}
+
function print_module_pagesummary() {
var Page p = get_page();
- var string title = $*text_module_pagesummary;
-
var string[] links = [];
- if ($p isa EntryPage) {
+
+ if ( $p isa EntryPage ) {
var EntryPage cp = $p as EntryPage;
- var string subject;
- var string poster;
foreach var Comment c ( $cp.comments ) {
- $poster = isnull $c.poster ? $*text_poster_anonymous : $c.poster->ljuser();
- $subject = ($c.subject != "" ? striphtml($c.subject) : "<em>$*text_nosubject</em>");
- $links[size $links] = """$poster - <a href="#$c.anchor">$subject</a>""";
- }
- }
-
- elseif ($p isa FriendsPage) {
+ var int count = print_module_pagesummary_comment_count($c);
+ var string comment_display =
+ print_module_pagesummary_comments($c.subject, $count, "text_read_comments_threads");
+ var string poster = isnull $c.poster ? $*text_poster_anonymous : $c.poster->ljuser();
+
+ $links[size $links] = """$poster - <a href="#$c.anchor" $comment_display""";
+ }
+ }
+
+ elseif ( $p isa FriendsPage ) {
var FriendsPage cp = $p as FriendsPage;
- var string subject;
- var string poster;
foreach var Entry e ( $cp.entries ) {
- $poster = $e.poster->ljuser();
- $subject = ($e.subject != "" ? striphtml($e.subject) : "<em>$*text_nosubject</em>");
- var string module_comment_text = get_plural_phrase($e.comments.count, "text_read_comments_friends");
- var string comment_display;
- if ($*module_pagesummary_opts_comments_tooltip) {
- $comment_display = "title='$module_comment_text'>$subject</a>";
- }
- else {
- if ($e.comments.count != 0) {
- $comment_display = ">$subject</a> +$module_comment_text";
- }
- else {
- $comment_display = ">$subject</a>";
- }
- }
+ var string comment_display =
+ print_module_pagesummary_comments($e.subject, $e.comments.count, "text_read_comments_friends");
+ var string poster = $e.poster->ljuser();
- if (not $e.poster->equals($e.journal)) {
- $links[size $links] = """$poster in $e.journal - <a href="#entry-$e.itemid" $comment_display""";
- }
- else {
+ if ( not $e.poster->equals($e.journal) ) {
+ $poster = "$poster in $e.journal";
+ }
+
+ $links[size $links] = """$poster - <a href="#entry-$e.itemid" $comment_display""";
+ }
+ }
+
+ elseif ( $p isa RecentPage ) {
+ var RecentPage cp = $p as RecentPage;
+ foreach var Entry e ( $cp.entries ) {
+ var string comment_display =
+ print_module_pagesummary_comments($e.subject, $e.comments.count, "text_read_comments");
+ var string poster = $e.poster->ljuser();
+
+ if ( not $e.poster->equals($e.journal) ) {
$links[size $links] = """$poster - <a href="#entry-$e.itemid" $comment_display""";
}
- }
- }
- elseif ($p isa RecentPage) {
- var RecentPage cp = $p as RecentPage;
- var string subject;
- var string poster;
+ else {
+ $links[size $links] = """<a href="#entry-$e.itemid" $comment_display""";
+ }
+ }
+ }
+
+ elseif ( $p isa DayPage ) {
+ var DayPage cp = $p as DayPage;
foreach var Entry e ( $cp.entries ) {
- $subject = ($e.subject != "" ? striphtml($e.subject) : "<em>$*text_nosubject</em>");
- var string module_comment_text = get_plural_phrase($e.comments.count, "text_read_comments");
- var string comment_display;
- if ($*module_pagesummary_opts_comments_tooltip) {
- $comment_display = "title='$module_comment_text'>$subject</a>";
- }
- else {
- if ($e.comments.count != 0) {
- $comment_display = ">$subject</a> +$module_comment_text";
- }
- else {
- $comment_display = ">$subject</a>";
- }
- }
-
- if (not $e.poster->equals($e.journal)) {
- $poster = $e.poster->ljuser();
+ var string comment_display =
+ print_module_pagesummary_comments($e.subject, $e.comments.count, "text_read_comments");
+ var string poster = $e.poster->ljuser();
+
+ if ( not $e.poster->equals($e.journal) ) {
$links[size $links] = """$poster - <a href="#entry-$e.itemid" $comment_display""";
}
else {
@@ -3345,42 +3363,12 @@ function print_module_pagesummary() {
}
}
}
-
- elseif ($p isa DayPage) {
- var DayPage cp = $p as DayPage;
- var string subject;
- var string poster;
- foreach var Entry e ( $cp.entries ) {
- $subject = ($e.subject != "" ? striphtml($e.subject) : "<em>$*text_nosubject</em>");
- var string module_comment_text = get_plural_phrase($e.comments.count, "text_read_comments");
- var string comment_display;
- if ($*module_pagesummary_opts_comments_tooltip) {
- $comment_display = "title='$module_comment_text'>$subject</a>";
- }
- else {
- if ($e.comments.count != 0) {
- $comment_display = ">$subject</a> +$module_comment_text";
- }
- else {
- $comment_display = ">$subject</a>";
- }
- }
-
- if (not $e.poster->equals($e.journal)) {
- $poster = $e.poster->ljuser();
- $links[size $links] = """$poster - <a href="#entry-$e.itemid" $comment_display""";
- }
- else {
- $links[size $links] = """<a href="#entry-$e.itemid" $comment_display""";
- }
- }
- }
- if (size($links) < 1) { return; }
- open_module("pagesummary", $title, "");
+
+ if ( size($links) < 1 ) { return; }
+ open_module("pagesummary", $*text_module_pagesummary, "");
print_module_list($links);
close_module();
}
-
function print_module_tags() {
var Page p = get_page();
--------------------------------------------------------------------------------
