Coding convention updates

Moved text labels into translations

Added class documentation to the GridFieldSortableRows class
This commit is contained in:
UndefinedOffset 2012-05-15 11:04:40 -03:00
parent 32746c875c
commit 20dfa3c9ea
5 changed files with 212 additions and 185 deletions

View File

@ -1,12 +1,14 @@
<?php
/**
* This component provides a checkbox which when checked enables drag-and-drop re-ordering of elements displayed in a {@link GridField}
*
* @package forms
*/
class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionProvider, GridField_DataManipulator {
protected $sortColumn;
/**
* @param {string} $sortColumn Column that should be used to update the sort information
* @param String $sortColumn Column that should be used to update the sort information
*/
public function __construct($sortColumn) {
$this->sortColumn = $sortColumn;
@ -15,7 +17,7 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
/**
* Returns a map where the keys are fragment names and the values are pieces of HTML to add to these fragments.
* @param GridField $gridField Grid Field Reference
* @return {array} Map where the keys are fragment names and the values are pieces of HTML to add to these fragments.
* @return Array Map where the keys are fragment names and the values are pieces of HTML to add to these fragments.
*/
public function getHTMLFragments($gridField) {
$state = $gridField->State->GridFieldSortableRows;
@ -25,20 +27,32 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
//Sort order toggle
$sortOrderToggle=new GridField_FormAction($gridField, 'sortablerows_toggle', 'Allow drag and drop re-ordering', 'saveGridRowSort', null);
$sortOrderToggle->addExtraClass('sortablerows_toggle');
$sortOrderToggle = Object::create(
'GridField_FormAction',
$gridField,
'sortablerows-toggle',
_t('GridFieldSortableRows.ALLOW_DRAG_DROP', '_Allow drag and drop re-ordering'),
'saveGridRowSort',
null
)->addExtraClass('sortablerows-toggle');
//Disable Pagenator
$disablePagenator=new GridField_FormAction($gridField, 'sortablerows_disablepagenator', 'Disable Pagenator', 'sortableRowsDisablePaginator', null);
$disablePagenator->addExtraClass('sortablerows_disablepagenator');
$disablePagenator = Object::create(
'GridField_FormAction',
$gridField,
'sortablerows-disablepagenator',
_t('GridFieldSortableRows.DISABLE_PAGINATOR', '_Disable Pagenator'),
'sortableRowsDisablePaginator',
null
)->addExtraClass('sortablerows-disablepagenator');
$forTemplate=new ArrayData(array(
'SortableToggle'=>$sortOrderToggle,
$data = array('SortableToggle' => $sortOrderToggle,
'PagenatorToggle' => $disablePagenator,
'Checked'=>($state->sortableToggle==true ? ' checked="checked"':'')
));
'Checked' => ($state->sortableToggle == true ? ' checked = "checked"':''));
$forTemplate = new ArrayData($data);
//Inject Requirements
@ -46,18 +60,16 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
Requirements::javascript('SortableGridField/javascript/GridFieldSortableRows.js');
return array(
'header'=>$forTemplate->renderWith('GridFieldSortableRows', array('Colspan'=>count($gridField->getColumns())))
);
$args = array('Colspan' => count($gridField->getColumns()));
return array();
return array('header' => $forTemplate->renderWith('GridFieldSortableRows', $args));
}
/**
* Manipulate the datalist as needed by this grid modifier.
* @param {GridField} $gridField Grid Field Reference
* @param {SS_List} $dataList Data List to adjust
* @return {DataList} Modified Data List
* @param GridField $gridField Grid Field Reference
* @param SS_List $dataList Data List to adjust
* @return DataList Modified Data List
*/
public function getManipulatedData(GridField $gridField, SS_List $dataList) {
$state = $gridField->State->GridFieldSortableHeader;
@ -71,7 +83,7 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
/**
* Return a list of the actions handled by this action provider.
* @param GridField $gridField Grid Field Reference
* @return {array} Array with action identifier strings.
* @return Array Array with action identifier strings.
*/
public function getActions($gridField) {
return array('saveGridRowSort', 'sortableRowsDisablePaginator');
@ -79,10 +91,10 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
/**
* Handle an action on the given grid field.
* @param {GridField} $gridField Grid Field Reference
* @param {string} $actionName Action identifier, see {@link getActions()}.
* @param {array} $arguments Arguments relevant for this
* @param {array} $data All form data
* @param GridField $gridField Grid Field Reference
* @param String $actionName Action identifier, see {@link getActions()}.
* @param Array $arguments Arguments relevant for this
* @param Array $data All form data
*/
public function handleAction(GridField $gridField, $actionName, $arguments, $data) {
$state = $gridField->State->GridFieldSortableRows;
@ -106,8 +118,8 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
/**
* Handles saving of the row sort order
* @param {GridField} $gridField Grid Field Reference
* @param {array} $data Data submitted in the request
* @param GridField $gridField Grid Field Reference
* @param Array $data Data submitted in the request
*/
private function saveGridRowSort(GridField $gridField, $data) {
if (empty($data['Items'])) {
@ -130,7 +142,9 @@ class GridFieldSortableRows implements GridField_HTMLProvider, GridField_ActionP
for($sort = 0;$sort<count($data['Items']);$sort++) {
$id = intval($data['Items'][$sort]);
if ($many_many) {
DB::query('UPDATE "'.$table.'" SET "'.$sortColumn.'"='.($sort+1).' WHERE "'.$componentField.'"='.$id.' AND "'.$parentField.'"='.$owner->ID);
DB::query('UPDATE "' . $table
. '" SET "' . $sortColumn.'" = ' . ($sort+1)
. ' WHERE "' . $componentField . '" = ' . $id . ' AND "' . $parentField . '" = ' . $owner->ID);
} else {
$obj = $items->byID($data['Items'][$sort]);
$obj->$sortColumn = $sort+1;

View File

@ -24,7 +24,7 @@
update: function(event, ui) {
var dataRows=[];
var gridItems=gridField.getItems();
var button=refCheckbox.parent().find('.sortablerows_toggle');
var button=refCheckbox.parent().find('.sortablerows-toggle');
for(var i=0;i<gridItems.length;i++) {
@ -32,7 +32,16 @@
}
gridField.reload({data: [{name: button.attr('name'), value: button.val()}, {name: 'Items', value: dataRows}]});
gridField.reload({data: [
{
name: button.attr('name'),
value: button.val()},
{
name: 'Items',
value: dataRows
}
]
});
}
}).disableSelection();
},
@ -43,7 +52,7 @@
gridField.setState('GridFieldSortableRows', {sortableToggle: $(this).is(':checked')});
var button=$(this).parent().find('.sortablerows_disablepagenator');
var button=$(this).parent().find('.sortablerows-disablepagenator');
gridField.reload({data: [{name: button.attr('name'), value: button.val()}]});
}
});

4
lang/en.yml Normal file
View File

@ -0,0 +1,4 @@
en:
GridFieldSortableRows:
ALLOW_DRAG_DROP: "Allow Drag and Drop"
DISABLE_PAGINATOR: "Disable Pagenator"

View File

@ -1,7 +1,7 @@
<tr>
<th class="extra sortablerowsheading" colspan="$Colspan">
<div class="gridfield-sortablerows">
<input type="checkbox" value="1"$Checked/> Allow drag and drop re-ordering
<input type="checkbox" value="1"$Checked/> <%t GridFieldSortableRows.ALLOW_DRAG_DROP "_Allow drag and drop re-ordering" %>
$SortableToggle
$PagenatorToggle
</div>