From 1b42b2afa784bce3c3ef79c46972559ce754fd34 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 8 Feb 2012 21:28:04 +0100 Subject: [PATCH] MINOR GridField JS API for updating state --- forms/gridfield/GridField.php | 5 +++++ forms/gridfield/GridFieldFilter.php | 3 --- forms/gridfield/GridFieldPaginator.php | 3 --- forms/gridfield/GridFieldSortableHeader.php | 3 --- javascript/GridField.js | 15 +++++++++++++++ 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/forms/gridfield/GridField.php b/forms/gridfield/GridField.php index bf13cc30f..b52de78ed 100755 --- a/forms/gridfield/GridField.php +++ b/forms/gridfield/GridField.php @@ -713,6 +713,11 @@ class GridField_Action extends FormAction { * @return string HTML tag */ public function Field() { + Requirements::javascript(SAPPHIRE_DIR.'/thirdparty/jquery/jquery.js'); + Requirements::javascript(SAPPHIRE_DIR.'/thirdparty/json-js/json2.js'); + Requirements::javascript(SAPPHIRE_DIR.'/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js'); + Requirements::javascript('sapphire/javascript/GridField.js'); + // Store state in session, and pass ID to client side $state = array( 'grid' => $this->getNameFromParent(), diff --git a/forms/gridfield/GridFieldFilter.php b/forms/gridfield/GridFieldFilter.php index 082fa3574..1368f6cda 100644 --- a/forms/gridfield/GridFieldFilter.php +++ b/forms/gridfield/GridFieldFilter.php @@ -54,9 +54,6 @@ class GridFieldFilter implements GridField_HTMLProvider, GridField_DataManipulat } public function getHTMLFragments($gridField) { - Requirements::javascript(SAPPHIRE_DIR.'/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js'); - Requirements::javascript('sapphire/javascript/GridField.js'); - $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList; diff --git a/forms/gridfield/GridFieldPaginator.php b/forms/gridfield/GridFieldPaginator.php index d652e5907..7b468413d 100755 --- a/forms/gridfield/GridFieldPaginator.php +++ b/forms/gridfield/GridFieldPaginator.php @@ -83,9 +83,6 @@ class GridFieldPaginator implements GridField_HTMLProvider, GridField_DataManipu * @return array */ public function getHTMLFragments($gridField) { - Requirements::javascript(SAPPHIRE_DIR.'/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js'); - Requirements::javascript(SAPPHIRE_DIR.'/javascript/GridField.js'); - $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList; diff --git a/forms/gridfield/GridFieldSortableHeader.php b/forms/gridfield/GridFieldSortableHeader.php index c9b1572e8..732c3cc10 100644 --- a/forms/gridfield/GridFieldSortableHeader.php +++ b/forms/gridfield/GridFieldSortableHeader.php @@ -13,9 +13,6 @@ class GridFieldSortableHeader implements GridField_HTMLProvider, GridField_DataM * Returns the header row providing titles with sort buttons */ public function getHTMLFragments($gridField) { - Requirements::javascript(SAPPHIRE_DIR.'/thirdparty/jquery-entwine/dist/jquery.entwine-dist.js'); - Requirements::javascript(SAPPHIRE_DIR.'/javascript/GridField.js'); - $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList; diff --git a/javascript/GridField.js b/javascript/GridField.js index 011fa6e7e..401f4b437 100644 --- a/javascript/GridField.js +++ b/javascript/GridField.js @@ -3,6 +3,21 @@ jQuery(function($){ $('fieldset.ss-gridfield').entwine({ getItems: function() { return this.find('.ss-gridfield-item'); + }, + /** + * @param {String} + * @param {Mixed} + */ + setState: function(k, v) { + var state = this.getState(); + state[k] = v; + this.find(':input[name="' + this.data('name') + '[GridState]"]').val(JSON.stringify(state)); + }, + /** + * @return {Object} + */ + getState: function() { + return JSON.parse(this.find(':input[name="' + this.data('name') + '[GridState]"]').val()); } });