Looks like a component version of skinx plugin (which should be done
anyway since the plugin way is deprecated).

On Wed, Dec 2, 2009 at 10:42, Caleb James DeLisle
<[email protected]> wrote:
> I'd like to start making a component to manage javascript and css, I imagine 
> the
> interface as follows:
>
> /**
>  * ExternalContentManager is able to take content which is external to the 
> HTML (eg: Javascript and CSS)
>  * and register it with specifications for the context, when the context 
> meets these specifications
>  * (for example the value of the key: "wiki" is "xwiki" or the value of the 
> key "doc" is "Main.WebHome" or both)
>  * the script will be imported when getImportString() is called.
>  */
> public interface ExternalContentManager
>
>    /**
>     * The first three methods compare the configuration to the 
> ExecutionContext
>     * good for the future but not very useful at the moment.
>     */
>
>    /**
>     * @param The source of the external content
>     * @param config The configuration for when and how to use this source.
>     */
>    void register(ExternalContentSource source, ExternalContentConfig config)
>
>    /**
>     * @param The source of the external content
>     * @param config The configuration for when and how to use this source, 
> header, footer and minify are disregarded
>     */
>    void unregister(ExternalContentSource source, ExternalContentConfig config)
>
>    /**
>     * Unregister everything for this configuration, null unregisters 
> everything.
>     * @param config The configuration for when and how to use this source, 
> header, footer and minify are disregarded
>     */
>    void unregisterAll(ExternalContentConfig config)
>
>
>    /**
>     * Because most information is still stored in the XWikiContext
>     * add compatibility methods which compare the whenToUse parameter in the
>     * configuration to the XWikiContext.
>     */
>
>    /**
>     * @param The source of the external content
>     * @param config The configuration for when and how to use this source.
>     */
>    void registerx(ExternalContentSource source, ExternalContentConfig config)
>
>    /**
>     * @param The source of the external content
>     * @param config The configuration for when and how to use this source, 
> header, footer and minify are disregarded
>     */
>    void unregisterx(ExternalContentSource source, ExternalContentConfig 
> config)
>
>    /**
>     * Unregister everything for this configuration, null unregisters 
> everything.
>     * @param config The configuration for when and how to use this source, 
> header, footer and minify are disregarded
>     */
>    void unregisterAllx(ExternalContentConfig config)
>
>    /**
>     * @return A string of HTML which contains import statments for all of the 
> scripts which should
>     *    be imported based on the values in the ExecutionContext and 
> XWikiContext.
>     */
>    String getImportString()
> }
>
>
>
>
>
>
>
>
> /**
>  * ExternalContentConfig is a set of configurations to be passed to the 
> ExternalComponentManager when
>  * adding a source to be used.
>  */
> interface ExternalContentConfig extends Map
> {
>    /**
>     * @param header This is prepended to the source after minifying but 
> before concatination, use for license info
>     */
>    void setHeader(String header)
>
>    /**
>     * @param footer This is appended to the source after minifying but before 
> concatination
>     */
>    void setFooter(String footer)
>
>    /**
>     * @param shouldMinify make this false to avoid minifying the source, 
> default: true
>     */
>    void shouldMinify(boolean shouldMinify)
>
>    /**
>     * @param whenToUse Each of the values must match value given by the same 
> key from the context after toString() is called on it.
>     */
>    void useSourceWhen(Map<String, String> whenToUse)
> }
>
>
>
>
>
>
> public interface ExternalContentSource
> {
>    public enum SourceType {
>
>        /** The source comes from a file in the servlet context. */
>        SERVLET_CONTEXT,
>
>        /** The source comes from a jar in the classpath. */
>        CLASSPATH,
>
>        /** The source comes from an unknown origin and the code is given in 
> this string. */
>        STRING,
>
>    }
>
>    /**
>     * Set the origin of the source, if sourceType is a string then this is 
> the source itself.
>     */
>    void SetOrigin(String origin)
>
>    /**
>     * Get the code of the source from where it is stored.
>     */
>    String() getOrigin()
>
>    /**
>     * Set the type of source this is.
>     */
>    void SetType(SourceType type)
>
>    /**
>     * Get the type of surce this is.
>     */
>    SourceType GetType()
> }
>
>
> I would like to implement this interface using jawr to compress, concatenate,
> and cache the sources, but the interface does not require any more than what
> skinx does except not on a per-request basis.
>
> What do you think?
> Any other ideas.
>
> Caleb James DeLisle
>
> _______________________________________________
> devs mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/devs
>



-- 
Thomas Mortagne
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to