fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2010-08-30 10:42 am

[dw-free] URL for community rules / welcome

[commit: http://hg.dwscoalition.org/dw-free/rev/f666763b15e4]

http://bugs.dwscoalition.org/show_bug.cgi?id=2336

http://communityname.dreamwidth.org/guidelines points to the community's
posting guidelines entry if provided by the community (linked to when
joining)

Patch by [personal profile] afuna.

Files modified:
  • bin/upgrading/en.dat
  • cgi-bin/DW/Controller/Misc.pm
  • cgi-bin/LJ/User.pm
  • htdocs/community/join.bml
  • htdocs/community/settings.bml
  • htdocs/community/settings.bml.text
  • htdocs/manage/circle/add.bml
--------------------------------------------------------------------------------
diff -r e1b59dbfb947 -r f666763b15e4 bin/upgrading/en.dat
--- a/bin/upgrading/en.dat	Mon Aug 30 16:40:13 2010 +0800
+++ b/bin/upgrading/en.dat	Mon Aug 30 18:41:45 2010 +0800
@@ -1196,6 +1196,10 @@ error.deleted.title=Deleted Account
 error.deleted.title=Deleted Account
 
 error.expiredchal=Login window expired.  Please try again.
+
+error.guidelines.none=[[user]] has not defined an entry for their community guidelines. See <a [[aopts]]>their profile</a> for further information about the community.
+
+error.guidelines.notcomm=Community guidelines are only available for communities.
 
 error.interest.bytes=Sorry, you have listed an interest with [[bytes]] bytes.  Each interest has a limit of [[bytes_max]] bytes.  Any changes you made to your interests were not saved.  Go back and remove, or modify "[[int]]".
 
diff -r e1b59dbfb947 -r f666763b15e4 cgi-bin/DW/Controller/Misc.pm
--- a/cgi-bin/DW/Controller/Misc.pm	Mon Aug 30 16:40:13 2010 +0800
+++ b/cgi-bin/DW/Controller/Misc.pm	Mon Aug 30 18:41:45 2010 +0800
@@ -27,6 +27,7 @@ use DW::Template;
 
 DW::Routing->register_string( '/misc/whereami', \&whereami_handler, app => 1 );
 DW::Routing->register_string( '/pubkey',        \&pubkey_handler,   app => 1 );
+DW::Routing->register_string( '/guidelines',    \&community_guidelines, user => 1 );
 
 # handles the /misc/whereami page
 sub whereami_handler {
@@ -52,4 +53,22 @@ sub pubkey_handler {
     return DW::Template->render_template( 'misc/pubkey.tt', $rv );
 }
 
+sub community_guidelines {
+    my ( $opts ) = @_;
+    my $r = DW::Request->get;
+
+    my $u = LJ::load_user( $opts->username );
+    return error_ml( 'error.invaliduser' )  
+        unless LJ::isu( $u );
+
+    return error_ml( 'error.guidelines.notcomm' )
+        unless $u->is_community;
+
+    my $guidelines_entry = $u->get_posting_guidelines_entry;
+    return error_ml( 'error.guidelines.none', { user => $u->ljuser_display, aopts => "href='" . $u->profile_url . "'" } )
+        unless $guidelines_entry;
+
+    return $r->redirect( $guidelines_entry->url );
+}
+
 1;
diff -r e1b59dbfb947 -r f666763b15e4 cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm	Mon Aug 30 16:40:13 2010 +0800
+++ b/cgi-bin/LJ/User.pm	Mon Aug 30 18:41:45 2010 +0800
@@ -2704,6 +2704,16 @@ sub get_posting_guidelines_entry {
     return undef;
 }
 
+sub posting_guidelines_url {
+    my $u = $_[0];
+
+    return "" unless $u->is_community;
+
+    my $posting_guidelines = $u->posting_guidelines_entry;
+    return "" unless $posting_guidelines;
+
+    return $u->journal_base . "/guidelines";
+}
 
 sub profile_url {
     my ($u, %opts) = @_;
diff -r e1b59dbfb947 -r f666763b15e4 htdocs/community/join.bml
--- a/htdocs/community/join.bml	Mon Aug 30 16:40:13 2010 +0800
+++ b/htdocs/community/join.bml	Mon Aug 30 18:41:45 2010 +0800
@@ -135,10 +135,7 @@ body<=
         my $post_url;
         $post_url = $LJ::SITEROOT . "/update?usejournal=" . $cu->user
             if $show_join_post_link && $remote->can_post_to( $cu );
-        my $posting_guidelines_entry = $cu->get_posting_guidelines_entry;
-        my $posting_guidelines_entry_url;
-        $posting_guidelines_entry_url = $posting_guidelines_entry->url
-            if $posting_guidelines_entry;
+        my $posting_guidelines_entry_url = $cu->posting_guidelines_url;
 
         $ret .= "<?h1 $ML{'.success'} h1?><?p " . BML::ml('.label.membernow6',
                                                           { 'commname' => LJ::ljuser($cu) }) . " p?>";
diff -r e1b59dbfb947 -r f666763b15e4 htdocs/community/settings.bml
--- a/htdocs/community/settings.bml	Mon Aug 30 16:40:13 2010 +0800
+++ b/htdocs/community/settings.bml	Mon Aug 30 18:41:45 2010 +0800
@@ -191,8 +191,13 @@ body<=
             }
 
             $ret .= "<?p $ML{'.label.rellinks'} <ul><li><a href='" . $cu->journal_base . "'>$ML{'.label.commsite'}</a></li>";
-            $ret .= "<li><a href='" . $cu->profile_url() . "'>$ML{'.label.comminfo'}</a></li><li>"
-                . BML::ml('.label.managepage', { 'aopts' => 'href="/community/manage"' }) . "</li></ul> p?>";
+            $ret .= "<li><a href='" . $cu->profile_url() . "'>$ML{'.label.comminfo'}</a></li>"
+                . "<li>" . BML::ml('.label.managepage', { aopts => 'href="/community/manage"' }) . "</li>";
+
+            my $posting_guidelines_url = $cu->posting_guidelines_url;
+            $ret .= "<li>" . BML::ml('.label.guidelines', { aopts => "href='$posting_guidelines_url'"} ) . "</li>"
+                if $posting_guidelines_url;
+            $ret .= "</ul> p?>";
 
             return $ret;
         }
diff -r e1b59dbfb947 -r f666763b15e4 htdocs/community/settings.bml.text
--- a/htdocs/community/settings.bml.text	Mon Aug 30 16:40:13 2010 +0800
+++ b/htdocs/community/settings.bml.text	Mon Aug 30 18:41:45 2010 +0800
@@ -58,6 +58,8 @@
 
 .label.community=Community:
 
+.label.guidelines=<a [[aopts]]>Community guidelines</a> - consistent link to your community guidelines entry
+
 .label.howoperates=Choose how your community operates.  You can change these later.
 
 .label.maintainer=Maintainer:
diff -r e1b59dbfb947 -r f666763b15e4 htdocs/manage/circle/add.bml
--- a/htdocs/manage/circle/add.bml	Mon Aug 30 16:40:13 2010 +0800
+++ b/htdocs/manage/circle/add.bml	Mon Aug 30 18:41:45 2010 +0800
@@ -122,9 +122,7 @@ _c?>
         my $posting_guidelines_entry_url;
         my $post_url;
         if ( $u->is_community ) {
-            my $posting_guidelines_entry = $u->get_posting_guidelines_entry;
-            $posting_guidelines_entry_url = $posting_guidelines_entry->url
-                if $posting_guidelines_entry;
+            $posting_guidelines_entry_url = $u->posting_guidelines_url;
             my $show_join_post_link = $u->hide_join_post_link ? 0 : 1;
             $post_url = $LJ::SITEROOT . "/update?usejournal=" . $u->user
                 if $show_join_post_link && $remote->can_post_to( $u );
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org