4.5 <develStage> is not always required; when using civicrm.org's automated release management, this value is inferred from the version; for manual or private releases, the field should still be defined.
4.2 Most extensions should be packaged as generic *module* rather than type-specific extensions.
4.2 <downloadUrl> is optional for ordinary development; when using civicrm.org to distribute extensions, the <downloadUrl> will be specified when announcing the release on the website
4.2 <downloadUrl> can point to auto-generated zipballs on Github.com
4.2 Introduce stable support for generic modules.
4.1 Introduce experimental extension-type for generic modules*.*
3.3 Introduce extension-types for payment-processors, report-templates, and custom-searches.
| CiviCRM Version | Description |
| -- | -- |
| 4.5 | `<develStage>` is not always required; when using civicrm.org's automated release management, this value is inferred from the version; for manual or private releases, the field should still be defined.
| 4.2 | Most extensions should be packaged as generic *module* rather than type-specific extensions.
| 4.2 | `<downloadUrl>` is optional for ordinary development; when using civicrm.org to distribute extensions, the `<downloadUrl>` will be specified when announcing the release on the website
| 4.2 | `<downloadUrl>` can point to auto-generated zipballs on Github.com
| 4.2 | Introduce stable support for generic modules.
| 4.1 | Introduce experimental extension-type for generic modules.
| 3.3 | Introduce extension-types for payment-processors, report-templates, and custom-searches.
</div>
# Packaging
## Packaging
For redistribution, an extension must be packaged as a .zip file which
meets these requirements:
...
...
@@ -36,12 +31,11 @@ meets these requirements:
folder should match the extension's unique key. (In 4.1 and earlier,
the matched name was mandatory. In 4.2 and later, the matched name
is optional.)
- The folder must include a file named "info.xml" which meets the
- The folder must include a file named `info.xml` which meets the
@@ -260,15 +253,10 @@ Every extension has unique name called an **extension key**. It's built
using Java-like reverse domain naming to make it easier to identify
unique extensions.
Extension key examples
<divclass="panelMacro">
+--+
| |
+--+
</div>
* If your website is `circleinteractive.co.uk`, and you've developed a payment processor plugin for Sagepay, your extension key might be: `uk.co.circleinteractive.payment.sagepay`
* If your website is `civiconsulting.com`, and you're developing a custom search for event registration, your extension key might be: `com.civiconsulting.search.eventregistration`.
<description>Excel isn't very good at importing csv files. If you have screamed at your computer with weird characters, long lines of gibberish and hair pulling, this extension is for you.
Technically, it isn't excel but an html table with a header that pretends to be excel. Close enough to trick excel to behave like it doesn't hate you too much.
<description>Excel isn't very good at importing csv files. If you have screamed at your computer with weird characters, long lines of gibberish and hair pulling, this extension is for you.
Technically, it isn't excel but an html table with a header that pretends to be excel. Close enough to trick excel to behave like it doesn't hate you too much.