beingsane
5/13/2014 - 3:01 PM

backend_edit_pages.xml

<?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>