Skip to content
This repository
Browse code

Merge branch 'develop' of git://github.com/stephenmuss/django-cms int…

…o stephenmuss-develop
  • Loading branch information...
commit 41edc6af1c0329fe638a376fab1033c365da2b49 2 parents 84f1212 + b17d235
Jonas Obrist authored June 28, 2012
8  docs/advanced/cli.rst
Source Rendered
@@ -33,7 +33,7 @@ Plugin and apphook management commands
33 33
 ``cms uninstall``
34 34
 =================
35 35
 
36  
-The ``uninstall`` subcommand can be used to make an uninstallation of a CMS
  36
+The ``uninstall`` subcommand can be used to make uninstalling a CMS
37 37
 Plugin or an apphook easier.
38 38
 
39 39
 It has two subcommands:
@@ -41,13 +41,13 @@ It has two subcommands:
41 41
 * ``cms uninstall plugins <plugin name> [<plugin name 2> [...]]`` uninstalls
42 42
   one or several plugins by **removing** them from all pages where they are
43 43
   used. Note that the plugin name should be the name of the class that is
44  
-  registered to the django CMS. If you are unsure about the plugin name, use
  44
+  registered in the django CMS. If you are unsure about the plugin name, use
45 45
   the :ref:`cms-list-command` to see a list of installed plugins.
46 46
 * ``cms uninstall apphooks <apphook name> [<apphook name 2> [...]]`` uninstalls
47 47
   one or several apphooks by **removing** them from all pages where they are
48 48
   used. Note that the apphook name should be the name of the class that is
49  
-  registered to the django CMS. If you are unsure about the apphook name, use
50  
-  the :ref:`cms-list-command` to see a list of installed apphook.
  49
+  registered in the django CMS. If you are unsure about the apphook name, use
  50
+  the :ref:`cms-list-command` to see a list of installed apphooks.
51 51
 
52 52
 .. warning::
53 53
 
10  docs/advanced/i18n.rst
Source Rendered
@@ -74,7 +74,7 @@ In the view pass the :meth:`get_absolute_url` method to the
74 74
         set_language_changer(request, item.get_absolute_url)
75 75
         # ...
76 76
 
77  
-This allows the language chooser to have another URL then the current one.
  77
+This allows the language chooser to have another URL than the current one.
78 78
 If the current URL is not handled by the CMS and no ``set_language_changer``
79 79
 function is provided it will take the exact same URL as the current one and
80 80
 will only change the language prefix.
@@ -131,7 +131,7 @@ If you put :setting:`CMS_HIDE_UNTRANSLATED` to ``False`` in your
131 131
 ``settings.py`` all pages will be displayed in all  languages even if they are
132 132
 not translated yet.
133 133
 
134  
-If :setting:`CMS_HIDE_UNTRANSLATED`  is ``True`` is in your ``settings.py``
135  
-and you are on a page that hasn't got a english translation yet and you view the
136  
-german version then the language chooser will redirect to ``/``. The same goes
137  
-for urls that are not handled by the cms and display a language chooser.
  134
+If :setting:`CMS_HIDE_UNTRANSLATED`  is ``True`` in your ``settings.py``
  135
+and you are on a page that doesn't yet have an English translatio and you view the
  136
+Ferman version then the language chooser will redirect to ``/``. The same goes
  137
+for urls that are not handled by the cms and display a language chooser.
26  docs/advanced/templatetags.rst
Source Rendered
@@ -4,7 +4,7 @@ Template Tags
4 4
 
5 5
 .. highlightlang:: html+django
6 6
 
7  
-To use any of the following templatetags you need to load them first at the
  7
+To use any of the following templatetags you first need to load them at the
8 8
 top of your template::
9 9
 
10 10
     {% load cms_tags menu_tags %}
@@ -29,7 +29,7 @@ Example::
29 29
 If you want additional content to be displayed in case the placeholder is
30 30
 empty, use the ``or`` argument and an additional ``{% endplaceholder %}``
31 31
 closing tag. Everything between ``{% placeholder "..." or %}`` and ``{%
32  
-endplaceholder %}`` is rendered instead if the placeholder has no plugins or
  32
+endplaceholder %}`` is rendered in the event that the placeholder has no plugins or
33 33
 the plugins do not generate any output.
34 34
 
35 35
 Example::
@@ -48,7 +48,7 @@ same name on parent pages, simply pass the ``inherit`` argument::
48 48
 
49 49
     {% placeholder "content" inherit %}
50 50
 
51  
-This will walk the page tree up till the root page and will show the first
  51
+This will walk up the page tree up until the root page and will show the first
52 52
 placeholder it can find with content.
53 53
 
54 54
 It's also possible to combine this with the ``or`` argument to show an
@@ -111,7 +111,7 @@ that ``reverse_id`` with the appropriate templatetags::
111 111
 
112 112
 If you are referring to a page `relative` to the current page, you'll probably
113 113
 have to use a numeric page ID or a page object. For instance, if you want the
114  
-content of the parent page display on the current page, you can use::
  114
+content of the parent page to display on the current page, you can use::
115 115
 
116 116
     {% show_placeholder "content" request.current_page.parent_id %}
117 117
 
@@ -208,9 +208,9 @@ four optional parameters: ``start_level``, ``end_level``, ``extra_inactive``,
208 208
 and ``extra_active``.
209 209
 
210 210
 The first two parameters, ``start_level`` (default=0) and ``end_level``
211  
-(default=100) specify from what level to which level should the navigation be
212  
-rendered. If you have a home as a root node and don't want to display home you
213  
-can render the navigation only after level 1.
  211
+(default=100) specify from which level the navigation shoud be rendered
  212
+and at which level it should stop. If you have home as a root node and don't
  213
+want to display home you can render the navigation only after level 1.
214 214
 
215 215
 The third parameter, ``extra_inactive`` (default=0), specifies how many levels
216 216
 of navigation should be displayed if a node is not a direct ancestor or
@@ -278,7 +278,7 @@ show_sub_menu
278 278
 *************
279 279
 
280 280
 Displays the sub menu of the current page (as a nested list).
281  
-Takes one argument that specifies how many levels deep should the submenu be
  281
+Takes one argument that specifies how many levels deep the submenu should be
282 282
 displayed. The template can be found at ``cms/sub_menu.html``::
283 283
 
284 284
     <ul>
@@ -345,7 +345,7 @@ Returns the url of the current page in an other language::
345 345
     {% page_language_url en %}
346 346
 
347 347
 If the current url has no cms-page and is handled by a navigation extender and
348  
-the url changes based on the language: You will need to set a language_changer
  348
+the url changes based on the language, you will need to set a language_changer
349 349
 function with the set_language_changer function in cms.utils.
350 350
 
351 351
 For more information, see :doc:`i18n`.
@@ -370,8 +370,8 @@ or with custom template::
370 370
     
