Title: MaintainingTheWebPages

<a name="MaintainingTheWebPages-HowtheArieswebsiteworks"></a>
# How the Aries web site works

The Aries site is built using CMS. To edit the site you must be an Aries committer, the 
ID and password are the same ones as you use for Aries SVN.

The easiest way to edit pages is to install the CMS bookmarklet as described [here](https://cms.apache.org/#bookmark)

Navigate to the web page you would like to edit and then click the CMS bookmarklet.

The steps in making a change to the site are:

  - Edit
  - Submit
  - Commit your changes
  - Check the 'staged' site
  - If the content looks good, publish the site

The Wiki syntax is called Markdown and is documented [here](http://www.freewisdom.org/projects/python-markdown/). Some extensions are installed in 
the CMS system (eg tables, syntax highlighting). 

More information on CMS is 
available [here](http://wiki.apache.org/general/ApacheCms2010)

# Making major changes
Because the site is all in SVN its possible to check it out, make and test changes locally and then check in again much as you woudl with code changes.
To do this you will need:

  - A local copy of the cms build tools
  - A local setup of Apache

First, checkout the site , like this:

    svn co https://svn.apache.org/repos/asf/aries/site/trunk/ site


## To build the site using the build tools.

First check the cms build tools out of SVN: 

    svn co https://svn.apache.org/repos/infra/websites/cms/build/ buildtools

To run the build_site.pl script you will need to install the Python version 
of Markup. The instructions for finding and installing Python pre-reqs are given [here](http://wiki.apache.org/general/ApacheCMSFAQ)

Then to build the site use this command:

perl build_site.pl --source-base /path/to/newsite/trunk/ --target-base /path/to/output/

which will create *.html in /path/to/output/content

## Check the site on a local server.

Use a vhost to check the site. On a Mac this means adding the following stanza to /etc/apache2/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/Users/zoe/Sites/zaries/www"
    ServerName zaries
    ErrorLog "/Users/zoe/Sites/zaries/error.log"
    CustomLog "/Users/zoe/Sites/zaries/access.log" custom

    LogLevel debug
</VirtualHost>

To test the site,  move it like this:

mv /path/to/output/content /Users/zoe/Sites/zaries/www

Then navigate to http://zaries in a browser.

#Add menuitem 
Check out the site by using 
svn co https://svn.apache.org/repos/asf/aries/site/trunk/ site

update the file under templates/navigation.mdtext

check in the changes by using svn commit

The following steps may not needed if the changes were displayed ok.

Navigate to a lower level page in Apache Aries site and click the CMS bookmarklet.

Check the staging page to verify the menuitem is displayed correct. 

Publish the site.


