ooo-build r13870 - in trunk: . bin/piece patches/dev300 src



Author: pmladek
Date: Wed Sep 10 21:05:45 2008
New Revision: 13870
URL: http://svn.gnome.org/viewvc/ooo-build?rev=13870&view=rev

Log:
2008-09-10  Petr Mladek  <pmladek suse cz>

	* patches/dev300/scripting-mailmerge-python-binary.diff:
	* patches/dev300/apply: fix path to the python binary in the
	  mailmerge.py script; /bin/python does not exists and breaks the
	  automatic rpm dependencies

	* src/main_transform.xsl: FIXME: it is part of the helpcontent2
	  sources but we need it in the common l10n-extras
	* bin/piece/sys-setup.in: add OO_PREFIX and OO_MANDIR; hmm, we should
	  merge it with ooo-build/setup one day soon

	* bin/piece/install-devel-helper:
	* bin/piece/file-list-artwork: 
	* bin/piece/file-list-l10n: allow to install this stuff noarch

	* bin/piece/file-list-calc:
	* bin/piece/file-list-base:
	* bin/piece/file-list-writer:
	* bin/piece/file-list-impress:
	* bin/piece/install-bootstrap:
	* bin/piece/desktop-support-app:
	* bin/piece/file-list-libs_core:
	* bin/piece/file-list-postprocess: add basic desktop integration



Added:
   trunk/bin/piece/desktop-support-app   (contents, props changed)
   trunk/bin/piece/file-list-artwork   (contents, props changed)
   trunk/bin/piece/file-list-base   (contents, props changed)
   trunk/bin/piece/file-list-calc   (contents, props changed)
   trunk/bin/piece/file-list-impress   (contents, props changed)
   trunk/bin/piece/install-devel-helper   (contents, props changed)
   trunk/patches/dev300/scripting-mailmerge-python-binary.diff
   trunk/src/main_transform.xsl
Modified:
   trunk/ChangeLog
   trunk/bin/piece/Makefile.am
   trunk/bin/piece/file-list-l10n
   trunk/bin/piece/file-list-libs_core
   trunk/bin/piece/file-list-postprocess
   trunk/bin/piece/file-list-writer
   trunk/bin/piece/install-bootstrap
   trunk/bin/piece/sys-setup.in
   trunk/patches/dev300/apply
   trunk/src/Makefile.am

Modified: trunk/bin/piece/Makefile.am
==============================================================================
--- trunk/bin/piece/Makefile.am	(original)
+++ trunk/bin/piece/Makefile.am	Wed Sep 10 21:05:45 2008
@@ -2,9 +2,11 @@
 	sys-setup.in \
 	unpack-l10n \
 	copyexcept \
+	desktop-support-app \
 	noulf noulfconv \
 	install-generic \
 	install-bootstrap \
+	install-devel-helper \
 	install-l10n-helper \
 	install-l10n-merged \
 	link-to-ooo-home \

Added: trunk/bin/piece/desktop-support-app
==============================================================================
--- (empty file)
+++ trunk/bin/piece/desktop-support-app	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,98 @@
+#!/bin/bash
+
+piece=$1
+ooo_build_tag=$2
+app=$3
+
+source $OO_TOOLSDIR/piece/sys-setup
+
+create_wrapper()
+{
+    mkdir -p $DESTDIR$OO_PREFIX/bin
+    cat <<EOT >$DESTDIR$OO_PREFIX/bin/$1
+#!/bin/sh
+$OO_INSTDIR/program/$2 $3 "\$@"
+EOT
+    chmod 755 $DESTDIR$OO_PREFIX/bin/$1
+    test -n "$DESTDIR" && echo "$OO_PREFIX/bin/$1" >>files-$piece.txt
+}
+
+create_man_link()
+{
+    mkdir -p $DESTDIR$OO_MANDIR/man1
+    echo ".so man1/openoffice.1" >| $DESTDIR$OO_MANDIR/man1/$1.1
+    gzip $DESTDIR$OO_MANDIR/man1/$1.1
+    test -n "$DESTDIR" && echo "$OO_MANDIR/man1/$1.1.gz" >>files-$piece.txt
+}
+
+install_man()
+{
+    mkdir -p $DESTDIR$OO_MANDIR/man1
+    man_page_in=$OO_TOOLSDIR/../man/$1.1.in
+    # use the distro specific man page if available
+    if test -f $OO_TOOLSDIR/../man/$1.1_${DISTRO%%-*}.in ; then
+        man_page_in=$OO_TOOLSDIR/../man/$1.1_${DISTRO%%-*}.in
+    fi
+    sed -e "s|@BINSUFFIX@|$BINSUFFIX|g" $man_page_in \
+	>| "$DESTDIR$OO_MANDIR/man1/$1.1" || exit 1;
+    gzip $DESTDIR$OO_MANDIR/man1/$1.1
+    test -n "$DESTDIR" && echo "$OO_MANDIR/man1/$1.1.gz" >>files-$piece.txt
+}
+
+install_desktop_file()
+{
+    mkdir -p $DESTDIR/usr/share/applications
+    cp $OO_TOOLSDIR/../desktop/$1.desktop $DESTDIR/usr/share/applications || exit 1
+    test -n "$DESTDIR" && echo "/usr/share/applications/$1.desktop" >>files-$piece.txt
+}
+
+install_icon()
+{
+    icon_name=$1
+    icon_dir=/usr/share/icons/hicolor
+
+    for size in 16x16 22x22 24x24 32x32 48x48 scalable ; do
+	# note that the scalable directory includes .svg icons
+	file=$OO_TOOLSDIR/../desktop/$size/$icon_name.[ps][nv]g
+	filename=`basename $file`
+	target_dir="$icon_dir/$size/apps"
+	test -f $file || continue;
+	mkdir -p "$DESTDIR$target_dir"
+	cp $file "$DESTDIR$target_dir/$filename" || exit 1;
+	test -n "$DESTDIR" && echo "$target_dir/$filename" >>files-$piece.txt
+    done
+
+    # create symlink below share/pixmaps to keep the backward compatibility
+    file=$DESTDIR/$icon_dir/48x48/apps/$icon_name.png
+    if test -f $file ; then
+	filename=`basename $file`
+	pixmaps_dir=/usr/share/pixmaps
+	mkdir -p $DESTDIR$pixmaps_dir
+	ln -sf $icon_dir/48x48/apps/$filename $DESTDIR$pixmaps_dir
+	test -n "$DESTDIR" && echo "$pixmaps_dir/$filename" >>files-$piece.txt
+    fi
+}
+
+case "$app" in
+    "fromtemplate")
+	create_wrapper "oofromtemplate" "soffice" "slot:5500" || exit 1;
+	install_desktop_file template || exit 1;
+	install_icon ooo-gulls || exit 1;
+	;;
+    "unopkg")
+	create_wrapper unopkg unopkg "" || exit 1;
+	install_desktop_file ooo-extension-manager || exit 1;
+	install_man $app || exit 1;
+	;;
+    "ooffice")
+	create_wrapper ooffice soffice "" || exit 1;
+	create_man_link ooffice openoffice || exit 1;
+	install_man openoffice || exit 1;
+	;;
+    *)
+	create_wrapper oo$app soffice "-$app" || exit 1;
+	create_man_link oo${app} openoffice || exit 1;
+	install_desktop_file $app || exit 1;
+	install_icon ooo-$app || exit 1;
+	;;
+esac

Added: trunk/bin/piece/file-list-artwork
==============================================================================
--- (empty file)
+++ trunk/bin/piece/file-list-artwork	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+piece=$1
+ooo_build_tag=$2
+
+source $OO_TOOLSDIR/piece/sys-setup
+
+# there is only the devel package
+
+# remove the CVS dirs
+find $DESTDIR$OO_SOLVERDIR -depth -type d -name CVS -exec rm -rf {} \;
+
+# move the stuff to /usr/share when enabled
+test "$OOO_BUILD_NOARCH" = 'YES' && $OO_TOOLSDIR/piece/install-devel-helper $piece $ooo_build_tag

