Skip to content

Instantly share code, notes, and snippets.

@hailwood
Last active September 30, 2015 01:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hailwood/3fde24f4c6e83a06b487 to your computer and use it in GitHub Desktop.
Save hailwood/3fde24f4c6e83a06b487 to your computer and use it in GitHub Desktop.
Put the .xml files in your {ide-settings-dir}/config/templates - put the .php files in {ide-settings-dir}/fileTemplates
<?php
/**
* Class CustomSiteConfig
*
* @property SiteConfig \$owner
*/
class CustomSiteConfig extends DataExtension {
static \$db = [
'AddressLineOne' => 'Varchar(255)',
'AddressLineTwo' => 'Varchar(255)',
'AddressLineThree' => 'Varchar(255)',
'AddressLineFour' => 'Varchar(255)',
'Phone' => 'Varchar(255)',
'Fax' => 'Varchar(255)',
'Email' => 'Varchar(255)',
'CustomHeaderOutput' => 'Text',
'CustomFooterOutput' => 'Text'
];
static \$has_one = array(
'PrivacyPolicyPage' => 'SiteTree',
'TermsAndConditionsPage' => 'SiteTree'
);
public function updateCMSFields(FieldList \$fields) {
/**
* Linked Pages
*/
\$fields->addFieldsToTab('Root.Main', [
TextField::create('AddressLineOne'),
TextField::create('AddressLineTwo'),
TextField::create('AddressLineThree'),
TextField::create('AddressLineFour'),
TextField::create('Phone'),
TextField::create('Fax'),
EmailField::create('Email'),
]);
/**
* Advanced Options
*/
\$fields->addFieldsToTab('Root.Advanced', [
TextareaField::create('CustomHeaderOutput', 'Custom Header Tags'),
TextareaField::create('CustomFooterOutput', 'Custom Footer Tags')
]);
}
}
<?php
class ${NAME} extends ${Extends} {
}
class ${NAME}_Controller extends ${Extends}_Controller {
}
<?php
class ${NAME} extends DataObject {
protected static \$db = [
'Title' => 'Varchar(255)',
'SortOrder' => 'Int'
];
protected static \$default_sort = 'SortOrder';
public function getCMSFields(){
\$fields = new FieldList([
TextField::create('Title')
]);
return \$fields;
}
public function canView(\$member = null) {
return Permission::check('CMS_ACCESS_CMSMain', 'any', \$member);
}
public function canEdit(\$member = null) {
return Permission::check('CMS_ACCESS_CMSMain', 'any', \$member);
}
public function canDelete(\$member = null) {
return Permission::check('CMS_ACCESS_CMSMain', 'any', \$member);
}
public function canCreate(\$member = null) {
return Permission::check('CMS_ACCESS_CMSMain', 'any', \$member);
}
}
<?php
class ${NAME} extends ModelAdmin {
private static \$managed_models = array(
'${Model_Class}' => ['title' => '${Model_Title}']
);
private static \$url_segment = '${URL_Segment}';
private static \$menu_title = '${Menu_Title}';
public function getEditForm(\$id = null, \$fields = null) {
\$form = parent::getEditForm(\$id, \$fields);
\$gridFieldName = \$this->sanitiseClassName(\$this->modelClass);
/** @var GridField \$gridField */
\$gridField = \$form->Fields()->fieldByName(\$gridFieldName);
if (\$this->modelClass === '${Model_Class}') {
// modify the list view.
\$gridField->getConfig()
->addComponent(new GridFieldFilterHeader());
}
return \$form;
}
}
<?php
#set( $Extends = 'Page' )
class ${NAME} extends ${Extends} {
}
class ${NAME}_Controller extends ${Extends}_Controller {
}
<templateSet group="SilverStripe PHP">
<template name="has_many" value="private static $has_many = [&#10; $END$&#10;];" description="Has many" toReformat="true" toShortenFQNames="true">
<context />
</template>
<template name="cmsFields" value="public function getCMSFields(){&#10;&#10; $this-&gt;beforeUpdateCMSFields(function(FieldList $fields) {&#10;&#9;&#9;$END$&#10;&#9;});&#10;&#10;&#9;$fields = parent::getCMSFields();&#10;&#10;&#9;return $fields;&#10;}" description="GetCMSFields() function" toReformat="false" toShortenFQNames="true">
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="has_one" value="private static $has_one = [&#10; $END$&#10;];" description="Has one" toReformat="true" toShortenFQNames="true">
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="db_fields" value="private static $db = [&#10; $END$&#10;];" description="DB Fields" toReformat="true" toShortenFQNames="true">
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="field" value="$fields-&gt;addFieldToTab('$TAB$', $FIELDTYPE$::create('$FIELDTITLE$', '$FIELDTITLE$'), '$BEFORE$');" description="Add Field" toReformat="true" toShortenFQNames="true">
<variable name="TAB" expression="" defaultValue="&quot;Root.Main&quot;" alwaysStopAt="true" />
<variable name="FIELDTYPE" expression="" defaultValue="&quot;TextField&quot;" alwaysStopAt="true" />
<variable name="FIELDTITLE" expression="underscoresToSpaces(String)" defaultValue="" alwaysStopAt="true" />
<variable name="BEFORE" expression="" defaultValue="" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="create:UF" value="UploadField::create('$NAME$', '$END$')" description="SS Upload Field" toReformat="false" toShortenFQNames="true">
<variable name="NAME" expression="" defaultValue="" alwaysStopAt="true" />
<context />
</template>
<template name="many_many" value="private static $many_many = [&#10; $END$&#10;];" description="Many many" toReformat="true" toShortenFQNames="true">
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="field_labels" value="private static $field_labels = [&#10; $END$&#10;];" description="Silverstripe Field Labels" toReformat="true" toShortenFQNames="true">
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="can" value="public function canView($member = null) {&#10;&#9;&#9;return $CAN$;&#10;&#9;}&#10;&#10;&#9;public function canEdit($member = null) {&#10;&#9;&#9;return $CAN$;&#10;&#9;}&#10;&#10;&#9;public function canDelete($member = null) {&#10;&#9;&#9;return $CAN$;&#10;&#9;}&#10;&#10;&#9;public function canCreate($member = null) {&#10;&#9;&#9;return $CAN$;&#10;&#9;}" description="All canXXX Actions" toReformat="true" toShortenFQNames="true">
<variable name="CAN" expression="" defaultValue="true" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="canDefault" value="public function canView($member = null) {&#10; return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);&#10;}&#10;&#10;public function canEdit($member = null) {&#10; return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);&#10;}&#10;&#10;public function canDelete($member = null) {&#10; return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);&#10;}&#10;&#10;public function canCreate($member = null) {&#10; return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);&#10;}" description="All default canXXX Actions" toReformat="true" toShortenFQNames="true">
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="gridfield_gallery" value="$$$NAME$Config = new GridFieldConfig_RecordEditor();&#10;$$$NAME$Config-&gt;removeComponentsByType('GridFieldAddNewButton');&#10;$$$NAME$Config-&gt;addComponent($bulkUploadConfig = new GridFieldBulkUpload());&#10;$$$NAME$Config-&gt;addComponent(new GridFieldSortableRows('SortOrder'));&#10;$$$NAME$Config-&gt;addComponent(new GridFieldGalleryTheme('Image'));&#10;$bulkUploadConfig-&gt;setUfSetup('setFolderName', 'Images/$LOCATION$');&#10;$$$NAME$ = new GridField(&quot;$NAME$GridField&quot;, &quot;$TITLE$&quot;, $this-&gt;$RELATION$(), $$$NAME$Config);&#10;$fields-&gt;addFieldToTab('Root.$TAB$', $$$NAME$);" description="Gallery Theme Gridfield" toReformat="true" toShortenFQNames="true">
<variable name="NAME" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="LOCATION" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="TITLE" expression="" defaultValue="NAME" alwaysStopAt="true" />
<variable name="RELATION" expression="" defaultValue="NAME" alwaysStopAt="true" />
<variable name="TAB" expression="" defaultValue="NAME" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="gridfield_relation_editor" value="$$$NAME$Config = new GridFieldConfig_RelationEditor();&#10;$$$NAME$Config-&gt;addComponent(new GridFieldSortableRows('SortOrder'));&#10;$$$NAME$ = new GridField(&quot;$NAME$GridField&quot;, &quot;$TITLE$&quot;, $this-&gt;$RELATION$(), $$$NAME$Config);&#10;$fields-&gt;addFieldToTab('Root.$TAB$', $$$NAME$);" description="Relation Editor Gridfield" toReformat="true" toShortenFQNames="true">
<variable name="NAME" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="TITLE" expression="" defaultValue="NAME" alwaysStopAt="true" />
<variable name="RELATION" expression="" defaultValue="NAME" alwaysStopAt="true" />
<variable name="TAB" expression="" defaultValue="NAME" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="gridfield_record_editor" value="$$$NAME$Config = new GridFieldConfig_RecordEditor();&#10;$$$NAME$Config-&gt;addComponent(new GridFieldSortableRows('SortOrder'));&#10;$$$NAME$ = new GridField(&quot;$NAME$GridField&quot;, &quot;$TITLE$&quot;, $this-&gt;$RELATION$(), $$$NAME$Config);&#10;$fields-&gt;addFieldToTab('Root.$TAB$', $$$NAME$);" description="Record Editor Gridfield" toReformat="true" toShortenFQNames="true">
<variable name="NAME" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="TITLE" expression="" defaultValue="NAME" alwaysStopAt="true" />
<variable name="RELATION" expression="" defaultValue="NAME" alwaysStopAt="true" />
<variable name="TAB" expression="" defaultValue="NAME" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="DisplayedDropdownField" value="DropdownField::create('Displayed', 'Displayed', [1 =&gt; 'Displayed', 0 =&gt; 'Hidden']),$END$" description="Silverstripe Displayed Dropdown Field" toReformat="false" toShortenFQNames="true">
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="defaults" value="private static $defaults = [&#10;&#9;'$LABEL$' =&gt; $VALUE$$END$&#10;];" description="Default Values" toReformat="true" toShortenFQNames="true">
<variable name="LABEL" expression="" defaultValue="&quot;Displayed&quot;" alwaysStopAt="true" />
<variable name="VALUE" expression="" defaultValue="&quot;true&quot;" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
<template name="default_sort" value="private static $default_sort = '$SORT$';$END$" description="Default Sort Order" toReformat="true" toShortenFQNames="true">
<variable name="SORT" expression="" defaultValue="&quot;SortOrder&quot;" alwaysStopAt="true" />
<context>
<option name="PHP" value="true" />
</context>
</template>
</templateSet>
<templateSet group="SilverStripe Template">
<template name="iif" value="&lt;% if $$$ifVar$ %&gt;$ACTION$$END$&lt;% end_if %&gt;" description="An inline if block" toReformat="true" toShortenFQNames="true">
<variable name="ifVar" expression="" defaultValue="&quot;First&quot;" alwaysStopAt="true" />
<variable name="ACTION" expression="" defaultValue="&quot;active&quot;" alwaysStopAt="true" />
<context />
</template>
<template name="iife" value="&lt;% if $$$ifVar$ %&gt;$ACTION$&lt;% else %&gt;$ACTION2$$END$&lt;% end_if %&gt;" description="An inline if-else block" toReformat="true" toShortenFQNames="true">
<variable name="ifVar" expression="" defaultValue="&quot;First&quot;" alwaysStopAt="true" />
<variable name="ACTION" expression="" defaultValue="" alwaysStopAt="true" />
<variable name="ACTION2" expression="" defaultValue="" alwaysStopAt="true" />
<context />
</template>
</templateSet>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment