Reputation: 2561
I had performance problems when loading MathJax dynamically in my Plone 4 application. Thus, I found the Plone integration at https://github.com/collective/collective.mathjax and, as I noticed it does the same, forked it, which works well; I included a current MathJax 2.3 and changed the profile to use the "local" copy.
Now I wonder whether it is possible to choose between "online"/"remote" behaviour (load everything from rackcdn.com
) and the "default" behaviour (use the included copy) by choosing a profile when installing the product in the Plone QuickInstaller Tool.
I changed the configure.zcml
like this:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
i18n_domain="collective.mathjax">
<browser:resourceDirectory
name="mathjax"
directory="resources/MathJax" />
<genericsetup:registerProfile
name="default"
title="collective.mathjax: default"
directory="profiles/default"
description="collective.mathjax default profile: Includes MathJax 2.3."
provides="Products.GenericSetup.interfaces.EXTENSION" />
<genericsetup:registerProfile
name="online"
title="collective.mathjax: online"
directory="profiles/online"
description="collective.mathjax online profile: Load MathJax dynamically from rackcdn.com."
provides="Products.GenericSetup.interfaces.EXTENSION" />
</configure>
Unfortunately I can't see the "online" profile in the QuickInstaller, not even after deinstalling the product and changing the version number.
Update: In the console output, I found the following text:
INFO CMFQuickInstallerTool Multiple extension profiles found for product
collective.mathjax
. Used profile:collective.mathjax:default
Is there some fundamental misunderstanding, or what can I do to let people choose?
Upvotes: 2
Views: 165
Reputation: 5016
It is actually possible to have multiple "alternative" profiles show up in Quickinstaller - you just need to 'trick' GenericSetup by registering each profile for its own (sub)package.
So the trick is to put the profile definitions inside different configure.zcml
files that reside in different packages (directories), and making sure to include the <five:registerPackage package="."/>
directive in each configure.zcml
file.
While it works, I am not sure how recommendable this trick is: I found it in the dexterity.membrane
package, used as an example here:
First, a 'default' profile is registered completely normally in the main configure.zcml
of the dexterity.membrane
package. Nothing special - but note that it includes the content
subpackage:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five"
xmlns:i18n="http://namespaces.zope.org/i18n"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
i18n_domain="dexterity.membrane">
<!-- Include configuration for dependencies listed in setup.py -->
<includeDependencies package="." />
<!-- Grok the package to initialise schema interfaces and content classes -->
<i18n:registerTranslations directory="locales" />
<include package=".behavior" />
<include package=".content" />
<!-- Register an extension profile to make the product installable -->
<genericsetup:registerProfile
name="default"
title="dexterity.membrane: behaviors"
description="Configuration for the dexterity.membrane behaviors"
directory="profiles/default"
provides="Products.GenericSetup.interfaces.EXTENSION"
/>
<!-- Note that the example profile is registered in the content
directory. It is registered in such a way that both profiles
are visible and can be installed separately. Any upgrade steps
for that profile are also defined there. -->
<genericsetup:upgradeStep
title="Update profile"
description="Dummy step to fix profile registration after rename."
source="1000"
destination="1001"
handler="dexterity.membrane.migration.dummy_step"
profile="dexterity.membrane:default" />
<adapter name="Title" factory=".indexers.Title" />
<!-- -*- extra stuff goes here -*- -->
</configure>
Here's the configure.zcml
of the said content
subpackage: Nothing special either, except for the (second) registerPackage
directive, and the second profile:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five"
xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
i18n_domain="dexterity.membrane">
<!-- make this show up in the quickinstaller separately -->
<five:registerPackage package="."/>
<genericsetup:registerProfile
name="example"
title="dexterity.membrane: content"
description="Configuration for the dexterity.membrane example content type"
directory="../profiles/example"
provides="Products.GenericSetup.interfaces.EXTENSION"
/>
</configure>
Upvotes: 1
Reputation: 2561
To make an answer from the helpful comments of Ida and Keul:
git checkout <branch name>
buildout.cfg
to reflect the change.Upvotes: 0
Reputation: 7819
Plone Quickinstaller (both ZMI and Plone UI) will only display one profile as "installation" profile. The chosen ones will be the first found (alphabetically speaking).
To manually run a profile, go to the portal_setup
tool in ZMI, then go the the "Import" tab and select your wanted profile (the provided order here is a mess... you will probably find a very long combo box). At the end of the page select "Import all steps"
Upvotes: 3