Added: trunk/bin/piece/file-list-base
==============================================================================
--- (empty file)
+++ trunk/bin/piece/file-list-base	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+piece=$1
+ooo_build_tag=$2
+
+source $OO_TOOLSDIR/piece/sys-setup
+
+$OO_TOOLSDIR/piece/merge-file-lists "files-$piece.txt" $DESTDIR/gid_*
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "$piece"

Added: trunk/bin/piece/file-list-calc
==============================================================================
--- (empty file)
+++ trunk/bin/piece/file-list-calc	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+piece=$1
+ooo_build_tag=$2
+
+source $OO_TOOLSDIR/piece/sys-setup
+
+$OO_TOOLSDIR/piece/merge-file-lists "files-$piece.txt" $DESTDIR/gid_*
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "$piece"

Added: trunk/bin/piece/file-list-impress
==============================================================================
--- (empty file)
+++ trunk/bin/piece/file-list-impress	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+piece=$1
+ooo_build_tag=$2
+
+source $OO_TOOLSDIR/piece/sys-setup
+
+# impress
+$OO_TOOLSDIR/piece/merge-file-lists "files-$piece.txt" $DESTDIR/gid_*
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "$piece"
+
+# draw subpackage (heh, only desktop stuff)
+$OO_TOOLSDIR/piece/desktop-support-app "draw" "$ooo_build_tag" "draw"

Modified: trunk/bin/piece/file-list-l10n
==============================================================================
--- trunk/bin/piece/file-list-l10n	(original)
+++ trunk/bin/piece/file-list-l10n	Wed Sep 10 21:05:45 2008
@@ -7,6 +7,11 @@
 
 # generate the common file list
 $OO_TOOLSDIR/piece/merge-file-lists "files-$piece.txt" $DESTDIR/gid_*
+# install the common main_transform.xsl for the helpcontent
+mkdir -p $DESTDIR$OO_INSTDIR/basis3.0/help
+cp -a $OO_TOOLSDIR/../src/main_transform.xsl $DESTDIR$OO_INSTDIR/basis3.0/help
+echo "%dir $OO_INSTDIR/basis3.0/help" >>files-$piece.txt
+echo "$OO_INSTDIR/basis3.0/help/main_transform.xsl" >>files-$piece.txt
 
 # prune redundant files the scp2 likes to make for us
 remove_file "files-$piece.txt" "$OO_INSTDIR/basis-link"
@@ -15,24 +20,6 @@
 
 # move the stuff to /usr/share when enabled
 if test "$OOO_BUILD_NOARCH" = 'YES' ; then
-    # common stuff is easy
     $OO_TOOLSDIR/piece/install-l10n-helper $piece $ooo_build_tag "$DESTDIR" files-$piece.txt
-    # ugly hack to move solver to /usr/share
-    mv $DESTDIR$OO_INSTDIR/solver $DESTDIR$OO_INSTDIR_SHARE/solver
-    #
-    rm -f files-$piece-devel.txt
-    for dir in `find $DESTDIR$OO_INSTDIR_SHARE/solver -type d | sed "s|$DESTDIR||" | grep -v "$OO_INSTDIR_SHARE/solver/noarch"` ; do
-	echo "%dir $dir" >>files-$piece-devel.txt
-    done
-    find $DESTDIR$OO_INSTDIR_SHARE/solver -type f | sed "s|$DESTDIR||" | grep -v "$OO_INSTDIR_SHARE/solver/noarch" >>files-$piece-devel.txt
-    cp files-$piece-devel.txt $DESTDIR$OO_INSTDIR_SHARE/
-    echo "$OO_INSTDIR_SHARE/files-$piece-devel.txt" >>files-$piece-devel.txt
-    #
-    rm -f files-$piece-prebuilt.txt
-    for dir in `find $DESTDIR$OO_INSTDIR_SHARE/solver -type d | sed "s|$DESTDIR||" | grep "$OO_INSTDIR_SHARE/solver/noarch"` ; do
-	echo "%dir $dir" >>files-$piece-prebuilt.txt
-    done
-    find $DESTDIR$OO_INSTDIR_SHARE/solver -type f | sed "s|$DESTDIR||" | grep "$OO_INSTDIR_SHARE/solver/noarch" >>files-$piece-prebuilt.txt
-    cp files-$piece-prebuilt.txt $DESTDIR$OO_INSTDIR_SHARE/
-    echo "$OO_INSTDIR_SHARE/files-$piece-prebuilt.txt" >>files-$piece-prebuilt.txt
-fi    
+    $OO_TOOLSDIR/piece/install-devel-helper $piece $ooo_build_tag
+fi

Modified: trunk/bin/piece/file-list-libs_core
==============================================================================
--- trunk/bin/piece/file-list-libs_core	(original)
+++ trunk/bin/piece/file-list-libs_core	Wed Sep 10 21:05:45 2008
@@ -13,6 +13,7 @@
 
 # generate the common file list
 $OO_TOOLSDIR/piece/merge-file-lists "files-$piece.txt" $DESTDIR/gid_*
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "unopkg"
 
 # fix up kde subpackage
 mv_file_between_flists files-kde.txt files-$piece.txt $OO_INSTDIR/basis3.0/program/kdefilepicker

Modified: trunk/bin/piece/file-list-postprocess
==============================================================================
--- trunk/bin/piece/file-list-postprocess	(original)
+++ trunk/bin/piece/file-list-postprocess	Wed Sep 10 21:05:45 2008
@@ -10,3 +10,17 @@
 
 # generate the common file list
 $OO_TOOLSDIR/piece/merge-file-lists "files-$piece.txt" $DESTDIR/gid_*
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "fromtemplate"
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "ooffice"
+
+# FIXME: about, intro are not isntalled by the installer
+if test "$OOO_BUILD_NOARCH" = 'YES' ; then
+    # create only symlinks; the icons will be packaged separately
+    ln -sf $OO_INSTDIR_SHARE/program/about.bmp $DESTDIR$OO_INSTDIR/program
+    ln -sf $OO_INSTDIR_SHARE/program/intro.bmp $DESTDIR$OO_INSTDIR/program
+else
+    cp $OO_SOLVERDIR/default_images/introabout/about.bmp $DESTDIR$OO_INSTDIR/program || exit 1;
+    cp $OO_SOLVERDIR/default_images/introabout/intro.bmp $DESTDIR$OO_INSTDIR/program || exit 1;
+fi    
+echo "$OO_INSTDIR/program/about.bmp" >>files-$piece.txt
+echo "$OO_INSTDIR/program/intro.bmp" >>files-$piece.txt

Modified: trunk/bin/piece/file-list-writer
==============================================================================
--- trunk/bin/piece/file-list-writer	(original)
+++ trunk/bin/piece/file-list-writer	Wed Sep 10 21:05:45 2008
@@ -7,6 +7,9 @@
 
 # math subpackages
 $OO_TOOLSDIR/piece/merge-file-lists "files-math.txt" $DESTDIR/gid_Module_Prg_Math_Bin
+$OO_TOOLSDIR/piece/desktop-support-app "math" "$ooo_build_tag" "math"
 
 # merge the rest
 $OO_TOOLSDIR/piece/merge-file-lists "files-$piece.txt" $DESTDIR/gid_*
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "$piece"
+$OO_TOOLSDIR/piece/desktop-support-app "$piece" "$ooo_build_tag" "web"

