From 0b4228231c1dcd82c982762d4f9067ba82ca362a Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Tue, 6 Mar 2012 15:58:34 +0100 Subject: [PATCH] MINOR Integrating GridFieldSearch.js in GridField.js (and using entwine for it) --- forms/gridfield/GridField.php | 3 ++ forms/gridfield/GridFieldRelationAdd.php | 6 ---- javascript/GridField.js | 40 +++++++++++++++++++++++ javascript/GridFieldSearch.js | 41 ------------------------ 4 files changed, 43 insertions(+), 47 deletions(-) delete mode 100644 javascript/GridFieldSearch.js diff --git a/forms/gridfield/GridField.php b/forms/gridfield/GridField.php index 5815b55b6..828a19474 100755 --- a/forms/gridfield/GridField.php +++ b/forms/gridfield/GridField.php @@ -744,11 +744,14 @@ class GridField_Action extends FormAction { * @return string HTML tag */ public function Field() { + Requirements::css(THIRDPARTY_DIR . '/jquery-ui-themes/smoothness/jquery-ui.css'); Requirements::css(SAPPHIRE_DIR . '/css/GridField.css'); Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js'); + Requirements::javascript(SAPPHIRE_DIR . '/thirdparty/jquery-ui/jquery-ui.js'); Requirements::javascript(THIRDPARTY_DIR . '/json-js/json2.js'); Requirements::javascript(SAPPHIRE_DIR . '/javascript/i18n.js'); + Requirements::add_i18n_javascript(SAPPHIRE_DIR . '/javascript/lang'); Requirements::javascript(THIRDPARTY_DIR . '/jquery-entwine/dist/jquery.entwine-dist.js'); Requirements::javascript(SAPPHIRE_DIR . '/javascript/GridField.js'); diff --git a/forms/gridfield/GridFieldRelationAdd.php b/forms/gridfield/GridFieldRelationAdd.php index 96368173a..5001d2701 100755 --- a/forms/gridfield/GridFieldRelationAdd.php +++ b/forms/gridfield/GridFieldRelationAdd.php @@ -53,12 +53,6 @@ class GridFieldRelationAdd implements GridField_HTMLProvider, GridField_ActionPr $searchState = $gridField->State->GridFieldSearchRelation; $dataClass = $gridField->getList()->dataClass(); - Requirements::css(THIRDPARTY_DIR . '/jquery-ui-themes/smoothness/jquery-ui.css'); - Requirements::add_i18n_javascript(SAPPHIRE_DIR . '/javascript/lang'); - Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js'); - Requirements::javascript(SAPPHIRE_DIR . '/thirdparty/jquery-ui/jquery-ui.js'); - Requirements::javascript(SAPPHIRE_DIR . "/javascript/GridFieldSearch.js"); - $forTemplate = new ArrayData(array()); $forTemplate->Fields = new ArrayList(); diff --git a/javascript/GridField.js b/javascript/GridField.js index 2ea3671e4..6d7136413 100644 --- a/javascript/GridField.js +++ b/javascript/GridField.js @@ -207,4 +207,44 @@ } }); + $(".ss-gridfield .relation-search").entwine({ + onfocusin: function (event) { + this.autocomplete({ + source: function(request, response){ + var searchField = $(this.element); + var form = $(this.element).closest("form"); + // Due to some very weird behaviout of jquery.metadata, the url have to be double quoted + var suggestionUrl = $(searchField).attr('data-search-url').substr(1,$(searchField).attr('data-search-url').length-2); + $.ajax({ + headers: { + "X-Get-Fragment" : 'Partial' + }, + type: "GET", + url: suggestionUrl+'/'+request.term, + data: form.serialize()+'&'+escape(searchField.attr('name'))+'='+escape(searchField.val()), + success: function(data) { + response( $.map(JSON.parse(data), function( name, id ) { + return { label: name, value: name, id: id }; + })); + }, + error: function(e) { + alert(ss.i18n._t('GRIDFIELD.ERRORINTRANSACTION', 'An error occured while fetching data from the server\n Please try again later.')); + } + }); + }, + select: function(event, ui) { + $(this).closest(".ss-gridfield").find("#action_gridfield_relationfind").replaceWith( + '' + ); + var addbutton = $(this).closest(".ss-gridfield").find("#action_gridfield_relationadd"); + if(addbutton.data('button')){ + addbutton.button('enable'); + }else{ + addbutton.removeAttr('disabled'); + } + } + }); + } + }); + }(jQuery)); diff --git a/javascript/GridFieldSearch.js b/javascript/GridFieldSearch.js deleted file mode 100644 index d745e96ab..000000000 --- a/javascript/GridFieldSearch.js +++ /dev/null @@ -1,41 +0,0 @@ -jQuery(function($){ - - $(document).delegate(".ss-gridfield .relation-search", "focus", function (event) { - $(this).autocomplete({ - source: function(request, response){ - var searchField = $(this.element); - var form = $(this.element).closest("form"); - // Due to some very weird behaviout of jquery.metadata, the url have to be double quoted - var suggestionUrl = $(searchField).attr('data-search-url').substr(1,$(searchField).attr('data-search-url').length-2); - $.ajax({ - headers: { - "X-Get-Fragment" : 'Partial' - }, - type: "GET", - url: suggestionUrl+'/'+request.term, - data: form.serialize()+'&'+escape(searchField.attr('name'))+'='+escape(searchField.val()), - success: function(data) { - response( $.map(JSON.parse(data), function( name, id ) { - return { label: name, value: name, id: id }; - })); - }, - error: function(e) { - alert(ss.i18n._t('GRIDFIELD.ERRORINTRANSACTION', 'An error occured while fetching data from the server\n Please try again later.')); - } - }); - }, - select: function(event, ui) { - $(this).closest(".ss-gridfield").find("#action_gridfield_relationfind").replaceWith( - '' - ); - var addbutton = $(this).closest(".ss-gridfield").find("#action_gridfield_relationadd"); - if(addbutton.data('button')){ - addbutton.button('enable'); - }else{ - addbutton.removeAttr('disabled'); - } - } - }); - }); - -}); \ No newline at end of file