371 371
 The language_chooser has three different modes in which it will display the
372 372
 languages you can choose from: "raw" (default), "native", "current" and "short".
373  
-It can be passed as last argument to the ``language_chooser tag`` as a string.
374  
-In "raw" mode, the language will be displayed like it's verbose name in the
  373
+It can be passed as the last argument to the ``language_chooser tag`` as a string.
  374
+In "raw" mode, the language will be displayed like its verbose name in the
375 375
 settings. In "native" mode the languages are displayed in their actual language
376 376
 (eg. German will be displayed "Deutsch", Japanese as "日本語" etc). In "current"
377 377
 mode the languages are translated into the current language the user is seeing
@@ -379,7 +379,7 @@ the site in (eg. if the site is displayed in German, Japanese will be displayed
379 379
 as "Japanisch"). "Short" mode takes the language code (eg. "en") to display.
380 380
 
381 381
 If the current url has no cms-page and is handled by a navigation extender and
382  
-the url changes based on the language: You will need to set a language_changer
  382
+the url changes based on the language, you will need to set a language_changer
383 383
 function with the set_language_changer function in menus.utils.
384 384
 
385 385
 For more information, see :doc:`i18n`.
@@ -390,7 +390,7 @@ For more information, see :doc:`i18n`.
390 390
 cms_toolbar
391 391
 ***********
392 392
 
393  
-The ``cms_toolbar`` templatetag will add the needed css and javascript to the
  393
+The ``cms_toolbar`` templatetag will add the required css and javascript to the
394 394
 sekizai blocks in the base template. The templatetag has to be placed after the
395 395
 ``<body>`` tag and before any ``{% cms_placeholder %}`` occurrences within your HTML.
396 396
 
14  docs/concepts/menu_system.rst
Source Rendered
@@ -15,9 +15,9 @@ What they operate on is a list of menu nodes, that gets passed around the menu s
15 15
 
16 16
 The main active parts of the menu system are menu *generators* and *modifiers*.
17 17
 
18  
-Some of these parts are supplied with the menus application. Some come from from other applications (from the cms application in django CMS, for example, or some other application entirely).
  18
+Some of these parts are supplied with the menus application. Some come from other applications (from the cms application in django CMS, for example, or some other application entirely).
19 19
 
20  
-All these active parts need to be registered with the menu system.
  20
+All these active parts need to be registered within the menu system.
21 21
 
22 22
 Then, when the time comes to build a menu, the system will ask all the registered menu generators and modifiers to get to work on it.
23 23
 
@@ -42,13 +42,13 @@ Modifiers
42 42
 
43 43
 A modifier examines the nodes that have been assembled, and modifies them according to its requirements (adding or removing them, or manipulating their attributes, as it sees fit).
44 44
 
45  
-One important one in cms (:py:class:`cms.menu.SoftRootCutter`) removes the nodes that are no longer required when a soft root is encountered.
  45
+An important one in cms (:py:class:`cms.menu.SoftRootCutter`) removes the nodes that are no longer required when a soft root is encountered.
46 46
 
47 47
 These classes are subclasses of :py:class:`menus.base.Modifier`. Examples are :py:class:`cms.menu.NavExtender` and :py:class:`cms.menu.SoftRootCutter`.
48 48
 
49 49
 In order to use a modifier, its :py:meth:`modify()` method must be called.
50  
-            
51  
-Note that each Modifer's :py:meth:`modify()` method can be called *twice*, before and after the menu has been trimmed.
  50
+
  51
+Note that each Modifier's :py:meth:`modify()` method can be called *twice*, before and after the menu has been trimmed.
52 52
 
53 53
 For example when using the {% show_menu %} templatetag, it's called: 
54 54
 
@@ -101,7 +101,7 @@ Don't forget that show_menu recurses - so it will do *all* of the below for *eac
101 101
             * :py:meth:`menus.menu_pool.MenuPool.apply_modifiers()` 
102 102
                 * :py:meth:`menus.menu_pool.MenuPool._mark_selected()`
103 103
                 * loops over each node, comparing its URL with the request.path, and marks the best match as ``selected``
104  
-                * loops over the Modifiers in self.modifiers calling each one's :py:meth:`modify(post_cut = False)`. The default Modifiers are:
  104
+                * loops over the Modifiers in self.modifiers calling each one's :py:meth:`modify(post_cut=False)`. The default Modifiers are:
105 105
                     * :py:class:`cms.menu.NavExtender`
106 106
                     * :py:class:`cms.menu.SoftRootCutter` removes all nodes below the appropriate soft root 
107 107
                     * :py:class:`menus.modifiers.Marker` loops over all nodes; finds selected, marks its ancestors, siblings and children
@@ -118,4 +118,4 @@ Don't forget that show_menu recurses - so it will do *all* of the below for *eac
118 118
             * :py:class:`menus.modifiers.AuthVisibility` 
119 119
             * :py:class:`menus.modifiers.Level`:
120 120
                 * :py:meth:`menus.modifiers.Level.mark_levels()` 
121  
-        * return the nodes to the context in the variable ``children``
  121
+        * return the nodes to the context in the variable ``children``
17  docs/concepts/multiple_languages.rst
Source Rendered
@@ -6,9 +6,9 @@ Serving content in multiple languages
6 6
 Basic concepts
7 7
 **************
8 8
 
9  
-django CMS has a sophisticated multilingual capability; it's able to serve
  9
+django CMS has a sophisticated multilingual capability. It is able to serve
10 10
 content in multiple languages, with fallbacks into other languages where
11  
-translations have not been provided, the facility for the user to set the
  11
+translations have not been provided. It also has the facility for the user to set the
12 12
 preferred language and so on.
13 13
 
14 14
 How django CMS determines the user's preferred language
@@ -47,14 +47,17 @@ examples.
47 47
 * the CMS is set up to provide content in English and Italian
48 48
 * :setting:`CMS_HIDE_UNTRANSLATED` is False
49 49
 * the page ``/some/page``
50  
-1. you visit ``/some/page``
  50
+
  51
+2. you visit ``/some/page``
51 52
 * the content is served in Italian
52 53
 * all link URLs (menus etc.) on that page will be prepended with /it
53 54
 * the page is served at ``/some/page`` (i.e. no redirection has taken place)
54  
-1. now you select one of those links ``/it/some/other/page`` that is available in Italian
  55
+
  56
+3. now you select one of those links ``/it/some/other/page`` that is available in Italian
55 57
 * Italian content is served
56 58
 * the page is served at ``/it/some/other/page``
57  
-1. now you select a link to a page **not** available in Italian
  59
+
  60
+4. now you select a link to a page **not** available in Italian
58 61
 * the link is still ``/it/some/other/page``
59 62
 * you'll get the English version, because Italian's not available
60 63
 * the path of the new page is ``/en/some/other/page`` (i.e. it has redirected)
@@ -96,9 +99,11 @@ Your language cookie should only ever get set or changed if:
96 99
 * your browser has asked for a language (but this can't override your choice above)
97 100
 
98 101
 If your cookie contains a particualar language (say, "it"):
  102
+
99 103
 * the content should be served in Italian wherever available
100 104
 * links on a page should be to ``/it`` content where available, and fallback where not
101 105
 
102 106
 When visiting a page only available in English:
  107
+
103 108
 * content will have to be in English
104  
-* links should be to Italian content where possible
  109
+* links should be to Italian content where possible
12  docs/contribution.rst
Source Rendered
@@ -3,7 +3,7 @@ Contributing to django CMS
3 3
 ##########################
4 4
 
5 5
 Like every open-source project, django CMS is always looking for motivated
6  
-individuals to contribute to it's source code.
  6
+individuals to contribute to its source code.
7 7
 However, to ensure the highest code quality and keep the repository nice and
8 8
 tidy, everybody has to follow a few rules (nothing major, I promise :) )
9 9
 
@@ -126,7 +126,7 @@ Contributing Documentation
126 126
 Perhaps considered "boring" by hard-core coders, documentation is sometimes even
127 127
 more important than code! This is what brings fresh blood to a project, and
128 128
 serves as a reference for old timers. On top of this, documentation is the one
129  
-area where less technical people can help most - you just need to write a
  129
+area where less technical people can help most - you just need to write
130 130
 semi-decent English. People need to understand you. We don't care about style or
131 131
 correctness.
132 132
 
@@ -134,9 +134,9 @@ Documentation should be:
134 134
 
135 135
 - We use `Sphinx`_/`restructuredText`_. So obviously this is the format you should
136 136
   use :) File extensions should be .rst.
137  
-- Written in English. We can discuss how it would bring more people to the
138  
-  project to have a Klingon translation or anything, but that's a problem we
139  
-  will ask ourselves when we already have a good documentation in English.
  137
+- Written in English. We could discuss how it would bring more people to the
  138
+  project by having a Klingon or some other translation, but that's a problem we
  139
+  will confront once we already have good documentation in English.
140 140
 - Accessible. You should assume the reader to be moderately familiar with
141 141
   Python and Django, but not anything else. Link to documentation of libraries
142 142
   you use, for example, even if they are "obvious" to you (South is the first
@@ -155,7 +155,7 @@ double cookie points. Seriously. You rock.
155 155
 Section style
156 156
 =============
157 157
 
158  
-We use Python documentation conventions fo section marking:
  158
+We use Python documentation conventions for section marking:
159 159
 
160 160
 * ``#`` with overline, for parts
161 161
 * ``*`` with overline, for chapters
8  docs/extending_cms/api_references.rst
Source Rendered
@@ -11,7 +11,7 @@ on the models and managers, because the direct API via models and managers is
11 11
 slightly counterintuitive for developers. Also the functions defined in this
12 12
 module do sanity checks on arguments.
13 13
     
14  
-.. warning:: None of the functions in this modules do any security or permission
  14
+.. warning:: None of the functions in this module does any security or permission
15 15
              checks. They verify their input values to be sane wherever
16 16
              possible, however permission checks should be implemented manually
17 17
              before calling any of these functions.
@@ -56,7 +56,7 @@ Functions and constants
56 56
     :param string redirect: URL redirect (only applicable if :setting:`CMS_REDIRECTS` is ``True``)
57 57
     :param string meta_description: Description of this page for SEO
58 58
     :param string meta_keywords: Keywords for this page for SEO
59  
-    :param created_by: User that creates this page
  59
+    :param created_by: User that is creating this page
60 60
     :type created_by: string of :class:`django.contrib.auth.models.User` instance
61 61
     :param parent: Parent page of this page
62 62
     :type parent: :class:`cms.models.pagemodel.Page` instance
@@ -65,7 +65,7 @@ Functions and constants
65 65
     :param boolean in_navigation: Whether this page should be in the navigation or not
66 66
     :param boolean soft_root: Whether this page is a softroot or not
67 67
     :param string reverse_id: Reverse ID of this page (for template tags)
68  
-    :param string navigation_extenders: Menu to attach to this page, must be a valid menu
  68
+    :param string navigation_extenders: Menu to attach to this page. Must be a valid menu
69 69
     :param boolean published: Whether this page should be published or not
70 70
     :param site: Site to put this page on
71 71
     :type site: :class:`django.contrib.sites.models.Site` instance
@@ -201,7 +201,7 @@ cms.plugin_base
201 201
         
202 202
     .. attribute:: module
203 203
 
204  
-        Will be group the plugin in the plugin editor. If module is ``None``,
  204
+        Will group the plugin in the plugin editor. If module is ``None``,
205 205
         plugin is grouped "Generic" group.
206 206
     
207 207
     .. attribute:: name
26  docs/extending_cms/app_integration.rst
Source Rendered
@@ -7,9 +7,9 @@ You have 5 ways of integrating your app:
7 7
 
8 8
 1. Menus
9 9
 
10  
-    Static extend the menu entries
  10
+    Statically extend the menu entries
11 11
 
12  
-2. AttachMenus
  12
+2. Attac hMenus
13 13
 
14 14
     Attach your menu to a page.
15 15
 
@@ -29,7 +29,7 @@ You have 5 ways of integrating your app:
29 29
 Menus
30 30
 *****
31 31
 
32  
-Create a menu.py in your application and write the following inside::
  32
+Create a ``menu.py`` in your application and write the following inside::
33 33
 
34 34
     from menus.base import Menu, NavigationNode
35 35
     from menus.menu_pool import menu_pool
@@ -58,7 +58,7 @@ The get_nodes function should return a list of
58 58
 
59 59
 - title
60 60
 
61  
-  What should the menu entry read?
  61
+  What the menu entry should read as
62 62
 
63 63
 - url,
64 64
 
@@ -70,7 +70,7 @@ The get_nodes function should return a list of
70 70
 
71 71
 - parent_id=None
72 72
 
73  
-  If this is a child of another node give here the id of the parent.
  73
+  If this is a child of another node supply the the id of the parent here.
74 74
 
75 75
 - parent_namespace=None
76 76
 
@@ -87,7 +87,7 @@ The get_nodes function should return a list of
87 87
 
88 88
   Whether or not this menu item should be visible.
89 89
 
90  
-Additionally, each :class:`NavigationNode` provides a number of methods, which are
  90
+Additionally, each :class:`NavigationNode` provides a number of methods which are
91 91
 detailed in the :class:`NavigationNode <menus.base.NavigationNode>` API references.
92 92
 
93 93
 ************
@@ -95,7 +95,7 @@ Attach Menus
95 95
 ************
96 96
 
97 97
 Classes that extend from :class:`menus.base.Menu` always get attached to the
98  
-root. But if you want the menu be attached to a CMS Page you can do that as
  98
+root. But if you want the menu to be attached to a CMS Page you can do that as
99 99
 well.
100 100
 
101 101
 Instead of extending from :class:`~menus.base.Menu` you need to extend from
@@ -157,7 +157,7 @@ App-Hooks
157 157
 With App-Hooks you can attach whole Django applications to pages. For example
158 158
 you have a news app and you want it attached to your news page.
159 159
 
160  
-To create an apphook create a ``cms_app.py`` in your application. And in there
  160
+To create an apphook create a ``cms_app.py`` in your application. And in it
161 161
 write the following::
162 162
 
163 163
     from cms.app_base import CMSApp
@@ -188,7 +188,7 @@ under "Application". Save the page.
188 188
     there is a cms management command called uninstall apphooks
189 189
     that removes the specified apphook(s) from all pages by name.
190 190
     eg. ``manage.py cms uninstall apphooks MyApphook``.
191  
-    To find all names for uninstallable apphooks there is a command for this aswell
  191
+    To find all names for uninstallable apphooks there is a command for this as well
192 192
     ``manage.py cms list apphooks``.
193 193
 
194 194
 If you attached the app to a page with the url ``/hello/world/`` and the app has
@@ -228,7 +228,7 @@ template:
228 228
 
229 229
     {% url app_main %}
230 230
 
231  
-If you want to access the same url but in a different language use a langauge
  231
+If you want to access the same url but in a different language use a language
232 232
 namespace:
233 233
 
234 234
 .. code-block:: html+django
@@ -293,7 +293,7 @@ We would now create a menu out of these categories::
293 293
                     category.get_absolute_url(),
294 294
                     category.pk,
295 295
                     category.parent_id
296  
-                )                
  296