Modified: trunk/bin/piece/install-bootstrap
==============================================================================
--- trunk/bin/piece/install-bootstrap	(original)
+++ trunk/bin/piece/install-bootstrap	Wed Sep 10 21:05:45 2008
@@ -15,8 +15,12 @@
 # ooo-build
 mkdir -p $OOINSTDIR/ooo-build/bin
 mkdir -p $OOINSTDIR/ooo-build/patches
+mkdir -p $OOINSTDIR/ooo-build/desktop
+mkdir -p $OOINSTDIR/ooo-build/man
 cp -a $TOOLSDIR/bin/* $OOINSTDIR/ooo-build/bin
 cp -a $TOOLSDIR/patches/* $OOINSTDIR/ooo-build/patches
+cp -a $TOOLSDIR/desktop/* $OOINSTDIR/ooo-build/desktop
+cp -a $TOOLSDIR/man/* $OOINSTDIR/ooo-build/man
 
 # copy pieces of interest into src to be moved out later ...
 echo "copy source pieces"
@@ -30,6 +34,7 @@
    $TOOLSDIR/src/*.jpg \
    $TOOLSDIR/src/*.patch \
    $TOOLSDIR/src/*.odb \
+   $TOOLSDIR/src/main_transform.xsl \
    $OOINSTDIR/ooo-build/src
 
 find $OOINSTDIR/ooo-build -depth -name "CVS" -type d -exec rm -rf {} \;

Added: trunk/bin/piece/install-devel-helper
==============================================================================
--- (empty file)
+++ trunk/bin/piece/install-devel-helper	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+piece=$1
+ooo_build_tag=$2
+
+source $OO_TOOLSDIR/piece/sys-setup
+
+# do we need to do anything?
+test "$OOO_BUILD_NOARCH" != 'YES' && exit 0
+
+# ugly hack to move solver to /usr/share
+mkdir -p $DESTDIR$OO_INSTDIR_SHARE
+mv $DESTDIR$OO_INSTDIR/solver $DESTDIR$OO_INSTDIR_SHARE
+
+# file list for the devel stuff
+echo "%dir $OO_INSTDIR_SHARE" >files-$piece-devel.txt
+for dir in `find $DESTDIR$OO_INSTDIR_SHARE/solver -type d | sed "s|$DESTDIR||" | grep -v "$OO_INSTDIR_SHARE/solver/noarch"` ; do
+    echo "%dir $dir" >>files-$piece-devel.txt
+done
+find $DESTDIR$OO_INSTDIR_SHARE/solver -type f | sed "s|$DESTDIR||" | grep -v "$OO_INSTDIR_SHARE/solver/noarch" >>files-$piece-devel.txt
+# install the list for link-to-ooo-home script if not empty; top dir is always mentioned
+if test `cat files-$piece-devel.txt | wc -l` -gt 1 ; then
+    cp files-$piece-devel.txt $DESTDIR$OO_INSTDIR_SHARE/
+    echo "$OO_INSTDIR_SHARE/files-$piece-devel.txt" >>files-$piece-devel.txt
+fi
+
+# file list for the prebuilt stuff if any
+rm -f files-$piece-prebuilt.txt
+for dir in `find $DESTDIR$OO_INSTDIR_SHARE/solver -type d | sed "s|$DESTDIR||" | grep "$OO_INSTDIR_SHARE/solver/noarch"` ; do
+    echo "%dir $dir" >>files-$piece-prebuilt.txt
+done
+find $DESTDIR$OO_INSTDIR_SHARE/solver -type f | sed "s|$DESTDIR||" | grep "$OO_INSTDIR_SHARE/solver/noarch" >>files-$piece-prebuilt.txt
+# install the list for link-to-ooo-home script if not empty
+if test `cat files-$piece-prebuilt.txt | wc -l` -gt 1 ; then
+    cp files-$piece-prebuilt.txt $DESTDIR$OO_INSTDIR_SHARE/
+    echo "$OO_INSTDIR_SHARE/files-$piece-prebuilt.txt" >>files-$piece-prebuilt.txt
+fi

Modified: trunk/bin/piece/sys-setup.in
==============================================================================
--- trunk/bin/piece/sys-setup.in	(original)
+++ trunk/bin/piece/sys-setup.in	Wed Sep 10 21:05:45 2008
@@ -3,6 +3,8 @@
 # stuff from configure
 export DISTRO='@DISTRO@'
 export OO_INSTDIR= libdir@/@OOOINSTALLDIRNAME@
+export OO_PREFIX= prefix@
+export OO_MANDIR= mandir@
 export OO_LANGS='@OOO_LANGS@'
 export OOO_BUILD_NOARCH='@OOO_BUILD_NOARCH@'
 

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Wed Sep 10 21:05:45 2008
@@ -495,6 +495,10 @@
 gengal-three-layer-install-svx.diff, i#89713, jannieuw
 gengal-three-layer-install-scp2.diff, i#89713, jannieuw
 
+# fix path to the python binary in the mailmerge.py script
+# /bin/python does not exists and breaks the automatic rpm dependencies
+scripting-mailmerge-python-binary.diff, pmladek
+
 # initialize the default locale in the resource manager
 # for example, it fixes unopkg to do not show random localization
 tools-resmgr-set-defaultlocale.diff, n#399101, i#90820, pmladek

Added: trunk/patches/dev300/scripting-mailmerge-python-binary.diff
==============================================================================
--- (empty file)
+++ trunk/patches/dev300/scripting-mailmerge-python-binary.diff	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,8 @@
+--- scripting/source/pyprov/mailmerge.py.old	2007-12-06 11:57:39.000000000 +0100
++++ scripting/source/pyprov/mailmerge.py	2008-09-09 22:17:28.000000000 +0200
+@@ -1,4 +1,4 @@
+-#!/bin/python
++#!/usr/bin/python
+ 
+ # Caolan McNamara caolanm redhat com
+ # a simple email mailmerge component

Modified: trunk/src/Makefile.am
==============================================================================
--- trunk/src/Makefile.am	(original)
+++ trunk/src/Makefile.am	Wed Sep 10 21:05:45 2008
@@ -6,6 +6,7 @@
 	Ubuntu.dic \
 	banner_nld.bmp \
 	cli_uno_bridge.dll.config.in \
+	main_transform.xsl \
 	mono-ooo.pc.in \
 	nologoinstall_nld.bmp \
 	ooobanner_nld.bmp \

Added: trunk/src/main_transform.xsl
==============================================================================
--- (empty file)
+++ trunk/src/main_transform.xsl	Wed Sep 10 21:05:45 2008
@@ -0,0 +1,966 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<!--***********************************************************************
+  This is the main transformation style sheet for transforming.
+  Only use with OOo 2.0
+  Owner: fpe openoffice org
+  =========================================================================
+  Changes Log
+    May 24 2004 Created
+    Aug 24 2004 Fixed for help2 CWS
+    Aug 27 2004 Added css link, fixed missing embed-mode for variable
+                Removed width/height for images
+    Sep 03 2004 Modularized xsl, added some embedded modes
+    Oct 08 2004 Fixed bug wrong mode "embedded" for links
+                Added embedded modes for embed and embedvar (for cascaded embeds)
+                Added <p> tags around falsely embedded pars and vars
+    Dec 08 2004 #i38483#, fixed wrong handling of web links
+                #i37377#, fixed missing usage of Database parameter for switching
+    Jan 04 2005 #i38905#, fixed buggy branding replacement template
+    Mar 17 2005 #i43972#, added language info to image URL, evaluate Language parameter
+                evaluate new localize attribute in images
+    May 10 2005 #i48785#, fixed wrong setting of distrib variable
+    Aug 16 2005 workaround for #i53365#
+    Aug 19 2005 fixed missing list processing in embedded sections
+    Aug 19 2005 #i53535#, fixed wrong handling of Database parameter
+		Oct 17 2006 #i70462#, disabled sorting to avoid output of error messages to console
+***********************************************************************//-->
+
+<!--
+
+  DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+  
+  Copyright 2008 by Sun Microsystems, Inc.
+ 
+  OpenOffice.org - a multi-platform office productivity suite
+ 
+  $RCSfile: main_transform.xsl,v $
+ 
+  $Revision: 1.18 $
+ 
+  This file is part of OpenOffice.org.
+ 
+  OpenOffice.org is free software: you can redistribute it and/or modify
+  it under the terms of the GNU Lesser General Public License version 3
+  only, as published by the Free Software Foundation.
+ 
+  OpenOffice.org is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU Lesser General Public License version 3 for more details
+  (a copy is included in the LICENSE file that accompanied this code).
+ 
+  You should have received a copy of the GNU Lesser General Public License
+  version 3 along with OpenOffice.org.  If not, see
+  <http://www.openoffice.org/license.html>
+  for a copy of the LGPLv3 License.
+ 
+-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
+
+<xsl:output indent="yes" method="html"/>
+
+<!--
+############################
+# Variables and Parameters #
+############################
+//-->
+
+<!-- General Usage -->
+<xsl:variable name="am" select="'&amp;'"/>
+<xsl:variable name="sl" select="'/'"/>
+<xsl:variable name="qt" select="'&quot;'"/>
+
+<!-- generic Icon alt text -->
+<xsl:variable name="alttext" select="'text/shared/00/icon_alt.xhp'"/>
+
+<!-- For calculating pixel sizes -->
+<xsl:variable name="dpi" select="'96'"/>
+<xsl:variable name="dpcm" select="'38'"/>
+
+<!-- Product brand variables used in the help files -->
+<xsl:variable name="brand1" select="'$[officename]'"/>
+<xsl:variable name="brand2" select="'$[officeversion]'"/>
+<xsl:variable name="brand3" select="'%PRODUCTNAME'"/>
+<xsl:variable name="brand4" select="'%PRODUCTVERSION'"/>
+
+<!-- meta data variables from the help file -->
+<xsl:variable name="filename" select="/helpdocument/meta/topic/filename"/>
+<xsl:variable name="topic_id" select="/helpdocument/meta/topic/@id"/>
+<xsl:variable name="topic_status" select="/helpdocument/meta/topic/@status"/>
+<xsl:variable name="title" select="/helpdocument/meta/topic/title"/>
+<xsl:variable name="doclang" select="/helpdocument/meta/topic/title/@xml-lang"/>
+
+<!-- Module and the corresponding switching values-->
+<xsl:param name="Database" select="'swriter'"/>
+<xsl:variable name="module" select="$Database"/>
+<xsl:variable name="appl">
+	<xsl:choose>
+		<xsl:when test="$module = 'swriter'"><xsl:value-of select="'WRITER'"/></xsl:when>
+		<xsl:when test="$module = 'scalc'"><xsl:value-of select="'CALC'"/></xsl:when>
+		<xsl:when test="$module = 'sdraw'"><xsl:value-of select="'DRAW'"/></xsl:when>
+		<xsl:when test="$module = 'simpress'"><xsl:value-of select="'IMPRESS'"/></xsl:when>
+		<xsl:when test="$module = 'schart'"><xsl:value-of select="'CHART'"/></xsl:when>
+		<xsl:when test="$module = 'sbasic'"><xsl:value-of select="'BASIC'"/></xsl:when>
+		<xsl:when test="$module = 'smath'"><xsl:value-of select="'MATH'"/></xsl:when>
+	</xsl:choose>
+</xsl:variable>
+
+<!-- the other parameters given by the help caller -->
+<xsl:param name="System" select="'WIN'"/>
+<xsl:param name="productname" select="'Office'"/>
+<xsl:param name="productversion" select="''"/>
+<xsl:variable name="pversion">
+	<xsl:value-of select="translate($productversion,' ','')"/>
+</xsl:variable>
+<!-- this is were the images are -->
+<xsl:param name="imgrepos" select="''"/>
+<xsl:param name="Id" />
+<!-- (lame) distinction between OS and Commercial -->
+<xsl:param name="distrib">
+	<xsl:choose>
+		<xsl:when test="starts-with($productname,'OpenOffice')">
+			<xsl:value-of select="'OpenSource'"/>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:value-of select="'COMMERCIAL'"/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:param>
+<xsl:param name="Language" select="'en-US'"/>
+<xsl:variable name="lang" select="$Language"/>
+
+
+
+<!-- parts of help and image urls -->
+<xsl:variable name="help_url_prefix" select="'vnd.sun.star.help://'"/>
+<xsl:variable name="img_url_prefix" select="concat('vnd.sun.star.pkg://',$imgrepos,'/')"/>
+<xsl:variable name="urlpost" select="concat('?Language=',$lang,$am,'System=',$System,$am,'UseDB=no')"/>
+<xsl:variable name="urlpre" select="$help_url_prefix" /> 
+<xsl:variable name="linkprefix" select="$urlpre"/>
+<xsl:variable name="linkpostfix" select="$urlpost"/>
+
+<xsl:variable name="css" select="'default.css'"/>
+
+<!-- images for notes, tips and warnings -->
+<xsl:variable name="note_img" select="concat($img_url_prefix,'res/helpimg/note.png')"/>
+<xsl:variable name="tip_img" select="concat($img_url_prefix,'res/helpimg/tip.png')"/>
+<xsl:variable name="warning_img" select="concat($img_url_prefix,'res/helpimg/warning.png')"/>
+
+<!--
+#############
+# Templates #
+#############
+//-->
+
+<!-- Create the document skeleton -->
+<xsl:template match="/">
+	<xsl:variable name="csslink" select="concat($urlpre,'/',$urlpost)"/>
+	<html>
+		<head>
+			<title><xsl:value-of select="$title"/></title>
+			<link href="{$csslink}" rel="Stylesheet" type="text/css" /> <!-- stylesheet link -->
+  		<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
+		</head>
+		<body lang="{$lang}">
+			<xsl:apply-templates select="/helpdocument/body"/>
+		</body>
+	</html>
+</xsl:template>
+
+<!-- AHELP -->
+<xsl:template match="ahelp">
+	<xsl:if test="not(@visibility='hidden')"><span class="avis"><xsl:apply-templates /></span></xsl:if>
+</xsl:template>
+
+<!-- ALT -->
+<xsl:template match="alt"/>
+
+<!-- BOOKMARK -->
+<xsl:template match="bookmark">
+	<a name="{ id}"></a>
+	<xsl:choose>
+		<xsl:when test="starts-with(@branch,'hid')" />
+		<xsl:otherwise><xsl:apply-templates /></xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+<xsl:template match="bookmark" mode="embedded" />
+
+<!-- BOOKMARK_VALUE -->
+<xsl:template match="bookmark_value" />
+
+<!-- BR -->
+<xsl:template match="br"><br /></xsl:template>
+
+<!-- CAPTION -->
+<xsl:template match="caption" />
+
+<!-- CASE -->
+<xsl:template match="case"><xsl:call-template name="insertcase" /></xsl:template>
+<xsl:template match="case" mode="embedded">
+	<xsl:call-template name="insertcase">
+		<xsl:with-param name="embedded" select="'yes'"/>
+	</xsl:call-template>
+</xsl:template>
+
+<!-- CASEINLINE -->
+<xsl:template match="caseinline"><xsl:call-template name="insertcase" /></xsl:template>
+<xsl:template match="caseinline" mode="embedded">
+	<xsl:call-template name="insertcase">
+		<xsl:with-param name="embedded" select="'yes'"/>
+	</xsl:call-template>
+</xsl:template>
+
+<!-- COMMENT -->
+<xsl:template match="comment" />
+<xsl:template match="comment" mode="embedded"/>
+
+<!-- CREATED -->
+<xsl:template match="created" />
+
+<!-- DEFAULT -->
+<xsl:template match="default"><xsl:call-template name="insertdefault" /></xsl:template>
+<xsl:template match="default" mode="embedded">
+	<xsl:call-template name="insertdefault">
+		<xsl:with-param name="embedded" select="'yes'"/>
+	</xsl:call-template>
+</xsl:template>
+
+<!-- DEFAULTINLINE -->
+<xsl:template match="defaultinline"><xsl:call-template name="insertdefault" /></xsl:template>
+<xsl:template match="defaultinline" mode="embedded">
+	<xsl:call-template name="insertdefault">
+		<xsl:with-param name="embedded" select="'yes'"/>
+	</xsl:call-template>
+</xsl:template>
+
+<!-- EMBED -->
+<xsl:template match="embed"><xsl:call-template name="resolveembed"/></xsl:template>
+<xsl:template match="embed" mode="embedded"><xsl:call-template name="resolveembed"/></xsl:template>
+
+<!-- EMBEDVAR -->
+<xsl:template match="embedvar"><xsl:call-template name="resolveembedvar"/></xsl:template>
+<xsl:template match="embedvar" mode="embedded"><xsl:call-template name="resolveembedvar"/></xsl:template>
+
+<!-- EMPH -->
+<xsl:template match="emph">
+	<span class="emph"><xsl:apply-templates /></span>
+</xsl:template>
+<xsl:template match="emph" mode="embedded">
+	<span class="emph"><xsl:apply-templates /></span>
+</xsl:template>
+
+<!-- FILENAME -->
+<xsl:template match="filename" />
+
+<!-- HISTORY -->
+<xsl:template match="history" />
+
+<!-- IMAGE -->
+<xsl:template match="image"><xsl:call-template name="insertimage"/></xsl:template>
+<xsl:template match="image" mode="embedded"><xsl:call-template name="insertimage"/></xsl:template>
+
+<!-- ITEM -->
+<xsl:template match="item"><span class="{ type}"><xsl:apply-templates /></span></xsl:template>
+<xsl:template match="item" mode="embedded"><span class="{ type}"><xsl:apply-templates /></span></xsl:template>
+
+<!-- LASTEDITED -->
+<xsl:template match="lastedited" />
+
+<!-- LINK -->
+<xsl:template match="link">
+	<xsl:choose> <!-- don't insert the heading link to itself -->
+		<xsl:when test="(concat('/',@href) = /helpdocument/meta/topic/filename) or (@href = /helpdocument/meta/topic/filename)">
+			<xsl:apply-templates />
+		</xsl:when>
+		<xsl:when test="contains(child::embedvar/@href,'/00/00000004.xhp#wie')"> <!-- special treatment of howtoget links -->
+			<xsl:call-template name="insert_howtoget">
+				<xsl:with-param name="linkhref" select="@href"/>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:call-template name="createlink" /> 
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+<xsl:template match="link" mode="embedded">
+	<xsl:call-template name="createlink"/>
+</xsl:template>
+
+<!-- LIST -->
+<xsl:template match="list">
+	<xsl:choose>
+		<xsl:when test="@type='ordered'">
+			<ol>
+				<xsl:if test="@startwith">
+					<xsl:attribute name="start"><xsl:value-of select="@startwith"/></xsl:attribute>
+				</xsl:if>
+				<xsl:apply-templates />
+			</ol>
+		</xsl:when>
+		<xsl:otherwise>
+			<ul><xsl:apply-templates /></ul>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template match="list" mode="embedded">
+	<xsl:choose>
+		<xsl:when test="@type='ordered'">
+			<ol>
+				<xsl:if test="@startwith">
+					<xsl:attribute name="start"><xsl:value-of select="@startwith"/></xsl:attribute>
+				</xsl:if>
+				<xsl:apply-templates mode="embedded"/>
+			</ol>
+		</xsl:when>
+		<xsl:otherwise>
+			<ul><xsl:apply-templates mode="embedded"/></ul>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<!-- LISTITEM -->
+<xsl:template match="listitem">
+	<li><xsl:apply-templates /></li>
+</xsl:template>
+
+<xsl:template match="listitem" mode="embedded">
+	<li><xsl:apply-templates mode="embedded"/></li>
+</xsl:template>
+
+<!-- META, SEE HEADER -->
+<xsl:template match="meta" />
+
+<!-- OBJECT (UNUSED) -->
+<xsl:template match="object" />
+
+<!-- PARAGRAPH -->
+<xsl:template match="paragraph">
+	<xsl:choose>
+		
+		<xsl:when test="@role='heading'">
+			<xsl:call-template name="insertheading">
+				<xsl:with-param name="level" select="@level"/>
+			</xsl:call-template>
+		</xsl:when>
+		
+		<xsl:when test="contains(' note warning tip ',@role)">
+			<xsl:call-template name="insertnote">
+				<xsl:with-param name="type" select="@role" />
+			</xsl:call-template>
+		</xsl:when>
+		
+		<xsl:when test="contains(descendant::embedvar/@href,'/00/00000004.xhp#wie')"> <!-- special treatment of howtoget links -->
+			<xsl:apply-templates />
+		</xsl:when>		
+		
+		<xsl:otherwise>
+			<xsl:call-template name="insertpara" />
+		</xsl:otherwise>
+	
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template match="paragraph" mode="embedded">
+		<xsl:choose>
+		
+		<xsl:when test="@role='heading'">	<!-- increase the level of headings that are embedded -->
+		<!-- 
+		   The internal sablotron processor does not seem to support the number function.
+			 Therefore, we need a workaround for
+			 <xsl:variable name="level"><xsl:value-of select="number(@level)+1"/></xsl:variable>
+		-->
+			<xsl:variable name="newlevel">
+				<xsl:choose>
+					<xsl:when test="@level='1'"><xsl:value-of select="'2'"/></xsl:when>
+					<xsl:when test="@level='2'"><xsl:value-of select="'2'"/></xsl:when>
+					<xsl:when test="@level='3'"><xsl:value-of select="'3'"/></xsl:when>
+					<xsl:when test="@level='4'"><xsl:value-of select="'4'"/></xsl:when>
+					<xsl:when test="@level='5'"><xsl:value-of select="'5'"/></xsl:when>
+				</xsl:choose>
+			</xsl:variable>
+			
+			<xsl:call-template name="insertheading">
+				<xsl:with-param name="level" select="$newlevel"/>
+				<xsl:with-param name="embedded" select="'yes'"/>
+			</xsl:call-template>
+		</xsl:when>
+		
+		<xsl:when test="contains(' note warning tip ',@role)">
+			<xsl:call-template name="insertnote">
+				<xsl:with-param name="type" select="@role" />
+			</xsl:call-template>
+		</xsl:when>
+		
+		<xsl:when test="contains(descendant::embedvar/@href,'/00/00000004.xhp#wie')"> <!-- special treatment of howtoget links -->
+			<xsl:apply-templates />
+		</xsl:when>		
+		
+		<xsl:otherwise>
+			<xsl:call-template name="insertpara" />
+		</xsl:otherwise>
+		
+	</xsl:choose>
+</xsl:template>
+
+
+<!-- SECTION -->
+<xsl:template match="section">
+	<a name="{ id}"></a>
+
+		<xsl:choose>
+			
+			<xsl:when test="@id='relatedtopics'">
+				<div class="relatedtopics">
+					<xsl:variable name="href"><xsl:value-of select="concat($urlpre,'shared/text/shared/00/00000004.xhp',$urlpost)"/></xsl:variable>
+					<xsl:variable name="anchor"><xsl:value-of select="'related'"/></xsl:variable>
+					<xsl:variable name="doc" select="document($href)"/>
+					<p class="related">
+						<xsl:apply-templates select="$doc//variable[ id=$anchor]"/>
+					</p>
+					<div class="relatedbody">
+						<xsl:apply-templates />
+					</div>
+				</div>
+			</xsl:when>
+			
+			<xsl:when test="@id='howtoget'">
+				<xsl:call-template name="insert_howtoget" />
+			</xsl:when>
+			
+			<xsl:otherwise>
+						<xsl:apply-templates/>
+			</xsl:otherwise>
+		
+		</xsl:choose>
+
+</xsl:template>
+
+
+<!-- SECTION -->
+<xsl:template match="section" mode="embedded">
+	<a name="{ id}"></a>
+	<xsl:apply-templates mode="embedded"/>
+</xsl:template>
+
+<!-- SORT -->
+<xsl:template match="sort" >
+  <!-- sorting disabled due to #i70462#
+	<xsl:apply-templates><xsl:sort select="descendant::paragraph"/></xsl:apply-templates>
+	//-->
+	<xsl:apply-templates />
+</xsl:template>
+<xsl:template match="sort" mode="embedded">
+<!-- sorting disabled due to #i70462#
+	<xsl:apply-templates><xsl:sort select="descendant::paragraph"/></xsl:apply-templates>
+	//-->
+	<xsl:apply-templates />
+</xsl:template>
+
+<!-- SWITCH -->
+<xsl:template match="switch"><xsl:apply-templates /></xsl:template>
+<xsl:template match="switch" mode="embedded"><xsl:apply-templates /></xsl:template>
+
+<!-- SWITCHINLINE -->
+<xsl:template match="switchinline"><xsl:apply-templates /></xsl:template>
+<xsl:template match="switchinline" mode="embedded"><xsl:apply-templates mode="embedded"/></xsl:template>
+
+<!-- TABLE -->
+<xsl:template match="table"><xsl:call-template name="inserttable"/></xsl:template>
+<xsl:template match="table" mode="embedded"><xsl:call-template name="inserttable"/></xsl:template>
+
+<!-- TABLECELL -->
+<xsl:template match="tablecell"><td valign="top"><xsl:apply-templates /></td></xsl:template>
+<xsl:template match="tablecell" mode="icontable"><td valign="top"><xsl:apply-templates/></td></xsl:template>
+<xsl:template match="tablecell" mode="embedded"><td valign="top"><xsl:apply-templates mode="embedded"/></td></xsl:template>
+
+<!-- TABLEROW -->
+<xsl:template match="tablerow"><tr><xsl:apply-templates /></tr></xsl:template>
+<xsl:template match="tablerow" mode="icontable"><tr><xsl:apply-templates mode="icontable"/></tr></xsl:template>
+<xsl:template match="tablerow" mode="embedded"><tr><xsl:apply-templates mode="embedded"/></tr></xsl:template>
+
+<!-- TITLE -->
+<xsl:template match="title"/>
+
+<!-- TOPIC -->
+<xsl:template match="topic"/>
+
+<!-- VARIABLE -->
+<xsl:template match="variable"><a name="{ id}"></a><xsl:apply-templates /></xsl:template>
+<xsl:template match="variable" mode="embedded"><a name="{ id}"></a><xsl:apply-templates mode="embedded"/></xsl:template>
+
+<xsl:template match="text()">
+	<xsl:call-template name="brand">
+		<xsl:with-param name="string"><xsl:value-of select="."/></xsl:with-param>
+	</xsl:call-template>
+</xsl:template>
+
+<xsl:template match="text()" mode="embedded">
+	<xsl:call-template name="brand">
+		<xsl:with-param name="string"><xsl:value-of select="."/></xsl:with-param>
+	</xsl:call-template>
+</xsl:template>
+
+<!-- In case of missing help files -->
+<xsl:template match="help-id-missing"><xsl:value-of select="$Id"/></xsl:template>
+
+<!-- 
+###################
+# NAMED TEMPLATES #
+###################
+//-->
+
+<!-- Branding -->
+<xsl:template name="brand" >
+	<xsl:param name="string"/>
+	
+    <xsl:choose>
+		
+        <xsl:when test="contains($string,$brand1)">
+           <xsl:variable name="newstr">
+                <xsl:value-of select="substring-before($string,$brand1)"/>
+                <xsl:value-of select="$productname"/>
+                <xsl:value-of select="substring-after($string,$brand1)"/>
+           </xsl:variable>
+			<xsl:call-template name="brand">
+				<xsl:with-param name="string" select="$newstr"/>
+			</xsl:call-template>
+		</xsl:when>
+        
+		<xsl:when test="contains($string,$brand2)">
+		    <xsl:variable name="newstr">
+                <xsl:value-of select="substring-before($string,$brand2)"/>
+                <xsl:value-of select="$pversion"/>
+                <xsl:value-of select="substring-after($string,$brand2)"/>
+           </xsl:variable>
+			<xsl:call-template name="brand">
+				<xsl:with-param name="string" select="$newstr"/>
+			</xsl:call-template>
+		</xsl:when>
+        
+		<xsl:when test="contains($string,$brand3)">
+			<xsl:variable name="newstr">
+                <xsl:value-of select="substring-before($string,$brand3)"/>
+                <xsl:value-of select="$productname"/>
+                <xsl:value-of select="substring-after($string,$brand3)"/>
+           </xsl:variable>
+			<xsl:call-template name="brand">
+				<xsl:with-param name="string" select="$newstr"/>
+			</xsl:call-template>
+		</xsl:when>
+		
+        <xsl:when test="contains($string,$brand4)">
+			    <xsl:variable name="newstr">
+                <xsl:value-of select="substring-before($string,$brand4)"/>
+                <xsl:value-of select="$pversion"/>
+                <xsl:value-of select="substring-after($string,$brand4)"/>
+           </xsl:variable>
+			<xsl:call-template name="brand">
+				<xsl:with-param name="string" select="$newstr"/>
+			</xsl:call-template>
+		</xsl:when>
+		
+        <xsl:otherwise>
+			<xsl:value-of select="$string"/>
+		</xsl:otherwise>
+	</xsl:choose> 
+    
+</xsl:template>
+
+
+<!-- Insert Paragraph -->
+<xsl:template name="insertpara">
+	<xsl:variable name="role">
+		<xsl:choose>
+			<xsl:when test="ancestor::table">
+				<xsl:value-of select="concat(@role,'intable')"/>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:value-of select="@role"/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:variable>
+	<p class="{$role}"><xsl:apply-templates /></p>
+</xsl:template>
+
+<!-- Insert "How to get Link" -->
+<xsl:template name="insert_howtoget">
+	<xsl:param name="linkhref" />
+	<xsl:variable name="archive" select="'shared'"/>
+	<xsl:variable name="tmp_href"><xsl:value-of select="concat($urlpre,'shared/text/shared/00/00000004.xhp',$urlpost)"/></xsl:variable>	
+	<xsl:variable name="tmp_doc" select="document($tmp_href)"/>
+	<table class="howtoget" width="100%" border="1" cellpadding="3" cellspacing="0">
+		<tr>
+			<td>
+				<p class="howtogetheader"><xsl:apply-templates select="$tmp_doc//variable[ id='wie']"/></p>
+				<div class="howtogetbody">
+				<xsl:choose>
+					<xsl:when test="$linkhref = ''"> <!-- new style -->
+						<xsl:apply-templates/>
+					</xsl:when>
+					<xsl:otherwise> <!-- old style -->
+						<xsl:variable name="archive1"><xsl:value-of select="concat(substring-before(substring-after($linkhref,'text/'),'/'),'/')"/></xsl:variable>
+						<xsl:variable name="href"><xsl:value-of select="concat($urlpre,$archive1,substring-before($linkhref,'#'),$urlpost)"/></xsl:variable>
+						<xsl:variable name="anc"><xsl:value-of select="substring-after($linkhref,'#')"/></xsl:variable>
+						<xsl:variable name="docum" select="document($href)"/>
+						
+						<xsl:call-template name="insertembed">
+							<xsl:with-param name="doc" select="$docum" />
+							<xsl:with-param name="anchor" select="$anc" />
+						</xsl:call-template>
+
+					</xsl:otherwise>
+				</xsl:choose>				
+				</div>
+			</td>
+		</tr>
+	</table>
+	<br/>
+</xsl:template>
+
+<!-- Create a link -->
+<xsl:template name="createlink">
+<xsl:variable name="archive"><xsl:value-of select="concat(substring-before(substring-after(@href,'text/'),'/'),'/')"/></xsl:variable>
+<xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="$archive"/></xsl:call-template></xsl:variable>
+	<xsl:choose>
+		<xsl:when test="contains(@href,'#')">
+			<xsl:variable name="anchor"><xsl:value-of select="concat('#',substring-after(@href,'#'))"/></xsl:variable>
+			<xsl:variable name="href"><xsl:value-of select="concat($linkprefix,$archive,substring-before(@href,'#'),$linkpostfix,$dbpostfix,$anchor)"/></xsl:variable>
+			<a href="{$href}"><xsl:apply-templates /></a>
+		</xsl:when>
+		<xsl:when test="starts-with(@href,'http://')">  <!-- web links -->
+			<a href="{ href}"><xsl:apply-templates /></a>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:variable name="href"><xsl:value-of select="concat($linkprefix,$archive,@href,$linkpostfix,$dbpostfix)"/></xsl:variable>
+			<a href="{$href}"><xsl:apply-templates /></a>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<!-- Insert Note, Warning, or Tip -->
+<xsl:template name="insertnote">
+	<xsl:param name="type" /> <!-- note, tip, or warning -->
+	<xsl:variable name="imgsrc">
+		<xsl:choose>
+			<xsl:when test="$type='note'"><xsl:value-of select="$note_img"/></xsl:when>
+			<xsl:when test="$type='tip'"><xsl:value-of select="$tip_img"/></xsl:when>
+			<xsl:when test="$type='warning'"><xsl:value-of select="$warning_img"/></xsl:when>
+		</xsl:choose>
+	</xsl:variable>
+	<xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="'shared'"/></xsl:call-template></xsl:variable>
+	<xsl:variable name="alt">
+		<xsl:variable name="href"><xsl:value-of select="concat($urlpre,'shared/',$alttext,$urlpost,$dbpostfix)"/></xsl:variable>
+		<xsl:variable name="anchor"><xsl:value-of select="concat('alt_',$type)"/></xsl:variable>
+		<xsl:variable name="doc" select="document($href)"/>
+		<xsl:apply-templates select="$doc//variable[ id=$anchor]" mode="embedded"/>
+	</xsl:variable>
+	<div class="{$type}">
+		<table border="0" class="{$type}" cellspacing="0" cellpadding="5">
+			<tr>
+				<td><img src="{$imgsrc}" alt="{$alt}" title="{$alt}"/></td>
+				<td><xsl:apply-templates /></td>
+			</tr>
+		</table>
+	</div>
+	<br/>
+</xsl:template>
+
+<!-- Insert a heading -->
+<xsl:template name="insertheading">
+	<xsl:param name="level" />
+	<xsl:param name="embedded" />
+	<xsl:text disable-output-escaping="yes">&lt;h</xsl:text><xsl:value-of select="$level"/><xsl:text disable-output-escaping="yes">&gt;</xsl:text>
+		<xsl:choose>
+			<xsl:when test="$embedded = 'yes'">
+				<xsl:apply-templates mode="embedded"/>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:apply-templates />
+			</xsl:otherwise>
+		</xsl:choose>
+	<xsl:text disable-output-escaping="yes">&lt;/h</xsl:text><xsl:value-of select="$level"/><xsl:text disable-output-escaping="yes">&gt;</xsl:text>
+</xsl:template>
+
+<!-- Evaluate a case or caseinline switch -->
+<xsl:template name="insertcase">
+	<xsl:param name="embedded" />
+	<xsl:choose>
+		<xsl:when test="parent::switch[ select='sys'] or parent::switchinline[ select='sys']">
+			<xsl:if test="@select = $System">
+				<xsl:choose>
+					<xsl:when test="$embedded = 'yes'">
+						<xsl:apply-templates mode="embedded"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:apply-templates />
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:if>
+		</xsl:when>
+		<xsl:when test="parent::switch[ select='appl'] or parent::switchinline[ select='appl']">
+			<xsl:if test="@select = $appl">
+				<xsl:choose>
+					<xsl:when test="$embedded = 'yes'">
+						<xsl:apply-templates mode="embedded"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:apply-templates />
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:if>
+		</xsl:when>
+		<xsl:when test="parent::switch[ select='distrib'] or parent::switchinline[ select='distrib']">
+			<xsl:if test="@select = $distrib">
+				<xsl:choose>
+					<xsl:when test="$embedded = 'yes'">
+						<xsl:apply-templates mode="embedded"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:apply-templates />
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:if>
+		</xsl:when>
+	</xsl:choose>
+</xsl:template>
+
+<!-- Evaluate a default or defaultinline switch -->
+<xsl:template name="insertdefault">
+	<xsl:param name="embedded" />
+	
+	<xsl:choose>
+		<xsl:when test="parent::switch[ select='sys'] or parent::switchinline[ select='sys']">
+			<xsl:if test="not(../child::case[ select=$System]) and not(../child::caseinline[ select=$System])">
+				<xsl:choose>
+					<xsl:when test="$embedded = 'yes'">
+						<xsl:apply-templates mode="embedded"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:apply-templates />
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:if>
+		</xsl:when>
+		<xsl:when test="parent::switch[ select='appl'] or parent::switchinline[ select='appl']">
+			<xsl:if test="not(../child::case[ select=$appl]) and not(../child::caseinline[ select=$appl])">
+				<xsl:choose>
+					<xsl:when test="$embedded = 'yes'">
+						<xsl:apply-templates mode="embedded"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:apply-templates />
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:if>
+		</xsl:when>
+		<xsl:when test="parent::switch[ select='distrib'] or parent::switchinline[ select='distrib']">
+			<xsl:if test="not(../child::case[ select=$distrib]) and not(../child::caseinline[ select=$distrib])">
+				<xsl:choose>
+					<xsl:when test="$embedded = 'yes'">
+						<xsl:apply-templates mode="embedded"/>
+					</xsl:when>
+					<xsl:otherwise>
+						<xsl:apply-templates />
+					</xsl:otherwise>
+				</xsl:choose>
+			</xsl:if>
+		</xsl:when>
+	</xsl:choose>
+</xsl:template>
+
+<!-- evaluate embeds -->
+<xsl:template name="insertembed">
+	<xsl:param name="doc" />
+	<xsl:param name="anchor" />
+	<!-- different embed targets (also falsely used embed instead embedvar) -->
+	<xsl:choose>
+		<xsl:when test="$doc//section[ id=$anchor]"> <!-- first test for a section of that name -->
+			<xsl:apply-templates select="$doc//section[ id=$anchor]" mode="embedded"/>
+		</xsl:when>
+		<xsl:when test="$doc//paragraph[ id=$anchor]"> <!-- then test for a para of that name -->
+			<p class="embedded">
+				<xsl:apply-templates select="$doc//paragraph[ id=$anchor]" mode="embedded"/>
+			</p>
+		</xsl:when>
+		<xsl:when test="$doc//variable[ id=$anchor]"> <!-- then test for a variable of that name -->
+			<p class="embedded">
+				<xsl:apply-templates select="$doc//variable[ id=$anchor]" mode="embedded"/>
+			</p>
+		</xsl:when>
+		<xsl:otherwise> <!-- then give up -->
+			<p class="bug">D'oh! You found a bug (<xsl:value-of select="@href"/> not found).</p> 
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<!-- Insert an image -->
+<xsl:template name="insertimage">
+	
+	<xsl:variable name="fpath">
+		<xsl:call-template name="getfpath">
+			<xsl:with-param name="s"><xsl:value-of select="@src"/></xsl:with-param>
+		</xsl:call-template>
+	</xsl:variable>
+	
+	<xsl:variable name="fname">
+		<xsl:call-template name="getfname">
+			<xsl:with-param name="s"><xsl:value-of select="@src"/></xsl:with-param>
+		</xsl:call-template>
+	</xsl:variable>
+	
+	<xsl:variable name="src">
+		<xsl:choose>
+			<xsl:when test="(@localize='true') and not($lang='en-US')">
+				<xsl:value-of select="concat($img_url_prefix,$fpath,$lang,'/',$fname)"/>
+			</xsl:when>
+			<xsl:otherwise>
+				<xsl:value-of select="concat($img_url_prefix,$fpath,$fname)"/>
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:variable>
+	
+	<!--<xsl:variable name="src"><xsl:value-of select="concat($img_url_prefix,@src)"/></xsl:variable>-->
+	<xsl:variable name="alt"><xsl:value-of select="./alt"/></xsl:variable>
+	<xsl:variable name="width" select="''"/> <!-- Images don't all have the correct size -->
+	<xsl:variable name="height" select="''"/><!-- Image don't all have the correct size -->
+	<img src="{$src}" alt="{$alt}" title="{$alt}">
+		<xsl:if test="not($width='')"><xsl:attribute name="width"><xsl:value-of select="$width"/></xsl:attribute></xsl:if>
+		<xsl:if test="not($height='')"><xsl:attribute name="height"><xsl:value-of select="$height"/></xsl:attribute></xsl:if>
+	</img>  
+</xsl:template>
+
+<!-- Insert a Table -->
+<xsl:template name="inserttable">
+	<xsl:variable name="imgsrc">	<!-- see if we are in an image table -->
+		<xsl:value-of select="tablerow/tablecell[1]/paragraph[1]/image/@src"/>
+	</xsl:variable>
+	
+	<xsl:choose>
+		
+		<xsl:when test="count(descendant::tablecell)=1">
+			<table border="0" class="onecell" cellpadding="0" cellspacing="0">
+				<xsl:apply-templates />
+		 </table>
+		</xsl:when>
+		
+		<xsl:when test="descendant::tablecell[1]/descendant::image">
+			<table border="0" class="icontable" cellpadding="5" cellspacing="0">
+				<xsl:apply-templates mode="icontable"/>
+		 </table>
+		</xsl:when>
+		
+		<xsl:when test="@class='wide'">
+			<table border="1" class="{ class}" cellpadding="0" cellspacing="0" width="100%" >
+				<xsl:apply-templates />
+		 </table>
+		</xsl:when>
+		
+		<xsl:when test="not(@class='')">
+			<table border="1" class="{ class}" cellpadding="0" cellspacing="0" >
+				<xsl:apply-templates />
+		 </table>
+		</xsl:when>
+		
+		<xsl:otherwise>
+			<table border="1" class="border" cellpadding="0" cellspacing="0" >
+				<xsl:apply-templates />
+		 </table>
+		</xsl:otherwise>
+	</xsl:choose>
+	
+	<br/>
+</xsl:template>
+
+<xsl:template name="resolveembed">
+	<div class="embedded">
+		<xsl:variable name="archive"><xsl:value-of select="concat(substring-before(substring-after(@href,'text/'),'/'),'/')"/></xsl:variable>
+		<xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="$archive"/></xsl:call-template></xsl:variable>
+		<xsl:variable name="href"><xsl:value-of select="concat($urlpre,$archive,substring-before(@href,'#'),$urlpost,$dbpostfix)"/></xsl:variable>
+		<xsl:variable name="anc"><xsl:value-of select="substring-after(@href,'#')"/></xsl:variable>
+		<xsl:variable name="docum" select="document($href)"/>
+		
+		<xsl:call-template name="insertembed">
+			<xsl:with-param name="doc" select="$docum" />
+			<xsl:with-param name="anchor" select="$anc" />
+		</xsl:call-template>
+
+	</div>
+</xsl:template>
+
+<xsl:template name="resolveembedvar">
+	<xsl:if test="not(@href='text/shared/00/00000004.xhp#wie')"> <!-- special treatment if howtoget links -->
+		<xsl:variable name="archive"><xsl:value-of select="concat(substring-before(substring-after(@href,'text/'),'/'),'/')"/></xsl:variable>
+		<xsl:variable name="dbpostfix"><xsl:call-template name="createDBpostfix"><xsl:with-param name="archive" select="$archive"/></xsl:call-template></xsl:variable>
+		<xsl:variable name="href"><xsl:value-of select="concat($urlpre,$archive,substring-before(@href,'#'),$urlpost,$dbpostfix)"/></xsl:variable>
+		<xsl:variable name="anchor"><xsl:value-of select="substring-after(@href,'#')"/></xsl:variable>
+		<xsl:variable name="doc" select="document($href)"/>
+		<xsl:choose>
+			<xsl:when test="$doc//variable[ id=$anchor]"> <!-- test for a variable of that name -->
+				<xsl:apply-templates select="$doc//variable[ id=$anchor]" mode="embedded"/>
+			</xsl:when>
+			<xsl:otherwise> <!-- or give up -->
+				<span class="bug">[<xsl:value-of select="@href"/> not found].</span> 
+			</xsl:otherwise>
+		</xsl:choose>
+	</xsl:if>
+</xsl:template>
+
+<!-- Apply -->
+<xsl:template name="apply">
+	<xsl:param name="embedded" />
+	<xsl:choose>
+		<xsl:when test="$embedded = 'yes'">
+			<xsl:apply-templates mode="embedded"/>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:apply-templates />
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template name="getfpath">
+	<xsl:param name="s"/>
+	<xsl:param name="p"/>
+	<xsl:choose>
+		<xsl:when test="contains($s,'/')">
+			<xsl:call-template name="getfpath">
+				<xsl:with-param name="p"><xsl:value-of select="concat($p,substring-before($s,'/'),'/')"/></xsl:with-param>
+				<xsl:with-param name="s"><xsl:value-of select="substring-after($s,'/')"/></xsl:with-param>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:value-of select="$p"/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template name="getfname">
+	<xsl:param name="s"/>
+	<xsl:choose>
+		<xsl:when test="contains($s,'/')">
+			<xsl:call-template name="getfname">
+				<xsl:with-param name="s"><xsl:value-of select="substring-after($s,'/')"/></xsl:with-param>
+			</xsl:call-template>
+		</xsl:when>
+		<xsl:otherwise>
+			<xsl:value-of select="$s"/>
+		</xsl:otherwise>
+	</xsl:choose>
+</xsl:template>
+
+<xsl:template name="createDBpostfix">
+	<xsl:param name="archive"/>
+	<xsl:variable name="newDB">
+		<xsl:choose>
+			<xsl:when test="(substring($archive,1,6) = 'shared')"><xsl:value-of select="$Database"/></xsl:when>
+			<xsl:otherwise><xsl:value-of select="substring-before($archive,'/')"/></xsl:otherwise>
+		</xsl:choose>
+	</xsl:variable>
+	<xsl:value-of select="concat($am,'DbPAR=',$newDB)"/>
+</xsl:template>
+
+</xsl:stylesheet>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]