Kevin wrote:
Thorsten Scherler wrote:

Hi Kevin,

http://svn.apache.org/viewcvs?view=rev&rev=159868

Rick commited some code to make
forrest/trunk/main/webapp/resources/stylesheets/project2text.xsl more
generic.


Thank you for your help. I'll look at how project2text.xsl is
called so I understand things correctly. I appreciate your ideas
below and will use the new svn version.

Kevin.

If you make an svn up your problem may be already solved. ;-)

Changing the stopping color may be easier to change directly in the
*.svg code.

HTH
thorsten


Hi Thorsten,

I have looked at project2text.xsl and if I understand right it
outputs the values of document (skinconf.xml) children not all
descendants? I couldn't implement the suggested idea below:

<svg-stop>
  <stop style="stop-color:white" offset="0"/>
  <stop style="stop-color:lightgreen" offset="1"/>
</svg-stop>

instead, knowing I can access top level text elements:

<svg-color1>white</svg-color1>
<svg-color2>darkblue</svg-color2>

--

Also I am confused to how project2text.xsl works. I understand
the xml file is group.svg and transformed with project2text.xsl
replacing <for:element /> in the svg somehow with elements from
another xml ie. skinconf.xml possibly after it's own transform
with skin and common skinconf.xsl files. It's this:

<xsl:variable name="config" select="//skinconfig"/>

how does it hook into the <skinconf> tree. "//skinconfig" means
all "skinconfig" descendants of the document element? I'm wrong
in my understanding :( but anyway I have completed a solution :)

--

1) Change group.svg and project.svg:

....

<style type="text/css">
.c1 { stop-color: <for:svg-color1 />; }
.c2 { stop-color: <for:svg-color2 />; }
</style>

<linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
  <stop class="c1" offset="0"/>
  <stop class="c2" offset="0.5"/>
</linearGradient>

....

2) Change forrest/main/webapp/skins/common/skinconf.xsl

    <xsl:template match="skinconfig">
      <xsl:copy>

<xsl:if test="not(svg-color1)">
<xsl:choose>
<xsl:when test="colors/[EMAIL PROTECTED]'tab-unselected']">
<svg-color1><xsl:value-of select="colors/[EMAIL PROTECTED]'tab-unselected']/@value"/></svg-color1>
</xsl:when>
<xsl:otherwise>
<svg-color1>white</svg-color1>
</xsl:otherwise>
</xsl:choose>
</xsl:if>


<xsl:if test="not(svg-color2)">
<xsl:choose>
<xsl:when test="colors/[EMAIL PROTECTED]'tab-selected']">
<svg-color2><xsl:value-of select="colors/[EMAIL PROTECTED]'tab-selected']/@value"/></svg-color2>
</xsl:when>
<xsl:otherwise>
<svg-color2>darkblue</svg-color2>
</xsl:otherwise>
</xsl:choose>
</xsl:if>


....

3) Change forrest/main/webapp/resources/schema/dtd/skinconfig-v06-3.dtd

....
   svg-color1?, svg-color2?,
....
  <!ELEMENT svg-color1 (#PCDATA)>
  <!ELEMENT svg-color2 (#PCDATA)>
....

--

Well not a very elegant solution but anyway thanks again for
your help.

Kevin.



On Sat, 2005-04-02 at 21:45 +0200, Thorsten Scherler wrote:

On Sat, 2005-04-02 at 14:04 +0100, Kevin wrote:

Hi,

I'm using 0.7-dev and wondered if it was possible
to use other text elements from processed skinconf
as done in group.svg and project.svg.

ie. from

forrest run

http://localhost:port/images/group.png

shows the skinconf text in group.svg:

<for:group-name />

--

The 'for' namespace allowed <for:project-name />
but not <for:year /> which was in skinconf too?


Yes and no. The for:group-name will be matches later on in {forrest-trunk}/main/webapp/resources/stylesheets/project2text.xsl

Here you find:
<xsl:template match="for:project-name">
   <xsl:value-of select="$config/project-name"/>
 </xsl:template>

<xsl:template match="for:group-name">
   <xsl:value-of select="$config/group-name"/>
 </xsl:template>
</xsl:stylesheet>

...and no <for:year />!

You would need to add new matches here if you want to extend the
functionality.


After a refresh I expected group.png to show the
year as it did changing group-name to project-name?


Yes and no.

Actually for project-name the match was on the project.svg which has
<for:project-name/>

Could someone help with my understanding of how
this works. Thanks.


You will need into the above xsl's and where we match them to really understand what is going on. ;-)

HTH


--

My aim was to get the svg linearGradient stop-colors
in skinconf (from colors.color.tab-selected etc.) eg.
<svg-stop-color-1>#4c6c8f</svg-stop-color-1>
<svg-stop-color-2>#e5e4d9</svg-stop-color-2>
so the project and group logo colors would match the
skin.


An easy way would be (I had no time to test!) but it gives you the idea (I hope ;-)):

a) extend the skinconf.dtd to allow and add to skinconf.xml:
<svg-stop>
 <stop style="stop-color:white" offset="0"/>
 <stop style="stop-color:lightgreen" offset="1"/>
</svg-stop>

b) change project.svg and group.svg and change:
   <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
     <stop style="stop-color:white" offset="0"/>
     <stop style="stop-color:lightgreen" offset="1"/>
   </linearGradient>

to:
   <linearGradient id="gradient" x1="0" y1="0" x2="0" y2="1">
     <for:stop />
   </linearGradient>

c) change project2text.xsl and add
 <xsl:template match="for:stop">
   <xsl:copy-of select="$config/svg-stop/*"/>
 </xsl:template>

This solution would change the project and group logo the same way. If
you want to have it different you need to do something like :

in skinconf.xml
<project-svg-stop>
 <stop style="stop-color:white" offset="0"/>
 <stop style="stop-color:lightgreen" offset="1"/>
</project-svg-stop>

...and change all above to match the new situation. ;-)


Used in an an svg <style> element:

<style type="text/css">
.svg-stop-color2 {
              stop-color: <for:svg-stop-color-2 />;
}
.svg-stop-color1 {
              stop-color: <for:svg-stop-color-1 />;
}
</style>

That is as well possible but will cost a wee bit much work.


The above shows the idea probably need CDATA tags.


HTH and if it is working please create a patch, add it to our issue tracker and we will apply the patch.


--

Kevin.


salu2



Reply via email to