Skip to content

Instantly share code, notes, and snippets.

@eddieajau
Created January 28, 2013 00:05
Show Gist options
  • Save eddieajau/4651530 to your computer and use it in GitHub Desktop.
Save eddieajau/4651530 to your computer and use it in GitHub Desktop.
Eclipse snippet category for backend component edit pages in Joomla 2.5 (all except view layouts are applicable for Joomla 3.0). Includes: Backend Item Sub-controller, Backend Item Model, Backend Item XML Form, Backend Item Edit View, backend Item Edit Layout, Backend Item Edit Params Sub-layout, Backend Item Edit Metadata Sub-layout, Backend It…
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<snippets>
<category filters="*" id="category_1276571442053" initial_state="1" label="Backend Edit Pages" largeicon="" smallicon="">
<description><![CDATA[Snippets specifically for creating backend edit views.]]></description>
<item category="category_1276571442053" class="" editorclass="" id="item_1276505902148" label="Backend Item Subcontroller" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[This snippet adds the basic sub-controller for single item.]]></description>
<content><![CDATA[jimport('joomla.application.component.controllerform');
/**
* ${VIEW} Subcontroller.
*
* @package ${PACKAGE}
* @subpackage ${SUBPACKAGE}
* @since ${SINCE}
*/
class ${NAME}Controller${VIEW} extends JControllerForm
{
}]]></content>
<variable default="" id="name_1" name="PACKAGE">
<description><![CDATA[The API package.]]></description>
</variable>
<variable default="" id="name_2" name="SUBPACKAGE">
<description><![CDATA[The API subpackage.]]></description>
</variable>
<variable default="1.0" id="name_3" name="SINCE">
<description><![CDATA[The version this feature was added.]]></description>
</variable>
<variable default="" id="name_4" name="NAME">
<description><![CDATA[The proper case name of the component (without com_).]]></description>
</variable>
<variable default="" id="name_5" name="VIEW">
<description><![CDATA[The proper case name of the view.]]></description>
</variable>
</item>
<item category="category_1276571442053" class="" editorclass="" id="item_1276506088293" label="Backend Item Model" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[This snippet is for a backend item (singular) model that supports editing.]]></description>
<content><![CDATA[jimport('joomla.application.component.modeladmin');
/**
* ${MODEL} model.
*
* @package ${PACKAGE}
* @subpackage ${SUBPACKAGE}
* @since ${SINCE}
*/
class ${NAME}Model${MODEL} extends JModelAdmin
{
/**
* Method to get the ${MODEL} form.
*
* @param array $data An optional array of data for the form to interogate.
* @param boolean $loadData True if the form is to load its own data (default case), false if not.
*
* @return JForm A JForm object on success, false on failure
* @since ${SINCE}
*/
public function getForm($data = array(), $loadData = true)
{
// Get the form.
$form = $this->loadForm(
$this->option.'.'.$this->name,
$this->getName(),
array('control' => 'jform', 'load_data' => $loadData)
);
if (empty($form)) {
return false;
}
return $form;
}
/**
* Method to get a ${MODEL}.
*
* @param integer $pk An optional id of the object to get, otherwise the id from the model state is used.
*
* @return mixed Category data object on success, false on failure.
* @since 1.6
*/
public function getItem($pk = null)
{
if ($result = parent::getItem($pk)) {
// Convert the created and modified dates to local user time for display in the form.
jimport('joomla.utilities.date');
$tz = new DateTimeZone(JFactory::getApplication()->getCfg('offset'));
if (intval($result->created_time)) {
$date = new JDate($result->created_time);
$date->setTimezone($tz);
$result->created_time = $date->toMySQL(true);
}
else {
$result->created_time = null;
}
if (intval($result->modified_time)) {
$date = new JDate($result->modified_time);
$date->setTimezone($tz);
$result->modified_time = $date->toMySQL(true);
}
else {
$result->modified_time = null;
}
}
return $result;
}
/**
* A protected method to get a set of ordering conditions.
*
* @param JTable $table A record object.
*
* @return array An array of conditions to add to add to ordering queries.
* @since ${SINCE}
*/
protected function getReorderConditions($table = null)
{
$condition = array(
'category_id = '.(int) $table->category_id
);
return $condition;
}
/**
* Returns a reference to the a Table object, always creating it.
*
* @param type $type The table type to instantiate
* @param string $prefix A prefix for the table class name.
* @param array $config Configuration array for model.
*
* @return JTable A database object
* @since ${SINCE}
*/
public function getTable($type = '${MODEL}', $prefix = '${NAME}Table', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
/**
* Method to get the data that should be injected in the form.
*
* @return mixed The data for the form.
* @since ${SINCE}
*/
protected function loadFormData()
{
// Check the session for previously entered form data.
$data = JFactory::getApplication()->getUserState($this->option.'.edit.'.$this->getName().'.data', array());
if (empty($data)) {
$data = $this->getItem();
}
return $data;
}
/**
* Prepare and sanitise the table prior to saving.
*
* @param JTable $table The table object for the record.
*
* @return boolean True if successful, otherwise false and the error is set.
* @since ${SINCE}
*/
protected function prepareTable($table)
{
jimport('joomla.filter.output');
// Prepare the alias.
$table->alias = JApplication::stringURLSafe($table->alias);
// If the alias is empty, prepare from the value of the title.
if (empty($table->alias)) {
$table->alias = JApplication::stringURLSafe($table->title);
}
if (empty($table->${PK})) {
// For a new record.
// Set ordering to the last item if not set
if (empty($table->ordering)) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('MAX(ordering)');
$query->from('#__${DBTABLE}');
$query->where('category_id = '.(int) $table->category_id);
$max = (int) $db->setQuery($query)->loadResult();
if ($error = $db->getErrorMsg()) {
$this->setError($error);
return false;
}
$table->ordering = $max + 1;
}
}
// Clean up keywords -- eliminate extra spaces between phrases
// and cr (\r) and lf (\n) characters from string
if (!empty($this->metakey)) {
// Only process if not empty.
// array of characters to remove.
$strip = array("\n", "\r", '"', '<', '>');
// Remove bad characters.
$clean = JString::str_ireplace($strip, ' ', $this->metakey);
// Create array using commas as delimiter.
$oldKeys = explode(',', $clean);
$newKeys = array();
foreach ($oldKeys as $key)
{
// Ignore blank keywords
if (trim($key)) {
$newKeys[] = trim($key);
}
}
// Put array back together, comma delimited.
$this->metakey = implode(', ', $newKeys);
}
}
}]]></content>
<variable default="" id="name_1" name="PACKAGE">
<description><![CDATA[The API package.]]></description>
</variable>
<variable default="" id="name_2" name="SUBPACKAGE">
<description><![CDATA[The API subpackage.]]></description>
</variable>
<variable default="1.0" id="name_3" name="SINCE">
<description><![CDATA[The version this feature was added.]]></description>
</variable>
<variable default="" id="name_4" name="NAME">
<description><![CDATA[The proper case name of the component (without com_).]]></description>
</variable>
<variable default="" id="name_5" name="MODEL">
<description><![CDATA[The proper case name of the model.]]></description>
</variable>
<variable default="" id="name_6" name="DBTABLE">
<description><![CDATA[The name of the database table which stores the record (without a prefix).]]></description>
</variable>
<variable default="id" id="name_7" name="PK">
<description><![CDATA[The name of the primary key in the database table.]]></description>
</variable>
</item>
<item category="category_1276571442053" class="" editorclass="" id="item_1276515761870" label="Backend Item XML Form" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[This snippet is the basic XML form that will support the edit view for a record. Modify the fields to suit the actual data schema used in the component.]]></description>
<content><![CDATA[<?xml version="1.0" encoding="utf-8"?>
<!-- $Id$ -->
<form>
<fieldset>
<field name="${PK}"
type="text"
label="JGLOBAL_FIELD_ID_LABEL"
description ="JGLOBAL_FIELD_ID_DESC"
default="0"
class="readonly"
size="10"
readonly="true" />
<field name="category_id"
type="category"
extension="${OPTION}"
label="JCATEGORY"
description="JFIELD_CATEGORY_DESC"
default="0"
class="inputbox"
required="true">
<option value="0">JOPTION_NO_CATEGORY</option>
</field>
<field name="title"
type="text"
label="JGLOBAL_TITLE"
description="JFIELD_TITLE_DESC"
class="inputbox"
size="45"
required="true" />
<field name="alias"
type="text"
label="JFIELD_ALIAS_LABEL"
description="JFIELD_ALIAS_DESC"
class="inputbox"
size="45" />
<field name="body"
type="editor"
label="${OPTION}_FIELD_BODY_LABEL"
description="${OPTION}_FIELD_BODY_DESC"
class="inputbox"
filter="safehtml"
buttons="true" />
<field name="note"
type="text"
label="JFIELD_NOTE_LABEL"
description="JFIELD_NOTE_DESC"
class="inputbox"
size="45" />
<field name="published"
type="list"
label="JPUBLISHED"
description="JFIELD_PUBLISHED_DESC"
default="1"
class="inputbox"
filter="intval"
size="1">
<option value="1">
JPUBLISHED</option>
<option value="0">
JUNPUBLISHED</option>
<option value="2">
JARCHIVED</option>
<option value="-2">
JTRASHED</option>
</field>
<field name="ordering"
type="text"
label="JFIELD_ORDERING_LABEL"
description="JFIELD_ORDERING_DESC"
default="0"
class="inputbox"
size="6" />
<field name="access"
type="accesslevel"
label="JFIELD_ACCESS_LABEL"
description="JFIELD_ACCESS_DESC"
class="inputbox"
size="1" />
<field name="language"
type="contentlanguage"
label="JFIELD_LANGUAGE_LABEL"
description="JFIELD_FIELD_LANGUAGE_DESC"
default="*"
class="inputbox">
<option value="*">JALL</option>
</field>
<field name="metadesc"
type="textarea"
label="JFIELD_META_DESCRIPTION_LABEL"
description="JFIELD_META_DESCRIPTION_DESC"
class="inputbox"
rows="3"
cols="30" />
<field name="metakey"
type="textarea"
label="JFIELD_META_KEYWORDS_LABEL"
description="JFIELD_META_KEYWORDS_DESC"
class="inputbox"
rows="3"
cols="30" />
<field name="checked_out"
type="hidden"
filter="unset" />
<field name="checked_out_time"
type="hidden"
filter="unset" />
<field name="created_user_id"
type="hidden"
filter="unset" />
<field name="created_time"
type="text"
label="${OPTION}_FIELD_CREATED_TIME_LABEL"
description="${OPTION}_FIELD_CREATED_TIME_DESC"
class="readonly"
size="20"
readonly="true"
filter="unset" />
<field name="modified_user_id"
type="hidden"
filter="unset" />
<field name="modified_time"
type="text"
label="${OPTION}_FIELD_MODIFIED_TIME_LABEL"
description="${OPTION}_FIELD_MODIFIED_TIME_DESC"
class="readonly"
size="20"
readonly="true"
filter="unset" />
</fieldset>
<fields name="params">
<fieldset name="basic" label="${OPTION}_BASIC_PARAMS_FIELDSET_LABEL">
<field name="show_title"
type="list"
label="JGLOBAL_SHOW_TITLE_LABEL"
description="${OPTION}_PARAM_SHOW_TITLE_DESC">
<option value="">JGLOBAL_USE_GLOBAL</option>
<option value="0">JHIDE</option>
<option value="1">JSHOW</option>
</field>
</fieldset>
<fieldset name="advanced" label="${OPTION}_ADVANCED_PARAMS_FIELDSET_LABEL">
<field name="layout"
type="componentlayout"
label="JFIELD_ALT_LAYOUT_LABEL"
description="JFIELD_ALT_COMPONENT_LAYOUT_DESC"
extension="${OPTION}"
view="${LAYOUT_VIEW}" />
</fieldset>
</fields>
</form>
]]></content>
<variable default="" id="name_1" name="OPTION">
<description><![CDATA[The upper case option for the component (with com_).]]></description>
</variable>
<variable default="" id="name_2" name="LAYOUT_VIEW">
<description><![CDATA[The lower case name of the frontend view that displays this type of item.]]></description>
</variable>
<variable default="id" id="name_3" name="PK">
<description><![CDATA[The name of the primary key of the database table.]]></description>
</variable>
</item>
<item category="category_1276571442053" class="" editorclass="" id="item_1276513628360" label="Backend Item Edit View" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[This snippet adds the typical view class for a backend edit/single item view.]]></description>
<content><![CDATA[jimport('joomla.application.component.view');
/**
* ${NAME} view.
*
* @package ${PACKAGE}
* @subpackage ${SUBPACKAGE}
* @since ${SINCE}
*/
class ${NAME}View${VIEW} extends JView
{
/**
* @var JObject The data for the record being displayed.
* @since ${SINCE}
*/
protected $item;
/**
* @var JForm The form object for this record.
* @since ${SINCE}
*/
protected $form;
/**
* @var JObject The model state.
* @since ${SINCE}
*/
protected $state;
/**
* Prepare and display the ${VIEW} view.
*
* @return void
* @since ${SINCE}
*/
public function display()
{
// Intialiase variables.
$this->item = $this->get('Item');
$this->form = $this->get('Form');
$this->state = $this->get('State');
// Check for errors.
if (count($errors = $this->get('Errors'))) {
JError::raiseError(500, implode("\n", $errors));
return false;
}
$this->addToolbar();
parent::display();
}
/**
* Add the page title and toolbar.
*
* @return void
* @since ${SINCE}
*/
protected function addToolbar()
{
JRequest::setVar('hidemainmenu', true);
$user = JFactory::getUser();
$isNew = ($this->item->${PK} == 0);
$checkedOut = !($this->item->checked_out == 0 || $this->item->checked_out == $user->get('id'));
$canDo = ${NAME}Helper::getActions();
JToolBarHelper::title(
JText::_(
'COM_${NAME}_'.
($checkedOut
? 'VIEW_${VIEW}'
: ($isNew ? 'ADD_${VIEW}' : 'EDIT_${VIEW}')).'_TITLE'
)
);
// If not checked out, can save the item.
if (!$checkedOut && $canDo->get('core.edit')) {
JToolBarHelper::apply('${CONTROLLER_ITEM}.apply', 'JTOOLBAR_APPLY');
JToolBarHelper::save('${CONTROLLER_ITEM}.save', 'JTOOLBAR_SAVE');
JToolBarHelper::custom('${CONTROLLER_ITEM}.save2new', 'save-new.png', null, 'JTOOLBAR_SAVE_AND_NEW', false);
}
// If an existing item, can save to a copy.
if (!$isNew && $canDo->get('core.create')) {
JToolBarHelper::custom('${CONTROLLER_ITEM}.save2copy', 'save-copy.png', null, 'JTOOLBAR_SAVE_AS_COPY', false);
}
if (empty($this->item->${PK})) {
JToolBarHelper::cancel('${CONTROLLER_ITEM}.cancel', 'JTOOLBAR_CANCEL');
}
else {
JToolBarHelper::cancel('${CONTROLLER_ITEM}.cancel', 'JTOOLBAR_CLOSE');
}
}
}]]></content>
<variable default="" id="name_1" name="PACKAGE">
<description><![CDATA[The API package.]]></description>
</variable>
<variable default="" id="name_2" name="SUBPACKAGE">
<description><![CDATA[The API subpackage.]]></description>
</variable>
<variable default="1.0" id="name_3" name="SINCE">
<description><![CDATA[The version this feature was added.]]></description>
</variable>
<variable default="" id="name_4" name="NAME">
<description><![CDATA[The proper case name of the component (without com_).]]></description>
</variable>
<variable default="" id="name_5" name="VIEW">
<description><![CDATA[The proper case name of the view.]]></description>
</variable>
<variable default="" id="name_6" name="CONTROLLER_ITEM">
<description><![CDATA[The controller prefix to be used for individual items (like add and edit).]]></description>
</variable>
<variable default="id" id="name_7" name="PK">
<description><![CDATA[The name of the primary key of the database table.]]></description>
</variable>
<variable default="" id="name_8" name="STUB">
<description><![CDATA[Ignore this]]></description>
</variable>
</item>
<item category="category_1276571442053" class="" editorclass="" id="item_1276514564396" label="Backend Item Edit Layout" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[This snippet adds the typcial layout for a backend edit view.]]></description>
<content><![CDATA[//JHtml::addIncludePath(JPATH_COMPONENT.'helpers/html');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.formvalidation');
JHtml::_('behavior.keepalive');
?>
<script type="text/javascript">
// Attach a behaviour to the submit button to check validation.
Joomla.submitbutton = function(task)
{
var form = document.id('${VIEW}-form');
if (task == '${VIEW}.cancel' || document.formvalidator.isValid(form)) {
<?php echo $this->form->getField('body')->save(); ?>
Joomla.submitform(task, form);
}
else {
<?php JText::script('COM_${NAME}_ERROR_N_INVALID_FIELDS'); ?>
// Count the fields that are invalid.
var elements = form.getElements('fieldset').concat(Array.from(form.elements));
var invalid = 0;
for (var i = 0; i < elements.length; i++) {
if (document.formvalidator.validate(elements[i]) == false) {
valid = false;
invalid++;
}
}
alert(Joomla.JText._('COM_${NAME}_ERROR_N_INVALID_FIELDS').replace('%d', invalid));
}
}
</script>
<form action="<?php echo JRoute::_('index.php?option=${OPTION}&layout=edit&id='.(int) $this->item->${PK}); ?>"
method="post" name="adminForm" id="${VIEW}-form" class="form-validate">
<div class="width-60 fltlft">
<fieldset class="adminform">
<ul class="adminformlist">
<li>
<?php echo $this->form->getLabel('title'); ?>
<?php echo $this->form->getInput('title'); ?>
</li>
<li>
<?php echo $this->form->getLabel('alias'); ?>
<?php echo $this->form->getInput('alias'); ?>
</li>
<li>
<?php echo $this->form->getLabel('category_id'); ?>
<?php echo $this->form->getInput('category_id'); ?>
</li>
<li>
<?php echo $this->form->getLabel('published'); ?>
<?php echo $this->form->getInput('published'); ?>
</li>
<li>
<?php echo $this->form->getLabel('ordering'); ?>
<?php echo $this->form->getInput('ordering'); ?>
</li>
<li>
<?php echo $this->form->getLabel('access'); ?>
<?php echo $this->form->getInput('access'); ?>
</li>
<li>
<?php echo $this->form->getLabel('language'); ?>
<?php echo $this->form->getInput('language'); ?>
</li>
<li>
<?php echo $this->form->getLabel('note'); ?>
<?php echo $this->form->getInput('note'); ?>
</li>
</ul>
<?php echo $this->form->getLabel('body'); ?>
<div class="clr"></div>
<?php echo $this->form->getInput('body'); ?>
</fieldset>
</div>
<div class="width-40 fltrt">
<?php echo JHtml::_('sliders.start','${VIEW}-sliders-'.$this->item->${PK}, array('useCookie' => 1)); ?>
<?php echo $this->loadTemplate('params'); ?>
<?php echo $this->loadTemplate('metadata'); ?>
</div>
<div class="clr"></div>
<input type="hidden" name="task" value="" />
<?php echo JHtml::_('form.token'); ?>
</form>]]></content>
<variable default="" id="name_1" name="NAME">
<description><![CDATA[The upper case name of the component (without COM_).]]></description>
</variable>
<variable default="" id="name_2" name="VIEW">
<description><![CDATA[The lower case name of the view.]]></description>
</variable>
<variable default="" id="name_3" name="OPTION">
<description><![CDATA[The lower case option for the component (with com_).]]></description>
</variable>
<variable default="id" id="name_4" name="PK">
<description><![CDATA[The primary key of the database table for the record.]]></description>
</variable>
</item>
<item category="category_1276571442053" class="" editorclass="" id="item_1276515026310" label="Backend Item Edit Params Sublayout" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[This snippet is for the record parameter/options sub-layout in a backend edit view.]]></description>
<content><![CDATA[$fieldSets = $this->form->getFieldsets('params');
foreach ($fieldSets as $name => $fieldSet) :
echo JHtml::_('sliders.panel',JText::_($fieldSet->label), $name.'-params');
if (isset($fieldSet->description) && trim($fieldSet->description)) :
echo '<p class="tip">'.$this->escape(JText::_($fieldSet->description)).'</p>';
endif;
?>
<fieldset class="panelform">
<ul class="adminformlist">
<?php foreach ($this->form->getFieldset($name) as $field) : ?>
<li>
<?php echo $field->label; ?>
<?php echo $field->input; ?>
</li>
<?php endforeach; ?>
</ul>
</fieldset>
<?php endforeach; ?>]]></content>
</item>
<item category="category_1276571442053" class="" editorclass="" id="item_1276515412425" label="Backend Item Edit Metadata Sublayout" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description><![CDATA[This snippet is for the record metadata sub-layout in a backend edit view.]]></description>
<content><![CDATA[echo JHtml::_('sliders.panel', JText::_('${OPTION}_METADATA_FIELDSET_LABEL'), 'metadata-options'); ?>
<fieldset class="panelform">
<ul class="adminformlist">
<li>
<?php echo $this->form->getLabel('metadesc'); ?>
<?php echo $this->form->getInput('metadesc'); ?>
</li>
<li>
<?php echo $this->form->getLabel('metakey'); ?>
<?php echo $this->form->getInput('metakey'); ?>
</li>
<?php if ($this->item->created_time) : ?>
<li>
<?php echo $this->form->getLabel('created_time'); ?>
<?php echo $this->form->getInput('created_time'); ?>
</li>
<?php endif; ?>
<?php if (intval($this->item->modified_time)) : ?>
<li>
<?php echo $this->form->getLabel('modified_time'); ?>
<?php echo $this->form->getInput('modified_time'); ?>
</li>
<?php endif; ?>
</ul>
</fieldset>]]></content>
<variable default="" id="name_1" name="OPTION">
<description><![CDATA[The lower case option for the component (with com_).]]></description>
</variable>
</item>
<item category="category_1276571442053" class="" editorclass="" id="item_1276600338336" label="Backend Item Edit INI Strings" largeicon="" smallicon="" snippetProvider="org.eclipse.wst.common.snippets.ui.TextSnippetProvider">
<description/>
<content><![CDATA[COM_${NAME}_ADD_${SINGULAR_UPPER}_TITLE="Add ${SINGULAR}"
COM_${NAME}_ADVANCED_PARAMS_FIELDSET_LABEL="Advanced Options"
COM_${NAME}_BASIC_PARAMS_FIELDSET_LABEL="Basic Options"
COM_${NAME}_EDIT_${SINGULAR_UPPER}_TITLE="Edit ${SINGULAR}"
COM_${NAME}_VIEW_${SINGULAR_UPPER}_TITLE="View ${SINGULAR}"
COM_${NAME}_FIELD_BODY_DESC="The body text of the ${SINGULAR} to display."
COM_${NAME}_FIELD_BODY_LABEL="${SINGULAR} Body"
COM_${NAME}_FIELD_CREATED_TIME_DESC="The time this item was created."
COM_${NAME}_FIELD_CREATED_TIME_LABEL="Created"
COM_${NAME}_FIELD_MODIFIED_TIME_DESC="The time this item was modified."
COM_${NAME}_FIELD_MODIFIED_TIME_LABEL="Modified"
COM_${NAME}_METADATA_FIELDSET_LABEL="Metadata"
COM_${NAME}_ERROR_N_INVALID_FIELDS="You have %d invalid field(s)."
COM_${NAME}_ERROR_${SINGULAR_UPPER}_TITLE="The ${SINGULAR} record needs a title."
COM_${NAME}_${SINGULAR_UPPER}_FILTER_SEARCH_DESC="Search in ${SINGULAR} title."
]]></content>
<variable default="" id="name_1" name="NAME">
<description><![CDATA[The upper case name of the component (without COM_).]]></description>
</variable>
<variable default="" id="name_2" name="SINGULAR">
<description><![CDATA[The proper case singular form of the item being actioned.]]></description>
</variable>
<variable default="" id="name_3" name="SINGULAR_UPPER">
<description><![CDATA[The upper case singular form of the item being actioned.]]></description>
</variable>
</item>
</category>
</snippets>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment