On Tue, 2007-01-09 at 23:18 +0900, Gav.... wrote:
> Just looking at resources.xmap....
>
> 1..<map:match pattern="**/images/**.*">
> ....<map:select type="exists">
> 2.....<map:when test="{lm:project.images.{1}/images/{2}.{3}}">
> 3.......<map:read src="{lm:project.images.{1}/images/{2}.{3}}" mime
> type="image/{3}" />
> ......</map:when>
> 4.....<map:when test="{lm:project.images.{2}.{3}}">
> 5.......<map:read src="{lm:project.images.{2}.{3}}" mime-type="image/{3}" />
> ......</map:when>
> ....</map:select>
> ...</map:match>
>
>
> Just want to walk through this make sure I got it right.
To start with, above resolving actually should not be in there but in
the locationmap (it uses 2 locationmap locations). Further since we here
reserving an user url space for forrest we need to add this to the
reserved url pattern list.
>
>
> 1. If any file exists in an images directory anywhere in the project (or
> even above it)
>
> Bearing in mind my understanding is that :-
>
> Project.images == project.content-dir/images
> Project.content-dir == xdocs
>
> Therefore project.images == xdocs/images
>
> Also bearing in mind that ** could also contain directory levels.
Well to find out the real locations of
lm://project.images.{1}/images/{2}.{3} or lm://project.images.{2}.{3}
you need to lookup the locationmap matches for above.
1 (**/images/**.*) really just says any directory before {1} /images/
and having arbitrary directories {2} after and a final extension {3}.
Example that will match:
foo/images/bar.gif
morefoo/images/morebar.jpg
>
> 2. Test for xdocs/images/**/images/**.*
no, wrong
would try to lookup {lm:project.images.{1}/images/{2}.{3}}
Actually I could not find anything in the core that would match this.
>
> 3. read result of 2. and give it a mime type of same extension.
>
yes, right.
> 4. test for xdocs/images/**.*
no, wrong. Test locationmap:
<match pattern="project.images.**.*">
<select>
<location src="{properties:resources.images}{1}.{2}" />
<location
src="{properties:content}../resources/images/{1}.{2}" />
<location src="{properties:content.xdocs}images/{1}.{2}" />
<location src="{properties:content.xdocs}{1}.{2}" />
</select>
</match>
> 5. read result of 4. and give it a mime type of same extension.
>
right.
>
> Questions :-
>
> a) - Can the pattern be narrowed down a bit?
>
How? By reg exp, yes lots of examples in plugins.
> b) - The first 'when test' seems wrong to me and two images directories are
> hard coded as part of the test, therefore unlikely to ever match anything.
> Have I got this wrong ?
Well, ther will try to lookup a lm location so we cannot make any
statements of hard coded. However I could not find a match in the lm in
the core that would match. Meaning that would be needed to be defined in
the project lm.
>
> c) - The second 'when test' seems better and more likely to match any image
> in the xdocs/images/ directory. But, due to the two-asterisk wildcard **
> could also introduce further directory levels, is this necessary ?
>
If you e.g. categorize your images then you likely end up with a
directory hierarchy in image naming.
> d) - The locationmap.xml also has similar matching, has the above now been
> made redundant anyway or is it still in use in places?
>
> Talking about the Locationmap :-
>
> 1....<match pattern="project.images.**.*">
> ........<select>
> 2.........<location src="{properties:resources.images}{1}.{2}" />
> 3.........<location src="{properties:content}../resources/images/{1}.{2}" />
> 4.........<location src="{properties:content.xdocs}images/{1}.{2}" />
> 5.........<location src="{properties:content.xdocs}{1}.{2}" />
> ........</select>
> .....</match>
>
> As I understand the above :-
>
> Properties:resources.images == src/documentation/resources/images
yes
> Properties:content == src/documentation/content
no.
{properties:content}../resources/images/{1}.{2}
is not equal src/documentation/content
it is equal to src/documentation/content/../resources/images/ which is
equal to src/documentation/resources/images/ which is actually equal to
the first assuming default configuration.
> Properties:content.xdocs == src/documentation/xdocs
>
yes.
you missed one 4) Properties:content.xdocs/images ==
src/documentation/xdocs/images
> Therefore :-
>
> 1. Test for xdocs/images/**.* -- Seems we are only testing xdocs ???
where is the 1. coming from?
> 2. look in src/documentation/resources/images/**.*
> 3. look in src/documentation/resources/images/**.*
> 4. look in src/documentation/xdocs/images/**.*
> 5. look in src/documentation/xdocs/**.*
>
see above.
> Observations :-
>
> a) - Due to the match pattern, neither resources locations will get looked
> at.
such as?
> B) - We still have ** wildcard matching, meaning extra directories both
> higher up and lower down the tree, again is this needed quite as liberally
> As this, can we not restrict locations a bit more.
Hmm, do not know. Why we should not allow arbitrary subdirs?
>
> I was just wondering also if this liberal sprinklings of ** here was causing
> Our headaches of image paths being all over the place, except where we want
> Them to be found.
No it is the multiple fallbacks (most legacy) for image locations. What
we need it is a diet. More true when the dispatcher is further bringing
a source of image resolving (a svg could be defined by a structurer).
>
> In context, I am again looking into the FOR-635 and other related images not
>
> Showing up. The .fo files are clearly showing that they are being resolved
wait. linked! Did you test the url this linking gives?
> Wrongly and that maybe we are just being lucky with html matching of these
> Images due to dot-dots or something else fixing otherwise masked problems.
>
Not sure really. Images should be matched without magic. Max 3 different
places by default (rest should be explained in docs). Let us just agree
on 3 different ways to call an images.
> I have probably got this all wrong, just trying to clear it in my mind.
>
Thanks for bringing this up here.
salu2
> Gav...
>
--
thorsten
"Together we stand, divided we fall!"
Hey you (Pink Floyd)