Documentation of how this web site is configured.

1.  Convention to classify wiki pages by page_type

By convention, each wiki page in the group Web/ should have a page text variable that indicates its primary purpose of that page:

VariableValueMeaningExample pages
page_typeweb"web" pageHome, News
 cmsStructural page etcSideBar

1.1  page_type=cms: Structurally important wiki pages

Wiki pages that are used to create the structure, or add functionality, to this web site is listed below. This category also includes documentation pages and test pages. Please note that most of them are tagged by having the variable page_type set to cms.

Desc: To be added..
Desc: Only exists to set the passwords for this group
Desc: To be added..
Desc: Defines the action links that are found e.g at the top of each page in this group
Desc: Sets how search results are presented
Desc: Defines the "menu area" on the side of the main content
Desc: Documents the web site's configuration and structure
Title: LyX website translation
Desc: Documents the translation status of the LyX web site
Desc: To be added..
Title: A modified title...
Desc: A page used for testing wiki markup etc
Desc: Test page with no contents, nor footers etc
Desc: Test showing flag icons and conditional statements
Desc: A page used for testing the google custom search markup etc
Desc: Default wiki home page of this group. This page is note used by the "webW pages

1.2  page_type=web: Web pages

Wiki pages that primarily comprise the content of the web site.

Title: More about LyX
Desc: Links with more information about LyX
Title: More about LyX (draft version)
Desc: Links with more information about LyX
Title: Additional software
Desc: To be added..
Title: Blanket permission
Desc: List people that have given permission to license their contributions to the LyX project
Desc: List of contributors to the LyX project
Title: Developer resources
Desc: To be added..
Desc: About the development of LyX
Desc: To be added..
Title: Development FAQ
Desc: FAQ from developer newcomers
Desc: How to donate to the LyX project and the development of specific LyX features
Desc: Download page for the LyX application, both source code and binaries.
Desc: About the features of LyX
Title: Getting involved
Desc: How to get involved in LyX development
Title: LyX – The Document Processor
Desc: The main page of the weg page, ie. the home page
Title: LyX – The Document Processor
Desc: To be added..
Title: How to use Git
Title: How to use svn
Desc: To be added..
Title: Internationalization Status
Desc: Translation status of the stable branch
Title: Internationalization Status (Development Version)
Desc: Translation status of the devel branch
Desc: To be added..
Title: Mailing Lists
Desc: About mailing lists
Title: How to mirror LyX sites
Desc: Instructions on how to mirror LyX sites.
Desc: Page that displays the latest LyX news
Title: Other languages
Desc: LyX in other languages than English
Title: Press about LyX
Desc: To be added..
Title: News and Roadmap
Desc: To be added..
Desc: To be added..
Title: Site map
Desc: Site map
Desc: How to translate LyX
Title: Translation hints
Desc: Translation hints. John Weiss' web page from the original site ported to the new site by Christian
Title: Versioning system
Desc: LyX's versioning system
Title: Visual tour
Desc: To be added..
Title: LyX Graphical Tour
Desc: To be added..
Title: LGT (2/5) — More text
Desc: To be added..
Title: LGT (3/5) — Figures and Tables
Desc: To be added..
Title: LGT (4/5) — Math editor
Desc: To be added..
Title: LGT (5/5) — Finishing up
Desc: To be added..
Title: What about KLyX?
Desc: Description of the obsolete KLyX-project
Title: What is LyX?
Desc: What LyX is.

1.3  page_type=: Pages with page_type not set

Pages that do not have the page text variable "cms_page" set to anything (all pages should ideally have page_type set):

Title: LyX press release version 1.0.0
Desc: Copy of old press release (was about/LyX_1.0_PR.html)

2.  Translation of this web site

Apparantly we do translate pages of this web site... we'll see how well we manage to actually keep translations up to date.

2.1  Structural aspects related to translated pages


  • The (English) web pages reside in a group called 'Web'. In other words, the real name of this page is actually 'Web.SiteDocumentation'. Please note that the full name can be used when referring to a page, so both these link works:
    Note: Eventually the group 'Web' should be renamed to 'WebEn' for consistency.

