Hi,

On 3 Apr 2015 at 19:27:14, Denis Gervalle 
([email protected](mailto:[email protected])) wrote:

> Hi Eduard,
>  
> AFAIK, Vincent is actively working on a fix that will allow to fix this and
> support more URL mappings.
> You should see with him about his work in progress.

Actually we talked about it on IRC. I’m working on adding the ability to 
register new resource types (the “bin”, “rest”, “xmlrpc”, etc part of the URL). 
The WebJar URL format is independent of my work actually (the only consequence 
of my work on webjar urls is the start of the URL, i.e. 
http://<server>/<context path>/webjars/[rest of URL]).

Thanks
-Vincent


> Regards,
>  
> On Fri, Apr 3, 2015 at 6:38 PM, Eduard Moraru wrote:
>  
> > Hi,
> >
> > Currently, the webjars URL mapping is the following:
> >
> > http://localhost:8080/xwiki/bin/webjars/resources/path?value=
> > %2F%2F
> >
> > Example:
> > $services.webjars.url('codemirror', 'lib/codemirror.js')
> > returns
> >
> > http://localhost:8080/xwiki/bin/webjars/resources/path?value=codemirror%2F5.1/lib/codemirror.js
> >
> > The problem with this is that require modules that use relative paths for
> > their dependencies are broken because of the URL mapping we use, more
> > specifically by the "?" character inside the URL we use.
> >
> > A concrete example is the CodeMirror webjar that defines its own modules
> > which express their dependencies relatively: "../../lib/codemirror"
> >
> > Here we have a problem, since if we directly depend on
> > "$services.webjars.url('codemirror', 'mode/css/css.js')", the module will
> > fail to find its relatively defined dependency.
> >
> > One approach would be to define paths, so that requirejs can work its
> > magic:
> >
> > require.config({
> > paths: {
> > cm : "
> >
> > http://localhost:8080/xwiki/bin/webjars/resources/path?value=codemirror%2F5.1
> > "
> > }
> > });
> >
> > require(["cm/lib/codemirror", "cm/mode/css/css"], function (CodeMirror) {
> > console.log(CodeMirror);
> > });
> >
> > This properly finds "/lib/codemirror.js" and "mode/css/css.js" that we
> > explicitly request, however, the internal dependency of css.js fails to be
> > found at the resolved URL "
> >
> > http://localhost:8080/xwiki/bin/webjars/resources/path?value=codemirror%2F5.1/lib/codemirror
> > ".
> >
> > Requirejs does not add the ".js" extension to the resolved path because the
> > resolved path contains a "?" character so it is considered an absolute URL,
> > not a relative path.
> >
> > The proposal is to stop using this URL mapping, since it is awkward to have
> > paths in parameters and, instead, use a more intuitive one that is both
> > good for clients and for requirejs.
> >
> > The proposed mapping/scheme is:
> >
> > http://localhost:8080/xwiki/bin/webjars///
> >
> > Any additional parameters that we might need for the webjars action would
> > be appended at the end. There is currently 1 case that I know of, which is
> > "evaluate=true|false".
> >
> > Without this change, I can not find any solution to using a webjar such as
> > CodeMirror that uses relative defined modules.
> >
> > Thanks,
> > Eduard
> >
> > P.S.: Any additional advice on using requirejs to circumvent this
> > limitation is most than welcomed.
> > _______________________________________________
> > devs mailing list
> > [email protected]
> > http://lists.xwiki.org/mailman/listinfo/devs
> >
>  
>  
>  
> --
> Denis Gervalle
> SOFTEC sa - CEO
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to