diff --git a/r2/r2/config/routing.py b/r2/r2/config/routing.py index 15d1dd6c4..cc49769d1 100644 --- a/r2/r2/config/routing.py +++ b/r2/r2/config/routing.py @@ -50,6 +50,7 @@ def make_map(): mc('/search', controller='front', action='search') + mc('/rules', controller='front', action='rules') mc('/sup', controller='front', action='sup') mc('/traffic', controller='front', action='site_traffic') mc('/account-activity', controller='front', action='account_activity') diff --git a/r2/r2/controllers/front.py b/r2/r2/controllers/front.py index 1eb4aa9d0..17daf1c2a 100755 --- a/r2/r2/controllers/front.py +++ b/r2/r2/controllers/front.py @@ -940,6 +940,11 @@ class FrontController(RedditController): @validate(VUser()) def GET_account_activity(self): return AccountActivityPage().render() + + def GET_rules(self): + return BoringPage(_("rules of reddit"), show_sidebar=False, + content=RulesPage(), page_classes=["rulespage-body"] + ).render() class FormsController(RedditController): diff --git a/r2/r2/lib/pages/pages.py b/r2/r2/lib/pages/pages.py index cdd7a0759..3acd6d072 100755 --- a/r2/r2/lib/pages/pages.py +++ b/r2/r2/lib/pages/pages.py @@ -3903,3 +3903,6 @@ class ApiHelp(Templated): def __init__(self, api_docs, *a, **kw): self.api_docs = api_docs super(ApiHelp, self).__init__(*a, **kw) + +class RulesPage(Templated): + pass diff --git a/r2/r2/public/static/brick.png b/r2/r2/public/static/brick.png new file mode 100644 index 000000000..f7e311128 Binary files /dev/null and b/r2/r2/public/static/brick.png differ diff --git a/r2/r2/public/static/css/reddit.css b/r2/r2/public/static/css/reddit.css index abb51ddfd..8755cf1f1 100755 --- a/r2/r2/public/static/css/reddit.css +++ b/r2/r2/public/static/css/reddit.css @@ -1991,6 +1991,92 @@ li.searchfacet { display: inline; } +body.rulespage-body { + overflow-y: scroll; +} + +.rulespage { + margin: 0 auto; + position: relative; + vertical-align: middle; + width: 600px; +} + +.rulespage h1 { + font-size: xx-large; + text-align: center; + margin-top: 20px; +} + +.rulespage .info { + font-size: larger; + padding-top: 10px; +} + +.rulespage .rule-list { + margin:10px; + padding:10px; + font-size: medium; +} + +.rulespage li { + border-bottom: 1px solid #ddd; + padding: 10px; + margin: 10px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.rulespage li.first-rule { + border-top: 1px solid #ddd; + padding-top: 18px; +} + +.rulespage li#minors { + padding-bottom: 18px; +} + +.rulespage .expander { + color: gray; + cursor: help; + padding: 10px; +} + +.rulespage .examples { + font-size: small; +} + +.rulespage li.example { + border: none; +} + +.rulespage li.good-example { + background: #bcf5a9; +} + +.rulespage li.bad-example { + background: #f5a9a9; +} + +.rulespage em { + font-weight: bold; +} + +.rulespage em.toggle { + font-weight: normal; +} + +.rulespage .info { + text-align: center; +} + +.rulespage img.bottom { + margin-top: 30px; + text-align: center; + padding-bottom: -40px; +} + .aboutpage { margin-right: 320px; } .aboutpage p { margin: 5px; } .aboutpage h1, .aboutpage h2 { margin: 10px;} diff --git a/r2/r2/templates/rulespage.html b/r2/r2/templates/rulespage.html new file mode 100644 index 000000000..9f516a7ae --- /dev/null +++ b/r2/r2/templates/rulespage.html @@ -0,0 +1,112 @@ +## The contents of this file are subject to the Common Public Attribution +## License Version 1.0. (the "License"); you may not use this file except in +## compliance with the License. You may obtain a copy of the License at +## http://code.reddit.com/LICENSE. The License is based on the Mozilla Public +## License Version 1.1, but Sections 14 and 15 have been added to cover use of +## software over a computer network and provide for limited attribution for the +## Original Developer. In addition, Exhibit A has been modified to be consistent +## with Exhibit B. +## +## Software distributed under the License is distributed on an "AS IS" basis, +## WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for +## the specific language governing rights and limitations under the License. +## +## The Original Code is Reddit. +## +## The Original Developer is the Initial Developer. The Initial Developer of +## the Original Code is CondeNet, Inc. +## +## All portions of the code written by CondeNet are Copyright (c) 2006-2010 +## CondeNet, Inc. All Rights Reserved. +################################################################################ +<%! +from r2.lib.template_helpers import static +%> + +<%def name="expando_start(phrase)"> +
+

[+] ${phrase}

+ +
+ + +<%def name="good_example(phrase, leadin='OK:')"> +
  • ${leadin} ${unsafe(phrase)}
  • + + +<%def name="bad_example(phrase, leadin='NOT OK:')"> +
  • ${leadin} ${unsafe(phrase)}
  • + + + + +
    +

    rules of reddit

    +
    +

    reddit is a pretty open platform and free speech place, but there are a few rules:

    +
      +
    1. +

      Don't spam.

      + ${expando_start("What is spam?")} + ${bad_example('Submitting only links to your blog or personal website.')} + ${good_example('Submitting links from a variety of sites and sources.')} + ${good_example('Submitting links from your own site, talking with redditors in the comments, and also submitting cool stuff from other sites.')} + ${bad_example('Posting the same comment repeatedly in multiple subreddits.')} + ${expando_end()} +
    2. +
    3. +

      Don't engage in vote cheating or manipulation.

      + ${expando_start("What does vote cheating look like?")} + ${bad_example('Buying upvotes from other people.')} + ${good_example('Sharing reddit links with your friends.')} + ${bad_example('Sharing only  your  reddit links with your friends — then asking them to register and upvote them.')} + ${bad_example('Creating submissions that start with "For every upvote I will ______," regardless of cause.')} + ${expando_end()} +
    4. +
    5. +

      Don't post personal information.

      + ${expando_start("What might be personal information?")} + ${bad_example("Posting a link to your friend's facebook profile.")} + ${good_example("Posting your senator's publicly available contact information")} + ${bad_example("Posting the full name, employer, or other real-life details of another redditor")} + ${good_example("Posting a link to a public page maintained by a celebrity.")} + ${expando_end()} +
    6. +
    7. +

      No child pornography or sexually suggestive content featuring minors.

      +
    8. +
    9. +

      Don't break the site or do anything that interferes with normal use of the site.

      + ${expando_start("Tell me more.")} + ${bad_example('Creating programs that request information more than once every 2 seconds or violate any of our other  API rules.')} + ${good_example('Responsibly  reporting security  issues to us.', leadin="AWESOME:")} + ${expando_end()} +
    10. + +
    +
    +
    +

    This last bit isn't a rule, but you should also be mindful of  reddiquette, an informal expression of reddit's community values as written by the community itself. Please abide by it the best you can.

    +
    +
    + +
    +