Translated pages:

  • Pages with translations of the English pages should be kept in separate groups, with one group for each language. For instance, a Hungarian translation should be kept in the group 'WebHu/', whereas a German translation should be kept in the group 'WebDe/'.
    See the list of country codes to figure out how to name a group.
  • Translated pages are listed on the page SiteTranslation. This page should also list the translator(s) of each language.
  • Translated pages should use the directive (:title ... :) to set a translated title of the page.
  • Once there is a translation, the author should probably be listed in the page Credits.
  • Translated pages should keep their original English name. In other words, the Hungarian translation of e.g. Web.Home should be in the page WebHu.Home.
  • Primarly only translate pages that are of the type 'web', e.g. do not translate this page which is of the type 'cms'. The type of page should be seen at the beginning of the source of the page. There are some exceptions of pages that do need to be translated, they are listed below:
    • SideBar — this controls the content shown in the sidebar to the left.
    • ?
  • Update the page Web.OtherLanguages to reflect the newly translated language.
  • Update the page Web.SiteTranslation so that it lists the translated pages for the newly translated language.
Particular pages not necessary to translate

You do not need to translate the following "regular" pages:

Special pages

  • Web.GroupHeader - this page defines some "styles", e.g. 'rnote' which is used e.g. on the page I18n for the text that's only shown to readers that are logged in. A corresponding page should be created in the new group, where the new page should only include Web.GroupHeader. See WebDe.GroupHeader for an example.

2.2  The language flags

The language flags are placed at the top through a page in each group called 'PageActions'.

For now the policy is to only enable this flag when the majority, or rather the most important pages, have been translated. The reason for this is that the mechanism with flags is a bit blunt. For instance, the German flag would go to a page in the German group with the same name as the current page, regardless if such a page exists or not.

When enabling the flag for a new translation, the following needs to be done as examplied for the spanish translation.

  • Determine the 'language' code for the translation ("es" for "spanish"), which matches the suffix of the name of the wiki group (i.e. WebEs).
  • Go to e.g. and retrieve the desired icon as an image file, i.e. en.png.
  • Add the flag image to <www-user> as follows <www-user>/images/lang_icons/Es.png. Please note the change of en.png to En.png. This might be used in the future for a more automatic detection of flag images based on the name of the wiki group (i.e. WebEs).
  • Verify that this new language icon is accessible by going to e.g. It might not be possible to browse the directory immediately, but it must be possible to the see the image when going directly to its URI.
  • Modify the special page Web.PageActions, by adding a line such as this:
    This is where in the future the code might become more automated, e.g. by automatically generating a line for each available translation of the current page.
    Also note that a part of the page Web.PageActions will be included by the PageActions-pages in each of the other wiki groups that have translated pages.
  • Finally copy the markup from a page PageActions, e.g. from WebHu.PageActions?action=source and use that to create a new page: WebEn.PageActions?action=edit.
    Please note that you should not copy the page Web.PageActions.

2.3  Translating the TOC:s or adding code specific to a translation

The markup use to create a table of content (TOC) uses a text and a javascript to allow the user to show/hide the TOC. In order to change this text, you need administrative access to the LyX server. For instance, to change these texts for the German translation, a file


should be created that sets a specific variable. Using this file, it is also possible to set the default text used for the toc. Currently the default is 'On this page' and this text can be overiden by using a markup like this: (:toc <new title>:).

When contacting an administrator to ask with help to create a file like the above, he needs to know the following things:

  • What text to use instead of 'hide'
  • What text to use instead of 'show'
  • (Optionally) What text to use as default instead of 'On this page...'

To the administrator: The file WebDe.php already exists and can be used as the base when creating a new file. See that file for comments.


The web site corresponds to the directory


on the computer, which is aliased as The files in that directory are automatically exported from the project www-user in the Subversion repository whenever a commit takes place.

The notation <www-user> will henceforth be used in several meanings:

  • The first part of a URI that points to a LyX web site, e.g. although it could also be a mirror site, e.g.
  • The directory associated with the root of the web site, e.g.

Hopefully the context will clarify the meaning and the difference will not be important as the web server is supposed to map e.g.

to the file path

Gateways or access paths to the LyX web site

There are several ways (URIs) or gateways to access the LyX web site. They differ in how they show web pages and what functionality that is allowed.
Standard gateway for normal users. By default pages appears as regular web pages. Automatically redirects to
Standard gateway for normal users.
Wiki gateway to web site for developers.

The scripts index.php are wrapper scripts that start the actual wiki engine, <www-user>/farm/pmwiki/pmwiki.php.

When starting, the wiki engine reads the following configuration scripts:

  • pmwiki/local/farmconfig.php
    This configuration script is common to all the gateways. Among other things, it defines passwords and sets the path to the directory <www-user>/farm/pub that contains world readable files such as CSS files and images.
  • config.php
    This configuration script is specific to the gateway. It's located in the same directory as the wrapper script (index.php).
Important files and directories
<www-user>/File path to
index.phpWrapper script of the wiki engine
config.phpConfiguration file for the main web pages
wiki.d/Directory with source of wiki pages,
referenced using an absolute path
<Group>.<Page>Example of source of wiki page
index.phpWrapper script of the wiki engine
config.phpConfiguration file for wiki/-gateway
farmconfig.phpConfiguration file for the wiki farm
LyX/LyX scripts and data for LyX web site
lyx.tmplTemplate for the skin
pmwiki.phpThe PmWiki wiki enginge
test/Directory structure for testing

3.1  Directories and files

/home/lyx/www/www-user/		- Automatically exported from SVN:www-user
|-- index.php			- wiki engine wrapper script
|-- config.php			- config file for web pages
|-- images/
|   |-- about/
|   '-- LGT/
|-- farm/
|   |-- farmconfig.php		= Farm configuration file
|   |-- farmmap.txt		= Inter-link prefixes for wikis in the farm
|   |
|   |-- pmwiki/			= $FarmD
|   |   |-- pmwiki.php
|   |   |-- cookbook -> ../cookbook
|   |   |-- docs/
|   |   |-- local/
|   |	|   |-- config.php	= Blocks acces to 'home' wiki
|   |   |   |-- farmconfig.php -> ../../farmconfig.php
|   |   |   '-- farmmap.txt -> ../../farmmap.txt
|   |   |-- pub -> ../pub	 
|   |   `-- scripts/
|   |
|   |-- cookbook/		= Custom scripts (recipes)
|   |   `-- LyX/		= Scripts specific for LyX
|   |
|   `-- pub/			- <- FarmPubDirUrl
|       |-- css/
|       |-- guiedit/
|       `-- skins/
|	    |-- <various-skins>/
|           |-- lyx/
|           |   `-- images/
|           `-- print/
|-- test/
|   |
|   ...
|-- wiki/			- 
|   |-- index.php
|   '-- config.php
`-- wiki.d/			- web page files are stored here

Location of source of web pages (page files)

The web/wiki pages are stored as separate files, each page in its own page. The default configuration of PmWiki is to look for a local directory called wiki.d/. However, in this setup the wiki engine is told that the page files are to be found in the directory with the absolute path


This is done in the file farm/farmconfig.php by setting the variable $WorkDir and then specify this as the location for storing page files. Note that '$WorkDir' is a link that you can click to see more details about this path variable.

Deployment and update procedure

The web site (wiki installation) was initially deployed using a svn checkout. Now, after a commit to the www-user repository, a 'post commit hook' is executed that does a svn update on the deployment directory.

In addition, note that when a web page is modified through the wiki interface, this results in a page that is changed in the directory wiki.d/. These modified files need to be manually committed from the deployment directory.

4.  Pages with some kind of password

Below is a list of pages with some kind of password attribute that is specific to that page:

See SiteAdmin.AuthList for the entire wiki.

5.  Recipes

5.1  In test installation

The following recipes are enabled by the farm installation, i.e. in farmconfig.php, for all wikis in the wiki farm.

The following recipes are enabled by the wiki installation, i.e. in config.php, on a per-wiki basis.

5.2  Custom scripts and recipes

in cookbook\LyX

  • blanket-permission.php - input: (generated by
  • credits.php - input: (generated by
  • i18n.php - input:
  • news.php - input:
  • paypal.php

6.  Special pages with generated content

These sections describes how to modify the content of the pages BlanketPermission, Credits, News and I18n which are generated automatically.

6.1  Blanket Permission

The text below is shown on the wiki page blanket permission when logged in with edit permissions.

To add people to the list below, check out <www-user> from the SVN repository. Then replace and commit the file:


Committing automatically deploys the file to the web server (it can take a few seconds).

Note that the file should be replaced by output from the script This script can be found in the current SVN trunk, and this is where actual changes should be done.

6.2  Credits

The text below is shown on the wiki page credits when logged in with edit permissions.

The information about credits is defined in the file


To add credits for someone, checkout the project <www-user> from SVN, replace the above file and commit the changes. Committing automatically deploys the file to the web server (it can take a few seconds).

Note that the file should be replaced by output from the script This script can be found in the current SVN trunk, and this is where actual changes should be done.

6.3  News

The text below is shown on the wiki page news when logged in with edit permissions.
News items (the headers of the most recent items) are also shown on the main page.

The information about news is currently defined in the file


To add a news item, modify the above file and commit the changes. Committing automatically deploys the file to the web server (it can take a few seconds).

6.4  I18n

The text below is shown on the wiki page I18n when logged in with edit permissions.

To update the information in the table below, check out <www-user> from the SVN repository. Then replace and commit the file:


Committing automatically deploys the file to the web server (it can take a few seconds).

Note that the file is automatically generated from the po files. To update the web site, issue make in the po/ directory of the lyx stable branch, and replace the file in <www-user> with the autogenerated file. Do not edit the file manually, and do not use the development branch!

The text below is shown on the wiki page I18n-trunk when logged in with edit permissions.

To update the information in the table below, check out <www-user> from the SVN repository. Then replace and commit the file:


Committing automatically deploys the file to the web server (it can take a few seconds).

Note that the file is automatically generated from the po files. To update the web site, issue make in the po/ directory of the lyx development branch, rename the resulting file from to and replace the file in <www-user> with the renamed file. Do not edit the file manually, and do not use the stable branch!

7.  Local pagelist template to list pages

This section defines a local pagelist template that is used to generate the lists of pages on this page.

* [[{=$FullName}|{=$Name}]] %rfloat%[-[[Edit->{=$FullName}?action=edit]]-]%%
(:if ! equal "{=$Name}" "{=$Title}":)-> [-''Title:''-] {=$Title}(:ifend:)
-> [-''Desc:''-] {=$:description}

8.  Local wiki styles defined in GroupHeader

The following wiki styles are defined in the group header:

note - for minor notes.
This is a note (created through %note% ... %%
important - for important notes and messages.

This is an important note

The line above was created with:
%important%This is an important note%%

An alternative:

An important note, over several lines. Usage:

@@rnote - for floating notes on the right side.

This text was created from an 'rnote'. Usage:


The markup [[<<]] is to cause a break, since the note is implemented using a float.

A more advanced example that only shows up when the viewer has permission to edit a page, i.e. when the person is logged in. First the wiki markup:

(:if auth edit:)
This text is only visible when logged in.

Then the result.

If you don't see anything above, it's because you are not logged in.

9.  Mapping old web pages to new locations

The sections below tabulate old web pages, and their corresponding new wiki pages. Ideally, all the old URIs should eventually map to a valid new page.

Note some of the .php-files might not actually be pages, and also that I might have forgotten some pages. Not all .txt-files are listed for instance.

Finally note that page names in the tables below that are shown in a special colour have been redirected somehow, even if only through manually created HTML-files. When marked with a another special colour, it means they're redirected through a mechanism that invokes the php-script <www-user>/redirect_to_old_pages.php. That's a temporary hackish solution, requiring the old .php-files to remain. When marked with another special colour, the script <www-user>oldpage.php?n=<old-page-name-or-path> is used.

9.1  Plan for re-mapping

Maybe use some patterns expressions on URIs and pass them along to a script that then redirects to the correct page?

Note: For now, Christian does some manual remapping by replaing e.g. news.php with HTML-code that does a redirect.

Here are the page URIs that we need to match:

And then there are patterns we need to match.

A wiki page could be used to store the data with regular expressions and target page, making it easy to do future redirects.

9.2 (incomplete - site_map.php missing)

Old pageNew pageComment
LyXWeb:/Homei.e. index.php
LyXWeb:site_map.php Needs to be created.

9.3 (done)

Old pageNew pageComment
LyXWeb:about/About LyXi.e. about/index.php
LyXWeb:about/klyx.php No equivalent; KLyX appears to be abandoned and not linked to.

9.4 Comment...

This directory stores announcement texts. Will not redirect it. Link to LyXWeb:announce.

Perhaps add an index.php or something that lists the announcements? Or redirect to a page that lists them using a special directive?
Old pageNew pageComment
LyXWeb:announce/N/Ano announce/index.php


Moved the .php-files to misc/LGT in case we need to look at them. Images have been moved to images/LGT. Now all redirected.

Old pageNew pageComment


Old pageNew pageComment
LyXWeb:internet/No equivalent; redirect to Homei.e. internet/index.php


None of the LDN was ported to the new site. Either this should be done, or all pages in this section should probably redirect to News. -Rex

Old pageNew pageComment
LyXWeb:news/ i.e. news/index.php
LyXWeb:news/<many>.php e.g. 20000217.php


Old pageNew pageComment
LyXWeb:download/Downloadi.e. download/index.php


Note: these pages all appear to not exist or be abandoned. -Rex

I agree, and removed them from SVN. I consider them dealt with. /Christian
Old pageNew pageComment
LyXWeb:feedback ? index.php ?

9.10 (devel/changetracking.php incomplete)

Old pageNew pageComment
LyXWeb:devel/Developmenti.e. index.php
LyXWeb:devel/changetracking.phpNo equivalentI (Rex) don't know if this feature is still used or if this page is relevant; either this page should be ported or the link should redirect to Home
LyXWeb:devel/mirror.phpMirrorPort this page
LyXWeb:devel/tasks.phpRoadMapObsolete, redirected to RoadMap

10.  Setting up a mirror site

Information on how to set up a mirror site will be placed on the page mirror.

This section should eventually contain instructions for setting up a mirror site of (the web pages).

11.  Upgrading the wiki engine

Note 2012-04-01 /CHR

The SVN server for the PmWiki repository didn't seem to be available, so I had to do it manually.

* Did SVN CI on mostly everything in www-user/ before I started the upgrade

* Created a .tgz with the current set of pmwiki/-files, currently
  at ~lyx/www/www-user/farm/pmwiki_before_upgrade_2012-04-01.tgz

* Manually downloaded the latest pmwiki.tgz and unzipped it in 
* I'll refer to the directory with the output as 'pmwiki-<xx>/
* Manually copied new files in 'pmwiki-<xx>' into farm/pmwiki/

Note end

Sometimes a new release of the wiki engine (PmWiki) is released and we want to upgrade. Below is the recommended procedure. It's a bit unusual due to our farm setup and use of Subversion.

These instructions assume that you do the upgrade on aussie.

# Go to your working directory
cd www-user/
# Update it, just in case
svn update
# Check that you don't have outstanding commits
svn status
# Get IP address of '', e.g
# (This is because of some bug in aussie)
# Set name of repository
# Export latest version of PmWiki from it's repository
# First the top level and then selected subdirectories
svn --non-recursive --force export $repo farm/pmwiki
d=docs        ; svn --force export $repo/$d farm/pmwiki/$d
d=scripts     ; svn --force export $repo/$d farm/pmwiki/$d
d=wikilib.d   ; svn --force export $repo/$d farm/pmwiki/$d
d=pub         ; svn --force export $repo/$d farm/$d
d=cookbook    ; svn --force export $repo/$d farm/$d
# Check what has been changed
svn status

Changed files in farm/pmwiki/wikilib.d:

  • Any files called 'Site*' should probably be added. These correspond to pages in the groups 'Site' and 'SiteAdmin'.
  • Any files called 'PmWiki.*' should have been ignored. They correspond to the PmWiki documentation and can be read online instead.
  • Any files called 'Main.*' can probably be ignored.
# Commit changes.
svn ci -m "Upgrading PmWiki engine."

Finally test that the web site still works.

Some test:

  • Go to Home
  • Login
    • Test that editing a page works
  • Logout
    • Test that it's not possible to edit a page

12.  Page variables

  • {$ScriptUrl} = http:

13.  Centralized management of download links

Since the download pages are translated (currently for two languages), the links on them may require update by their maintainer when a new package is released (tar.gz, or installers). This might cause that the links are pointing to earlier versions. The method described here, helps us to maintain the download links. An update of the central download page cause, that the links on the translated download pages will be updated as well.

This method is use the page variables. They can be used to insert text without a line brake into usual text or into links reference.

13.1  Used Variables

versiontextVersion number
targzurlurl to download tar.gz archive
tarxzurlurl to download tar.xz
windowsinstallerurlurl to download windows intaller
windowsinstallerfilenamefilename of the windows installer
stableurlurl to the stable directory
macosxinstallerurlurl to the Mac OS X installer
macosxinstallerfilenamefilename of the Mac OS X installer

13.2  Definition of the variables

The variables should be defined at beginning of the Main download page.

The text below is shown on the wiki page download when logged in with edit permissions.

When you need to update the version number or the download links on this page. Please check the variables here at beginning of this document in edit mode, and modify them accordingly.






13.3  Usage of the variables

On the download page and on the localised pages, the following syntax should be used to referring to the variables. The reference can be used in normal text or in url. Please copy-paste reference if unsure.










13.4  Relevant links and discussions

PmWiki pages:

Web pages: