# Silverpeas Project Web Site Generator of the main Web site of the open-source Silverpeas project, published at [www.silverpeas.org](https://www.silverpeas.org). This repository doesn't contain any source code of Silverpeas itself: it holds the content (documents, images, stylesheets, downloadable resources) and the Maven build required to generate and to deploy the community Web site of the project. ## Table of contents * [What this project is](#what-this-project-is) * [Requirements](#requirements) * [Building and previewing the site](#building-and-previewing-the-site) * [Publishing the site](#publishing-the-site) * [Project layout](#project-layout) * [Site structure and navigation](#site-structure-and-navigation) * [Version properties](#version-properties) * [Writing content](#writing-content) * [Continuous integration](#continuous-integration) * [Relationship with the other Silverpeas sites](#relationship-with-the-other-silverpeas-sites) * [Community](#community) * [License](#license) ## What this project is The site is generated by the [Maven Site Plugin](https://maven.apache.org/plugins/maven-site-plugin/) from [Doxia](https://maven.apache.org/doxia/) sources: * the pages are written in **XDoc** (`src/site/xdoc`) and in **FML** for the FAQ (`src/site/fml`); * the pages requiring the version numbers of Silverpeas are **Velocity templates** (`*.xml.vm`) interpolated at generation time; * the whole site is decorated by the [Fluido skin](https://maven.apache.org/skins/maven-fluido-skin/) as configured in `src/site/site.xml`; * the home page is a handcrafted XHTML page (`src/site/resources/index.html`) that doesn't use the skin, so that it can have its own layout; * the output is XHTML5, thanks to the `doxia-module-xhtml5` module declared in the POM. The Maven coordinates are `org.silverpeas:silverpeas-website` with a `pom` packaging: nothing is compiled, only documentation is produced. The parent POM is `org.silverpeas:silverpeas-project`, shared by all the projects of the Silverpeas organization. ## Requirements * **Java** and **Maven 3** (the exact minimal versions are the ones required by the `silverpeas-project` parent POM). * Access to the [Silverpeas Nexus repository](https://nexus3.silverpeas.org/repository/silverpeas) in order to resolve the parent POM; it is declared both as a repository and as a plugin repository in `pom.xml`, so no additional `settings.xml` is needed for a simple build. * For the publishing only: an SSH access to `www.silverpeas.org` (see [Publishing the site](#publishing-the-site)). ## Building and previewing the site Generate the site in `target/site`: ```bash mvn clean site ``` Then open `target/site/index.html` in a browser. Beware that the links declared in `src/site/site.xml` are **absolute** (`relativizeDecorationLinks` is set to `false`), because the generated site is merged on the server with the technical documentation of the other Silverpeas projects. As a consequence, when browsing the site locally from the file system, the navigation links point to the root of the file system and not to `target/site`. To browse the site as it will be published, serve it over HTTP; for instance: ```bash mvn clean site python3 -m http.server 8080 --directory target/site # then browse http://localhost:8080/index.html ``` ## Publishing the site The site is deployed by SCP to the Web server hosting `www.silverpeas.org`, as declared in the `distributionManagement` section of the POM (`scp://www.silverpeas.org/var/www/`): ```bash mvn clean site-deploy ``` This requires an SSH account on the server with a write access on `/var/www`. In practice, the publishing is performed by the CI (see [Continuous integration](#continuous-integration)), and a manual deployment should only be a fallback. ## Project layout ``` pom.xml Maven build: metadata, team, versions, site plugin Jenkinsfile CI pipeline publishing the site src/site/ ├── site.xml Site descriptor: skin, banner, menus, footer ├── fml/ │ ├── faq.fml General FAQ │ └── legal/ Licensing FAQ ├── xdoc/ │ ├── intro.xml About Silverpeas │ ├── screenshots.xml Screenshots gallery │ ├── releasenotes.xml Release notes index │ ├── support.xml Support offering │ ├── product/ Functional presentation of Silverpeas │ │ ├── features.xml Key features │ │ ├── applications.xml Overview of the applications │ │ ├── social_network.xml Social network │ │ ├── documentation_management.xml │ │ ├── content_management.xml │ │ ├── data_collection.xml │ │ ├── gallery.xml Pictures management │ │ ├── knowledge_management.xml │ │ └── project_documentation.xml │ ├── installation/ Installation guides (Velocity templates) │ │ ├── index.xml.vm Entry point of the installation guides │ │ ├── installationV6.xml.vm Installation of Silverpeas 6 │ │ ├── izpack.xml.vm Installation with the IzPack installer │ │ ├── cloud.xml.vm Silverpeas in the Cloud (Docker) │ │ └── webdav.xml.vm Online edition of documents (WebDAV) │ ├── configuration/ Configuration tips │ │ ├── ldap.xml LDAP synchronization │ │ └── proxy.xml Reverse-proxy setup │ ├── dev/ For contributors │ │ ├── collaboration.xml How to contribute │ │ ├── quality.xml Code quality rules │ │ └── ldap_testing.xml Testing the LDAP code │ └── legal/ │ ├── licensing_gnu_affero.xml AGPL licensing │ ├── floss_exception.xml Silverpeas FLOSS exception │ └── trademark.xml Silverpeas trade mark └── resources/ Copied as-is into the generated site ├── index.html Home page (standalone XHTML, filtered by Maven) ├── css/, js/, font/, images/ Assets of the site and of the home page ├── legal/ License texts (AGPL, FLOSS exception) ├── releases/ Release notes of the past versions, as PDF ├── xsd/ XML schemas published for the integrators │ ├── component.xsd Descriptor of a Silverpeas application │ ├── processModel.xsd Workflow process model │ └── migration.xsd Data migration descriptor └── opendj-silverpeas.ldif Sample LDAP directory for testing ``` Some pages of the menu (`team.html`, `mailing-lists.html`, `issue-management.html`, `source-repository.html`, `ci-management.html`, `scm.html`) aren't written by hand: they are generated by the `maven-project-info-reports-plugin` from the metadata declared in the POM (`developers`, `contributors`, `mailingLists`, `issueManagement`, `scm`, `ciManagement`). Updating the team of the project is therefore done by editing `pom.xml`, not by editing a page. ## Site structure and navigation The navigation menus, the banner, the *powered by* logos, the GitHub ribbon and the footer are all declared in `src/site/site.xml`. Adding a page to the site means: 1. writing the document in `src/site/xdoc/...` (or `src/site/fml/...` for a FAQ); 2. declaring it in the relevant `