Add comment-count image to crossposted entries, add preview for footer 
text.

        Patch by allen. 

diffs (244 lines):

diff -r 47415b27b7d7 -r b3557872aaba bin/upgrading/en.dat
--- a/bin/upgrading/en.dat      Wed Aug 05 04:57:16 2009 +0000
+++ b/bin/upgrading/en.dat      Wed Aug 05 06:44:12 2009 +0000
@@ -2893,8 +2893,16 @@ setting.viewingadultcontent.option.selec
 
 setting.viewingadultcontent.reason=(To change this option, you must <a 
[[aopts]]>set your birthdate</a> first.)
 
+setting.xpost.accounts=Accounts
+
 setting.xpost.btn.add=Add New Account
 
+setting.xpost.comments=Comments
+
+setting.xpost.footer=Footer
+
+setting.xpost.footer.default.label=System default footer:
+
 setting.xpost.label=Crossposting
 
 setting.xpost.message.usage=Current accounts configured:  <b>[[current]] of 
[[max]]</b>
@@ -2911,7 +2919,14 @@ setting.xpost.option.delete=Delete
 
 setting.xpost.option.disablecomments=Disable comments on crossposts made to 
other sites
 
-setting.xpost.option.footer=Text of the footer to add on other sites. If you 
leave it blank, the default will display. To include a link to the post 
locally, use "%%url%%".
+setting.xpost.option.footer=Text of the footer to add on other sites. If you 
leave it blank, the system default footer will display.
+
+setting.xpost.option.footer.vars=The following variables may be used:
+setting.xpost.option.footer.vars.url=link to the original post
+setting.xpost.option.footer.vars.reply_url=link to the reply form on the 
original post
+setting.xpost.option.footer.vars.comment_url=link to view the comments on the 
original post
+setting.xpost.option.footer.vars.comment_image=image tag that dynamically 
displays the comment count on the original post
+setting.xpost.option.footer.vars.comment_image.alttext=comment count 
unavailable
 
 setting.xpost.option.footer.when=Add the footer to the post on the other site:
 
@@ -2930,6 +2945,10 @@ setting.xpost.option.xpostbydefault=Cros
 setting.xpost.option.xpostbydefault=Crosspost by Default
 
 setting.xpost.noaccounts=No accounts configured
+
+setting.xpost.preview=Preview
+
+setting.xpost.settings=Crosspost Settings
 
 setting.xpostcomments.about=When Crossposting to LJ-based accounts, disable 
comments on the other posts.
 
diff -r 47415b27b7d7 -r b3557872aaba cgi-bin/DW/External/XPostProtocol.pm
--- a/cgi-bin/DW/External/XPostProtocol.pm      Wed Aug 05 04:57:16 2009 +0000
+++ b/cgi-bin/DW/External/XPostProtocol.pm      Wed Aug 05 06:44:12 2009 +0000
@@ -85,6 +85,26 @@ sub scrub_polls {
     return $entry_text;
 }
 
+# creates the footer text
+sub create_footer_text {
+    my ($self, $entry, $footer_text) = @_;
+
+    my $url = $entry->url;
+    my $comment_url = $entry->url( anchor => "comments" );
+    my $reply_url = $entry->reply_url;
+    my $comment_image = $entry->comment_imgtag;
+
+    # note:  if you change any of these, be sure to change the preview
+    # javascript in DW/Setting/XPostAccounts.pm, too.
+    $footer_text =~ s/%%url%%/$url/gi;
+    $footer_text =~ s/%%reply_url%%/$reply_url/gi;
+    $footer_text =~ s/%%comment_url%%/$comment_url/gi;
+    $footer_text =~ s/%%comment_image%%/$comment_image/gi;
+    $footer_text = "\n\n" . $footer_text;
+    
+    return $footer_text;
+}
+
 # validates that the given server is running the appropriate protocol.
 # must be run in an eval block.  returns 1 on success, 0 on failure
 sub validate_server { 1 }