+                )
297 297
                 nodes.append(node)
298 298
             return nodes
299 299
 
@@ -370,7 +370,7 @@ of :class:`~menus.base.NavigationNode` instances.
370 370
 
371 371
 - request
372 372
 
373  
-  A Django request instance. Maybe you want to modify based on sessions, or
  373
+  A Django request instance. You want to modify based on sessions, or
374 374
   user or permissions?
375 375
 
376 376
 - nodes
@@ -389,7 +389,7 @@ of :class:`~menus.base.NavigationNode` instances.
389 389
 - post_cut
390 390
 
391 391
   Every modifier is called two times. First on the whole tree. After that the
392  
-  tree gets cut. To only show the nodes that are shown in the current menu.
  392
+  tree gets cut to only show the nodes that are shown in the current menu.
393 393
   After the cut the modifiers are called again with the final tree. If this is
394 394
   the case ``post_cut`` is ``True``.
395 395
 
77  docs/extending_cms/custom_plugins.rst
Source Rendered
@@ -2,20 +2,19 @@
2 2
 Custom Plugins
3 3
 ##############
4 4
 
5  
-CMS Plugins are reusable content publishers, that can be inserted into django 
6  
-CMS pages (or indeed into any content that uses django CMS placeholders) in 
7  
-order to publish information automatically, without further intervention.
  5
+CMS Plugins are reusable content publishers that can be inserted into django 
  6
+CMS pages (or indeed into any content that uses django CMS placeholders). They
  7
+enable the publishing of information automatically, without further intervention.
8 8
 
9  
-This means that your published web content, whatever it is, can be kept 
10  
-instantly up-to-date at all times. 
  9
+This means that your published web content, whatever it is, is kept 
  10
+up-to-date at all times.
11 11
 
12 12
 It's like magic, but quicker.
13 13
 
14 14
 Unless you're lucky enough to discover that your needs can be met by the 
15 15
 built-in plugins, or by the many available 3rd-party plugins, you'll have 
16  
-to write your own custom CMS Plugin.
17  
-
18  
-Don't worry though, since writing a CMS Plugin is rather simple.
  16
+to write your own custom CMS Plugin. Don't worry though -
  17
+writing a CMS Plugin is rather simple.
19 18
 
20 19
 *************************************
21 20
 Why would you need to write a plugin?
@@ -25,7 +24,7 @@ A plugin is the most convenient way to integrate content from another Django
25 24
 app into a django CMS page.
26 25
 
27 26
 For example, suppose you're developing a site for a record company in django 
28  
-CMS. You might like to have on your site's home page a "Latest releases" box.
  27
+CMS. You might like to have a "Latest releases" box on your site's home page.
29 28
 
30 29
 Of course, you could every so often edit that page and update the information. 
31 30
 However, a sensible record company will manage its catalogue in Django too, 
@@ -51,13 +50,13 @@ A django CMS plugin is fundamentally composed of three things.
51 50
 * a plugin **publisher**, to do the automated work of deciding what to publish
52 51
 * a plugin **template**, to render the information into a web page
53 52
 
54  
-These correspond to the familiar with the Model-View-Template scheme:
  53
+These correspond to the familiar Model-View-Template scheme:
55 54
 
56 55
 * the plugin **model** to store its configuration
57 56
 * the plugin **view** that works out what needs to be displayed
58 57
 * the plugin **template** to render the information
59 58
 
60  
-And so to build your plugin, you'll make it out of: 
  59
+And so to build your plugin, you'll make it from: 
61 60
 
62 61
 * a subclass of :class:`cms.models.pluginmodel.CMSPlugin` to
63 62
   **store the configuration** for your plugin instances
@@ -78,15 +77,15 @@ An aside on models and configuration
78 77
 The plugin **model**, the subclass of :class:`cms.models.pluginmodel.CMSPlugin`,
79 78
 is actually optional.
80 79
 
81  
-You could have a plugin that didn't need to be configured, because it only
82  
-ever did one thing. 
  80
+You could have a plugin that doesn't need to be configured, because it only
  81
+ever does one thing. 
83 82
 
84  
-For example, you could have a plugin that always and only publishes information 
  83
+For example, you could have a plugin that only publishes information 
85 84
 about the top-selling record of the past seven days. Obviously, this wouldn't 
86  
-be very flexible - you wouldn't be able to use the same plugin to for the 
  85
+be very flexible - you wouldn't be able to use the same plugin for the 
87 86
 best-selling release of the last *month* instead.
88 87
 
89  
-Usually, you find that it is useful to be able to configure your plugin, and it
  88
+Usually, you find that it is useful to be able to configure your plugin, and this
90 89
 will require a model.
91 90
 
92 91
 
@@ -95,10 +94,10 @@ The simplest plugin
95 94
 *******************
96 95
 
97 96
 You may use ``python manage.py startapp`` to set up the basic layout for you
98  
-plugin app, alternatively, just add a file called ``cms_plugins.py`` to an
  97
+plugin app. Alternatively, just add a file called ``cms_plugins.py`` to an
99 98
 existing Django application.
100 99
 
101  
-In there, you place your plugins, in our example the following code::
  100
+In there, you place your plugins. For our example, include the following code::
102 101
 
103 102
     from cms.plugin_base import CMSPluginBase
104 103
     from cms.plugin_pool import plugin_pool
@@ -115,7 +114,7 @@ In there, you place your plugins, in our example the following code::
115 114
 
116 115
     plugin_pool.register_plugin(HelloPlugin)
117 116
 
118  
-Now we're almost done, all that's left is adding the template. Add the
  117
+Now we're almost done. All that's left is to add the template. Add the
119 118
 following into the root template directory in a file called
120 119
 ``hello_plugin.html``:
121 120
 
@@ -133,11 +132,11 @@ plugins.
133 132
 
134 133
 There are three required attributes on those classes:
135 134
 
136  
-* ``model``: The model you wish to use to store information about this plugin,
137  
-  if you do not require any special information, for example configuration, to
138  
-  be stored for your plugins, you may just use
139  
-  :class:`cms.models.pluginmodel.CMSPlugin`. We'll look at that model more
140  
-  closely in a bit.
  135
+* ``model``: The model you wish to use for storing information about this plugin.
  136
+  If you do not require any special information, for example configuration, to
  137
+  be stored for your plugins, you can simply use
  138
+  :class:`cms.models.pluginmodel.CMSPlugin` (We'll look at that model more
  139
+  closely in a bit).
141 140
 * ``name``: The name of your plugin as displayed in the admin. It is generally
142 141
   good practice to mark this string as translatable using
143 142
   :func:`django.utils.translation.ugettext_lazy`, however this is optional.
@@ -147,7 +146,7 @@ In addition to those three attributes, you must also define a
147 146
 :meth:`render` method on your subclasses. It is specifically this `render` 
148 147
 method that is the **view** for your plugin.
149 148
 
150  
-That `render` method takes three arguments:
  149
+The `render` method takes three arguments:
151 150
 
152 151
 * ``context``: The context with which the page is rendered.
153 152
 * ``instance``: The instance of your plugin that is rendered.
@@ -162,22 +161,22 @@ plugin template.
162 161
 Storing configuration
163 162
 *********************
164 163
 
165  
-In many cases, you want to store configuration for your plugin instances, for
166  
-example if you have a plugin that shows the latest blog posts, you might want
  164
+In many cases, you want to store configuration for your plugin instances. For
  165
+example, if you have a plugin that shows the latest blog posts, you might want
167 166
 to be able to choose the amount of entries shown. Another example would be a
168  
-gallery plugin, where you want to choose the pictures to show for the plugin.
  167
+gallery plugin where you want to choose the pictures to show for the plugin.
169 168
 
170 169
 To do so, you create a Django model by subclassing
171 170
 :class:`cms.models.pluginmodel.CMSPlugin` in the ``models.py`` of an installed
172 171
 application.
173 172
 
174  
-Let's improve our ``HelloPlugin`` from above by making it configurable what the
175  
-fallback name for non-authenticated users should be.
  173
+Let's improve our ``HelloPlugin`` from above by making its fallback name for
  174
+non-authenticated users configurable.
176 175
 
177  
-In our ``models.py`` we add following model::
  176
+In our ``models.py`` we add the following::
178 177
 
179 178
     from cms.models.pluginmodel import CMSPlugin
180  
-    
  179
+
181 180
     from django.db import models
182 181
 
183 182
     class Hello(CMSPlugin):
@@ -250,9 +249,9 @@ responsible for copying those if necessary whenever the CMS copies the plugin.
250 249
 
251 250
 To do this you can implement a method called
252 251
 :meth:`cms.models.pluginmodel.CMSPlugin.copy_relations` on your plugin
253  
-model which gets the **old** instance of the plugin as argument.
  252
+model which gets the **old** instance of the plugin as an argument.
254 253
 
255  
-Lets assume this is your plugin::
  254
+Let's assume this is your plugin::
256 255
 
257 256
     class ArticlePluginModel(CMSPlugin):
258 257
         title = models.CharField(max_length=50)
@@ -314,8 +313,8 @@ Sekizai style
314 313
 -------------
315 314
 
316 315
 To fully harness the power of django-sekizai, it is helpful to have a consistent
317  
-style on how to use it. Here is a set of conventions that should, but don't
318  
-necessarily need to, be followed:
  316
+style on how to use it. Here is a set of conventions that should be followed
  317
+(but don't necessarily need to be):
319 318
 
320 319
 * One bit per ``addtoblock``. Always include one external CSS or JS file per
321 320
   ``addtoblock`` or one snippet per ``addtoblock``. This is needed so
@@ -411,8 +410,8 @@ A plugin processor takes 4 arguments:
411 410
 Example
412 411
 -------
413 412
 
414  
-Suppose you want to put wrap each plugin in the main placeholder in a colored
415  
-box, but it would be too complicated to edit each individual plugin's template:
  413
+Suppose you want to wrap each plugin in the main placeholder in a colored
  414
+box but it would be too complicated to edit each individual plugin's template:
416 415
 
417 416
 In your ``settings.py``::
418 417
 
@@ -448,4 +447,4 @@ In your ``yourapp.cms_plugin_processors.py``::
448 447
 
449 448
 .. _Django admin documentation: http://docs.djangoproject.com/en/1.2/ref/contrib/admin/
450 449
 .. _django-sekizai: https://github.com/ojii/django-sekizai
451  
-.. _django-sekizai documentation: http://django-sekizai.readthedocs.org
  450
+.. _django-sekizai documentation: http://django-sekizai.readthedocs.org
44  docs/extending_cms/extending_examples.rst
Source Rendered
@@ -2,13 +2,13 @@
2 2
 Extending the CMS: Examples
3 3
 ###########################
4 4
 
5  
-From this part onwards, this tutorial assumes you have done the
6  
-`Django Tutorial`_ and we will show you how to integrate that poll app into the
7  
-django CMS. If a poll app is mentioned here, we mean the one you get when
8  
-finishing the `Django Tutorial`_. 
  5
+From this point onwards, this tutorial assumes you have done the
  6
+`Django Tutorial`_ and will show you how to integrate the tutorial's poll app into the
  7
+django CMS. Hereafter, if a poll app is mentioned, we are referring to the one you get
  8
+after completing the `Django Tutorial`_. 
9 9
 Also, make sure the poll app is in your :setting:`django:INSTALLED_APPS`.
10 10
 
11  
-We assume your main ``urls.py`` looks somewhat like this::
  11
+We assume your main ``urls.py`` looks something like this::
12 12
 
13 13
     from django.conf.urls.defaults import *
14 14
 
@@ -30,10 +30,10 @@ A Plugin is a small bit of content you can place on your pages.
30 30
 The Model
31 31
 =========
32 32
 
33  
-For our polling app we would like to have a small poll plugin, that shows one
  33
+For our polling app we would like to have a small poll plugin which shows a
34 34
 poll and let's the user vote.
35 35
 
36  
-In your poll application's ``models.py`` add the following model::
  36
+In your poll application's ``models.py`` add the following::
37 37
 
38 38
     from cms.models import CMSPlugin
39 39
     
@@ -58,8 +58,8 @@ The Plugin Class
58 58
 ================
59 59
 
60 60
 Now create a file ``cms_plugins.py`` in the same folder your ``models.py`` is
61  
-in, so following the `Django Tutorial`_, your polls app folder should look like
62  
-this now::
  61
+in. After having followed the `Django Tutorial`_ and adding this file your polls
  62
+app folder should look like this::
63 63
 
64 64
     polls/
65 65
         __init__.py
@@ -69,7 +69,7 @@ this now::
69 69
         views.py 
70 70
 
71 71
 
72  
-The plugin class is responsible to provide the django CMS with the necessary
  72
+The plugin class is responsible for providing the django CMS with the necessary
73 73
 information to render your Plugin.
74 74
 
75 75
 For our poll plugin, write following plugin class::
@@ -102,11 +102,11 @@ The Template
102 102
 
103 103
 You probably noticed the
104 104
 :attr:`render_template <cms.plugin_base.CMSPluginBase.render_template>`
105  
-attribute on that plugin class, for our plugin to work, that template must
  105
+attribute in the above plugin class. In order for our plugin to work, that template must
106 106
 exist and is responsible for rendering the plugin.
107 107
 
108 108
 
109  
-The template could look like this:
  109
+The template should look something like this:
110 110
 
111 111
 .. code-block:: html+django
112 112
 
@@ -131,14 +131,14 @@ The template could look like this:
131 131
 My First App (apphook)
132 132
 **********************
133 133
 
134  
-Right now, external apps are statically hooked into the main ``urls.py``, that
135  
-is not the preferred way in the django CMS. Ideally you attach your apps to CMS
  134
+Right now, external apps are statically hooked into the main ``urls.py``. This
  135
+is not the preferred approach in the django CMS. Ideally you attach your apps to CMS
136 136
 pages.
137 137
 
138 138
 For that purpose you write a :class:`CMSApp <cms.app_base.CMSApp>`. That is
139 139
 just a small class telling the CMS how to include that app.
140 140
 
141  
-CMS Apps live in a file called ``cms_app.py``, so go ahead and create that to
  141
+CMS Apps live in a file called ``cms_app.py``, so go ahead and create it to
142 142
 make your polls app look like this::
143 143
 
144 144
     polls/
@@ -182,8 +182,8 @@ Settings' tab and choose 'Polls App' for your 'Application'.
182 182
 
183 183
 .. |apphooks| image:: ../images/cmsapphook.png
184 184
 
185  
-Now for those changes to take effect, unfortunately you will have to restart
186  
-your server. So do that and now if you navigate to that CMS Page, you will see
  185
+Unfortunately, for these changes to take effect, you will have to restart
  186
+your server. So do that and afterwards if you navigate to that CMS Page, you will see
187 187
 your polls application.
188 188
 
189 189
 *************
@@ -191,10 +191,10 @@ My First Menu
191 191
 *************
192 192
 
193 193
 Now you might have noticed that the menu tree stops at the CMS Page you created
194  
-in the last step, so let's create a menu that shows a node for each poll you
  194
+in the last step. So let's create a menu that shows a node for each poll you
195 195
 have active.
196 196
 
197  
-For this we need a file called ``menu.py``, create it and check your polls app
  197
+For this we need a file called ``menu.py``. Create it and ensure your polls app
198 198
 looks like this::
199 199
 
200 200
     polls/
@@ -226,8 +226,8 @@ In your ``menu.py`` write::
226 226
             nodes = []
227 227
             for poll in Poll.objects.all():
228 228
                 # the menu tree consists of NavigationNode instances
229  
-                # Each NavigationNode takes a label as first argument, a URL as
230  
-                # second argument and a (for this tree) unique id as third
  229
+                # Each NavigationNode takes a label as its first argument, a URL as
  230
+                # its second argument and a (for this tree) unique id as its third
231 231
                 # argument.
232 232
                 node = NavigationNode(
233 233
                     poll.question,
@@ -239,7 +239,7 @@ In your ``menu.py`` write::
239 239
     menu_pool.register_menu(PollsMenu) # register the menu.
240 240
 
241 241
 
242  
-Now this menu alone doesn't do a whole lot yet, we have to attach it to the
  242
+At this point this menu alone doesn't do a whole lot. We have to attach it to the
243 243
 Apphook first.
244 244
 
245 245
 So open your ``cms_apps.py`` and write::
16  docs/extending_cms/placeholders.rst
Source Rendered
@@ -30,7 +30,7 @@ use::
30 30
         my_placeholder = PlaceholderField('placeholder_name')
31 31
         # your methods
32 32
 
33  
-The :class:`~cms.models.fields.PlaceholderField` takes a string as first
  33
+The :class:`~cms.models.fields.PlaceholderField` takes a string as its first
34 34
 argument which will be used to configure which plugins can be used in this
35 35
 placeholder. The configuration is the same as for placeholders in the CMS.
36 36
 
@@ -56,8 +56,8 @@ Now to render the placeholder in a template you use the
56 56
     {% render_placeholder mymodel_instance.my_placeholder "640" %}
57 57
 
58 58
 The :ttag:`render_placeholder` tag takes a
59  
-:class:`~cms.models.fields.PlaceholderField` instance as first argument and
60  
-optionally accepts a width parameter as second argument for context sensitive
  59
+:class:`~cms.models.fields.PlaceholderField` instance as its first argument and
  60
+optionally accepts a width parameter as its second argument for context sensitive
61 61
 plugins.
62 62
 
63 63
 
@@ -71,7 +71,7 @@ view and the back-end view.
71 71
 Using the front-end editor
72 72
 ==========================
73 73
 
74  
-Probably the most simple way to add content to a placeholder, simply visit the
  74
+Probably the simplest way to add content to a placeholder, simply visit the
75 75
 page displaying your model (where you put the :ttag:`render_placeholder` tag),
76 76
 then append ``?edit`` to the page's URL. This will make a top banner appear,
77 77
 and after switching the "Edit mode" button to "on", the banner will prompt you
@@ -85,15 +85,15 @@ You are now using the so-called *front-end edit mode*:
85 85
 .. |edit-banner| image:: ../images/edit-banner.png
86 86
 
87 87
 Once in Front-end editing mode, your placeholders should display a menu,
88  
-allowing you to add plugins to them: the following screen shot shows a
  88
+allowing you to add plugins to them. The following screen shot shows a
89 89
 default selection of plugins in an empty placeholder.
90 90
 
91 91
 |frontend-placeholder-add-plugin|
92 92
 
93 93
 .. |frontend-placeholder-add-plugin| image:: ../images/frontend-placeholder-add-plugin.png
94 94
 
95  
-Plugins are rendered at once, so you can have an idea what it will look like
96  
-`in fine`, but to view the final look of a plugin simply leave edit mode by
  95
+Plugins are rendered at once, so you can get an idea how it will look
  96
+`in fine`. However, to view the final look of a plugin simply leave edit mode by
97 97
 clicking the "Edit mode" button in the banner again.
98 98
 
99 99
 
@@ -104,7 +104,7 @@ Fieldsets
104 104
 There are some hard restrictions if you want to add custom fieldsets to an
105 105
 admin page with at least one :class:`~cms.models.fields.PlaceholderField`:
106 106
 
107  
-1. Every :class:`~cms.models.fields.PlaceholderField` **must** be in it's own
  107
+1. Every :class:`~cms.models.fields.PlaceholderField` **must** be in its own
108 108
    :attr:`fieldset <django.contrib.admin.ModelAdmin.fieldsets>`, one
109 109
    :class:`~cms.models.fields.PlaceholderField` per fieldset.
110 110
 2. You **must** include the following two classes: ``'plugin-holder'`` and
4  docs/extending_cms/searchdocs.rst
Source Rendered
@@ -2,8 +2,8 @@
2 2
 Search and the django CMS
3 3
 #########################
4 4
 
5  
-For powerful full-text search in with the django CMS, we suggest using
  5
+For powerful full-text search within the django CMS, we suggest using
6 6
 `Haystack`_ together with `django-cms-search`_.
7 7
 
8 8
 .. _Haystack: http://haystacksearch.org/
9  
-.. _django-cms-search: https://github.com/piquadrat/django-cms-search
  9
+.. _django-cms-search: https://github.com/piquadrat/django-cms-search
32  docs/getting_started/configuration.rst
Source Rendered
@@ -5,7 +5,7 @@ Configuration
5 5
 #############
6 6
 
7 7
 The django CMS has a lot of settings you can use to customize your installation
8  
-of the CMS to be exactly like you want it to be.
  8
+so that it is exactly as you'd like it to be.
9 9
 
10 10
 *****************
11 11
 Required Settings
@@ -37,8 +37,8 @@ Example::
37 37
 
38 38
 .. warning::
39 39
 
40  
-    django CMS internally relies on a number of templates to function correctly;
41  
-    these exist beneath ``cms`` within the templates directory. As such, it
  40
+    django CMS internally relies on a number of templates to function correctly.
  41
+    These exist beneath ``cms`` within the templates directory. As such, it
42 42
     is highly recommended you avoid using the same directory name for your own
43 43
     project templates.
44 44
 
@@ -121,7 +121,7 @@ internationalized.
121 121
 **limits**
122 122
 
123 123
 Limit the number of plugins that can be placed inside this placeholder.
124  
-Dictionary keys are plugin names; values are their respective limits. Special
  124
+Dictionary keys are plugin names and the values are their respective limits. Special
125 125
 case: "global" - Limit the absolute number of plugins in this placeholder
126 126
 regardless of type (takes precedence over the type-specific limits).
127 127
 
@@ -133,7 +133,7 @@ CMS_PLUGIN_CONTEXT_PROCESSORS
133 133
 Default: ``[]``
134 134
 
135 135
 A list of plugin context processors. Plugin context processors are callables
136  
-that modify all plugin's context before rendering. See
  136
+that modify all plugins' context before rendering. See
137 137
 :doc:`../extending_cms/custom_plugins` for more information.
138 138
 
139 139
 .. setting:: CMS_PLUGIN_PROCESSORS
@@ -185,10 +185,10 @@ Editor configuration
185 185
 
186 186
 The Wymeditor from :mod:`cms.plugins.text` plugin can take the same
187 187
 configuration as vanilla Wymeditor. Therefore you will need to learn 
188  
-how to configure that. The best way to understand this is to head 
189  
-over to `Wymeditor examples page 
  188
+how to configure that. The best thing to do is to head 
  189
+over to the `Wymeditor examples page 
190 190
 <http://files.wymeditor.org/wymeditor/examples/>`_
191  
-After understand how Wymeditor works. 
  191
+in order to understand how Wymeditor works. 
192 192
 
193 193
 The :mod:`cms.plugins.text` plugin exposes several variables named
194 194
 WYM_* that correspond to the wym configuration. The simplest 
@@ -271,8 +271,8 @@ CMS_SITE_LANGUAGES
271 271
 Default: ``{}``
272 272
 
273 273
 If you have more than one site and :setting:`CMS_LANGUAGES` differs between
274  
-the sites, you may want to fill this out so if you switch between the sites
275  
-in the admin you only get the languages available on this site.
  274
+the sites, you may want to fill this out so that when you switch between sites
  275
+in the admin you only get the languages available to that particular site.
276 276
 
277 277
 Example::
278 278
 
@@ -382,9 +382,9 @@ CMS_REDIRECTS
382 382
 
383 383
 Default: ``False``
384 384
 
385  
-This adds a new "redirect" field to the "advanced settings" tab of the page
  385
+This adds a new "redirect" field to the "advanced settings" tab of the page.
386 386
 
387  
-You can set a url here, which a visitor will be redirected to when the page is
  387
+You can set a url here to which visitors will be redirected when the page is
388 388
 accessed.
389 389
 
390 390
 Note: Don't use this too much. :mod:`django.contrib.redirects` is much more
@@ -446,7 +446,7 @@ page". But he will only see the users he created. The users he created can also
446 446
 only inherit the rights he has. So if he only has been granted the right to edit
447 447
 a certain page all users he creates can, in turn, only edit this page. Naturally
448 448
 he can limit the rights of the users he creates even further, allowing them to see
449  
-only a subset of the pages he's allowed access to, for example.
  449
+only a subset of the pages to which he is allowed access.
450 450
 
451 451
 .. setting:: CMS_PUBLIC_FOR
452 452
 
@@ -455,7 +455,7 @@ CMS_PUBLIC_FOR
455 455
 
456 456
 Default: ``all``
457 457
 
458  
-Decides if pages without any view restrictions are public by default, or staff
  458
+Decides if pages without any view restrictions are public by default or staff
459 459
 only. Possible values are ``all`` and ``staff``.
460 460
 
461 461
 .. setting:: CMS_MODERATOR
@@ -465,11 +465,11 @@ CMS_MODERATOR
465 465
 
466 466
 Default: ``False``
467 467
 
468  
-If set to true, gives you a new "moderation" column in the tree view.
  468
+If set to ``True``, gives you a new "moderation" column in the tree view.
469 469
 
470 470
 You can select to moderate pages or whole trees. If a page is under moderation
471 471
 you will receive an email if somebody changes a page and you will be asked to
472  
-approve the changes. Only after you approved the changes will they be updated
  472
+approve the changes. Only after you approve the changes will they be updated
473 473
 on the "live" site. If you make changes to a page you moderate yourself, you
474 474
 will need to approve it anyway. This allows you to change a lot of pages for
475 475
 a new version of the site, for example, and go live with all the changes at the
14  docs/getting_started/installation.rst
Source Rendered
@@ -2,7 +2,7 @@
2 2
 Installation
3 3
 ############
4 4
 
5  
-This document assumes you are familiar with Python and Django, and should
  5
+This document assumes you are familiar with Python and Django. It should
6 6
 outline the steps necessary for you to follow the :doc:`tutorial`.
7 7
 
8 8
 ************
@@ -51,7 +51,7 @@ On Ubuntu
51 51
 
52 52
     The instructions here install certain packages, such as PIL, Django, South
53 53
     and django CMS globally, which is not recommended. We recommend you use
54  
-    `virtualenv`_ to use instead. If you chose to do so, install Django,
  54
+    `virtualenv`_ instead. If you choose to do so, install Django,
55 55
     django CMS and South inside a virtualenv.
56 56
 
57 57
 If you're using Ubuntu (tested with 10.10), the following should get you
@@ -80,9 +80,9 @@ This will install PIL and your database's driver globally.
80 80
 You have now everything that is needed for you to follow the :doc:`tutorial`.
81 81
 
82 82
 .. note:: This will install Django version 1.3 for use with the CMS. While
83  
-          later versions of Django (such as 1.4) are know to work for some
  83
+          later versions of Django (such as 1.4) are known to work for some
84 84
           people, it is NOT recommended and will not be supported until further
85  
-          notice (and tests)
  85
+          notice (and tests).
86 86
 
87 87
 On Mac OSX
88 88
 ==========
@@ -101,12 +101,12 @@ Databases
101 101
 
102 102
 We recommend using `PostgreSQL`_ or `MySQL`_ with django CMS. Installing and
103 103
 maintaining database systems is outside the scope of this documentation, but is
104  
-very well documented on the system's respective websites.
  104
+very well documented on the systems' respective websites.
105 105
 
106 106
 To use django CMS efficiently, we recommend:
107 107
 
108  
-* Create a separate set of credentials for django CMS.
109  
-* Create a separate database for django CMS to use.
  108
+* Creating a separate set of credentials for django CMS.
  109
+* Creating a separate database for django CMS to use.
110 110
 
111 111
 .. _PostgreSQL: http://www.postgresql.org/
112 112
 .. _MySQL: http://www.mysql.com
10  docs/getting_started/navigation.rst
Source Rendered
@@ -32,9 +32,9 @@ template to your project or edit the one provided with django-cms.
32 32
 ``extra_inactive``, and ``extra_active``.
33 33
 
34 34
 The first two parameters, ``start_level`` (default=0) and ``end_level``
35  
-(default=100) specify from what level to which level should the navigation be
36  
-rendered.
37  
-If you have a home as a root node and don't want to display home you can render
  35
+(default=100) specify from which level the navigation shoud be rendered
  36
+and at which level it should stop.
  37
+If you have home as a root node and don't want to display home you can render
38 38
 the navigation only after level 1.
39 39
 
40 40
 The third parameter, ``extra_inactive`` (default=0), specifies how many levels
@@ -102,7 +102,7 @@ show_sub_menu
102 102
 *************
103 103
 
104 104
 Display the sub menu of the current page (as a nested list).
105  
-Takes one argument that specifies how many levels deep should the submenu be
  105
+Takes one argument that specifies how many levels deep the submenu should be
106 106
 displayed. The template can be found at ``menu/sub_menu.html``::
107 107
 
108 108
     <ul>
@@ -157,7 +157,7 @@ The level of the node. Starts at 0.
157 157
 
158 158
 The level of the node from the root node of the menu. Starts at 0.
159 159
 If your menu starts at level 1 or you have a "soft root" (described
160  
-in the next section) the first node still would have 0 as its `menu_level`.
  160
+in the next section) the first node would still have 0 as its `menu_level`.
161 161
 ::
162 162
 
163 163
     {{ node.get_absolute_url }}
22  docs/getting_started/plugin_reference.rst
Source Rendered
@@ -32,7 +32,7 @@ You might consider using `django-filer`_ with `django CMS plugin`_ and its
32 32
 
33 33
 .. warning::
34 34
 
35  
-    The builtin file plugin does only work with local storages. If you need
  35
+    The builtin file plugin only works with local storages. If you need
36 36
     more advanced solutions, please look at alternative file plugins for the
37 37
     django CMS, such as `django-filer`_.
38 38
 
@@ -97,7 +97,7 @@ setting in your project's ``settings.py`` file::
97 97
         # ...
98 98
     )
99 99
 
100  
-.. note:: As of version 2.2, the link plugin no longer verifies the existance of
  100
+.. note:: As of version 2.2, the link plugin no longer verifies the existence of
101 101
           link targets.
102 102
 
103 103
 
@@ -125,7 +125,7 @@ resize your pictures, you can find some on `Django Packages`_ and compare them
125 125
 there.
126 126
 
127 127
 In your project template directory create a folder called ``cms/plugins`` and
128  
-create a file called ``picture.html`` in there. Here is an example
  128
+in it create a file called ``picture.html``. Here is an example
129 129
 ``picture.html`` template using `easy-thumbnails`_:
130 130
 
131 131
 .. code-block:: html+django
@@ -170,7 +170,7 @@ running.
170 170
 Snippet
171 171
 *******
172 172
 
173  
-Renders a HTML snippet from a HTML file in your templates directories or a
  173
+Renders an HTML snippet from an HTML file in your templates directories or a
174 174
 snippet given via direct input.
175 175
 
176 176
 For installation be sure you have the following in the :setting:`django:INSTALLED_APPS`
@@ -274,7 +274,7 @@ Video
274 274
 *****
275 275
 
276 276
 Plays Video Files or Youtube / Vimeo Videos. Uses the `OSFlashVideoPlayer
277  
-<http://github.com/FlashJunior/OSFlashVideoPlayer>`_. If you upload a file use
  277
+<http://github.com/FlashJunior/OSFlashVideoPlayer>`_. When uploading videos use either
278 278
 .flv files or h264 encoded video files.
279 279
 
280 280
 For installation be sure you have the following in your project's
@@ -326,7 +326,7 @@ running.
326 326
 Twitter
327 327
 *******
328 328
 
329  
-Displays the last number of post of a twitter user.
  329
+Display's a number of a twitter user's latest posts.
330 330
 
331 331
 For installation be sure you have the following in your project's
332 332
 :setting:`django:INSTALLED_APPS` setting::
@@ -348,8 +348,8 @@ For installation be sure you have the following in your project's
348 348
 Inherit
349 349
 *******
350 350
 
351  
-Displays all plugins of another page or another language. Great if you need
352  
-always the same plugins on a lot of pages.
  351
+Displays all plugins of another page or another language. Great if you always
  </