Suga CRM Community Edition enables organizations to efficiently organize, populate, and maintain information on all aspects of their customer relationships. It is a bit more complex application then WordPress one. It consists of modules, each of which represents a specific functional aspect of CRM such as Accounts, Activities, Leads and Opportunities. These modules are designed to help managing customer accounts through each step of their lifecycle, starting with generating and qualifying leads to customer support and resolving reported bugs. The application is managed by administrator, who has power to regulate access for the application modules, customize the look and feel of the application across an organization. The application is accessed by users through Internet, so it requires a network access to be configured to a server that is running the Sugar software. SugarCRM uses GNU General Public License version 3 for the Sugar Community Edition. It requires the following components to be installed on server: PHP with memory limit 40Mb or higher, Apache and MySQL.
Note: above information is taken from application vendor home page.
Listed below are the sections of an APP-META.xml file supplied with your package:
<service id="instance">
<service id="account">
</service>
</service>
<requirements xmlns:php="http://apstandard.com/ns/1/php"
xmlns:db="http://apstandard.com/ns/1/db"
xmlns:apache="http://apstandard.com/ns/1/apache">
<php:version min="5.1.0"/>
<php:memory-limit>41943040</php:memory-limit>
<php:extension>mysql</php:extension>
<php:extension>mbstring</php:extension>
<db:db>
<db:id>main</db:id>
<db:default-name>sugarce</db:default-name>
<db:can-use-tables-prefix>true
</db:can-use-tables-prefix>
<db:server-type>mysql</db:server-type>
<db:server-min-version>4.1.2
</db:server-min-version>
</db:db>
</requirements>
class attribute to setting or setting group. This attribute inform Controller about the setting meaning. The Controller may decide whether to prompt customer or use some pre-defined values, basing on attribute meaning. Let's group these settings for better presentation, and write down it in the Specification terms. Here, we demonstrate only instance settings, to view the whole set, refer to the Appendix B. Sugar CRM Sample Metadata section.<service id="instance">
<settings>
<group class="authn">
<name>Administrator's Account</name>
<setting id="admin_name" type="string" default-value="admin"
min-length="1" max-length="32"
regex="^[a-zA-Z][0-9a-zA-Z_\-]*" class="login">
<name>Administrator's Login</name>
<error-message>Please make sure the text
you entered starts with a letter and
continues with either numbers, letters,
underscores or hyphens.
</error-message>
</setting>
<setting id="admin_password" type="password" class="password">
<name>Administrator's Password</name>
</setting>
</group>
<group class="web">
<setting id="title" type="string" default-value="SugarCRM"
class="title">
<name>System Name</name>
<description>This name will be displayed
in the browser title bar when users
visit the Sugar application.
</description>
</setting>
<setting id="send_usage_statistics"
type="enum" default-value="true"
installation-only="true">
<name>Send Anonymous Usage Statistics</name>
<description>If selected 'Yes', Sugar will
send anonymous statistics about your
installation to SugarCRM Inc. every
your system checks for new versions.
</description>
<choice id="true">
<name>Yes</name>
</choice>
<choice id="false">
<name>No</name>
</choice>
</setting>
<setting id="check_for_updates" type="enum"
default-value="automatic">
<name>Check For Updates</name>
<description>How the system will check
for updated versions of the application.
</description>
<choice id="automatic">
<name>Automatic</name>
</choice>
<choice id="manual">
<name>Manual</name>
</choice>
</setting>
</group>
</settings>
</service>
<provision>
<url-mapping>
<default-prefix>sugarcrm</default-prefix>
<installed-size>53547008</installed-size>
<mapping url="/" path="htdocs"
xmlns:php="http://apstandard.com/ns/1/php">
<php:handler>
<php:extension>php</php:extension>
</php:handler>
<mapping url="cache">
<php:permissions writable="true"/>
</mapping>
<mapping url="custom">
<php:permissions writable="true"/>
</mapping>
<mapping url="data">
<php:permissions writable="true"/>
</mapping>
<mapping url="modules">
<php:permissions writable="true"/>
</mapping>
<mapping url="tmp">
<php:permissions writable="true"/>
</mapping>
<mapping url="config.php" virtual="virtual">
<php:permissions writable="true"/>
</mapping>
</mapping>
</url-mapping>
</provision>
The application vendor states that any user could not be deleted, the only way to restrict access at all is to disable user. Considering this information, we added < element to the "usermanager" script.status-control/>
Add information about scripts to the respective provision sections of the metadata file. For example,
<service id="instance">
<provision>
<configuration-script name="configure">
<script-language>php</script-language>
</configuration-script>
</provision>
<service id="account">
<provision>
<configuration-script name="usermanager">
<script-language>php</script-language>
<status-control/>
</configuration-script>
</provision>
</service>
</service>
|
# Metadata container. XML file. |
|
|
|
# This script will be invoked when application instance is to be setup. |
|
|
|
# Icon and screenshots of the application |
|
|
|
# SugarCRM files |