diff -r 47415b27b7d7 -r b3557872aaba 
cgi-bin/DW/External/XPostProtocol/LJXMLRPC.pm
--- a/cgi-bin/DW/External/XPostProtocol/LJXMLRPC.pm     Wed Aug 05 04:57:16 
2009 +0000
+++ b/cgi-bin/DW/External/XPostProtocol/LJXMLRPC.pm     Wed Aug 05 06:44:12 
2009 +0000
@@ -167,9 +167,7 @@ sub crosspost {
 
             $adding_footer = 1;
             if ( $footer_text ) {
-                my $url = $entry->url;
-                $footer_text =~ s/%%url%%/$url/gi;
-                $footer_text = "\n\n" . $footer_text;
+                $footer_text = $self->create_footer_text($entry, $footer_text);
             } else {
                 # FIXME: this should check if comments are disabled
                 # on the local site and do the right thing, but 
@@ -185,9 +183,7 @@ sub crosspost {
             # (and they are)
 
             if ( $footer_text ) {
-                my $url = $entry->url;
-                $footer_text =~ s/%%url%%/$url/gi;
-                $footer_text = "\n\n" . $footer_text;
+                $footer_text = $self->create_footer_text($entry, $footer_text);
             } else {
                 # FIXME: this should check if comments are disabled
                 # on the local site and do the right thing, but 
diff -r 47415b27b7d7 -r b3557872aaba cgi-bin/DW/Setting/XPostAccounts.pm
--- a/cgi-bin/DW/Setting/XPostAccounts.pm       Wed Aug 05 04:57:16 2009 +0000
+++ b/cgi-bin/DW/Setting/XPostAccounts.pm       Wed Aug 05 06:44:12 2009 +0000
@@ -57,6 +57,7 @@ sub option {
 
     # be sure to add your style info in htdocs/stc/settings.css or this won't
     # look very good.
+    $ret .= "<h2>" . $class->ml('setting.xpost.accounts') ."</h2><br/>"; 
     $ret .= "<table class='setting_table'>\n";
     if (scalar @accounts) {
         $ret .= "<tr>\n";
@@ -102,29 +103,20 @@ sub option {
         $ret .= "<div class='xpost_add'><a 
href='$LJ::SITEROOT/manage/externalaccount'>" . 
$class->ml('setting.xpost.btn.add') . "</a></div>\n";
     }
 
+    $ret .= "<h2>" . $class->ml('setting.xpost.settings') . "</h2>";
     # disable comments on crosspost
-    $ret .= "<br /><p><label for='${key}xpostdisablecomments'>" . 
$class->ml('setting.xpost.option.disablecomments') . "</label>";
+    $ret .= "<table><tr>";
+    $ret .= "<td><b>" . $class->ml('setting.xpost.comments') . 
"</b></td><td><label for='${key}xpostdisablecomments'>" . 
$class->ml('setting.xpost.option.disablecomments') . "</label></td><td>";
     $ret .= LJ::html_check({
         name     => "${key}xpostdisablecomments",
         value    => 1,
         id       => "${key}xpostdisablecomments",
         selected => $u->prop('opt_xpost_disable_comments')
         }) .  "</p>";
-
-    # define custom footer
-    $ret .= "<p><label for='${key}crosspost_footer_text'>" . $class->ml( 
'setting.xpost.option.footer' ) . "</label>";
-    my $footer_text = $u->prop('crosspost_footer_text');
-
-    $ret .= LJ::html_text({
-        name      => "${key}crosspost_footer_text",
-        id        => "${key}crosspost_footer_text",
-        size      => "70",
-        maxlength => "255",
-        value     => $footer_text
-    }) . "</p>";
-
+    $ret .= "</td></tr>";
+    
     # When should the footer be displayed?
-    $ret .= "<p><label for='${key}crosspost_footer_append'>" . $class->ml( 
'setting.xpost.option.footer.when' ) . "</label> ";
+    $ret .= "<tr><td><b>" . $class->ml('setting.xpost.footer') . 
"</b></td><td><label for='${key}crosspost_footer_append'>" . $class->ml( 
'setting.xpost.option.footer.when' ) . "</label></td><td>";
     my $append_when = $u->prop('crosspost_footer_append');
 
     $ret .= LJ::html_select({
@@ -136,7 +128,52 @@ sub option {
         'D'       => $class->ml( 'setting.xpost.option.footer.when.disabled' ),
         'N'       => $class->ml( 'setting.xpost.option.footer.when.never' )
     );
+    $ret .= "</td></tr>";
 
+    # define custom footer
+    $ret .= "<tr><td>&nbsp</td><td colspan='2'><label 
for='${key}crosspost_footer_text'>" . $class->ml( 'setting.xpost.option.footer' 
) . "</label><br/>";
+
+    my $footer_text = $u->prop('crosspost_footer_text');
+
+    $ret .= LJ::html_textarea({
+        name      => "${key}crosspost_footer_text",
+        id        => "${key}crosspost_footer_text",
+        rows      => 3,
+        cols      => 80,
+        maxlength => "512",
+        onkeyup   => "javascript:updatePreview()",
+        value     => $footer_text
+    }) . "<br/><br/>";
+
+    $ret .= "" . $class->ml('setting.xpost.preview') . "\n";
+
+    my $baseurl = $LJ::SITEROOT;
+    my $alttext = 
$class->ml('setting.xpost.option.footer.vars.comment_image.alttext');
+    my $default_comment = $class->ml('xpost.redirect.comment', { postlink => 
"%%url%%" });
+
+    $ret .= qq [
+      <div id='footer_preview' class='xpost_footer_preview'></div>
+      <script type="text/javascript">
+        function updatePreview() {
+          var previewString = \$('${key}crosspost_footer_text').value;
+          if (! previewString) {
+            previewString = '$default_comment';
+          }
+          previewString = previewString.replace(/%%url%%/, 
'$baseurl/12345.html');
+          previewString = previewString.replace(/%%reply_url%%/, 
'$baseurl/12345.html?mode=reply');
+          previewString = previewString.replace(/%%comment_url%%/, 
'$baseurl/12345.html#comments');
+          previewString = previewString.replace(/%%comment_image%%/, '<img 
src="$baseurl/tools/commentcount?samplecount=23" alt="$alttext" 
style="vertical-align: middle;"/>');
+          \$('footer_preview').innerHTML = previewString;
+        }
+        updatePreview();
+      </script>
+    ];
+    $ret .= "<p style='font-size: smaller;'>" . 
$class->ml('setting.xpost.option.footer.vars') . "<br/>";
+    foreach my $var qw (url reply_url comment_url comment_image) {
+        $ret .= "<b>%%$var%%</b>: " . 
$class->ml("setting.xpost.option.footer.vars.$var") . "<br/>\n";
+    }
+    $ret .= "<br/>" . $class->ml("setting.xpost.footer.default.label") .  
"<br/>" . LJ::ehtml($default_comment) . "\n";
+    $ret .= "</td></tr></table>\n";
     return $ret;
 }
 
diff -r 47415b27b7d7 -r b3557872aaba cgi-bin/LJ/Entry.pm
--- a/cgi-bin/LJ/Entry.pm       Wed Aug 05 04:57:16 2009 +0000
+++ b/cgi-bin/LJ/Entry.pm       Wed Aug 05 06:44:12 2009 +0000
@@ -223,6 +223,24 @@ sub url {
     }
     $url .= "#$anchor" if $anchor;
     return $url;
+}
+
+# returns a url that will display the number of comments on the entry
+# as an image
+sub comment_image_url {
+    my $self = shift;
+    my $u = $self->{u};
+
+    return "$LJ::SITEROOT/tools/commentcount?uid=" . $self->journalid . 
"&ditemid=" .  $self->ditemid;
+}
+
+# returns a pre-generated comment img tag using the comment_image_url
+sub comment_imgtag {
+    my $self = shift;
+
+    my $alttext = 
LJ::Lang::ml('setting.xpost.option.footer.vars.comment_image.alttext');
+    
+    return '<img src="' . $self->comment_image_url . '" alt="' . $alttext . '" 
style="vertical-align: middle;"/>';
 }
 
 sub anum {
diff -r 47415b27b7d7 -r b3557872aaba htdocs/stc/settings.css
--- a/htdocs/stc/settings.css   Wed Aug 05 04:57:16 2009 +0000
+++ b/htdocs/stc/settings.css   Wed Aug 05 06:44:12 2009 +0000
@@ -169,3 +169,10 @@
 .xpost_add {
     text-align: center;
 }
+
+.xpost_footer_preview {
+    border: 1px solid #000000;
+    width: 100%;
+    background: #EEEEEE;
+    padding: 10px 5px 10px 5px;
+}
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog

Reply via email to