mirror of
https://github.com/colymba/GridFieldBulkEditingTools.git
synced 2024-10-22 09:05:57 +00:00
Added proper visual clues about updated records
This commit is contained in:
parent
0eab8d9659
commit
425cf9cffe
@ -45,6 +45,7 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler
|
||||
->setAttribute('data-icon', 'accept')
|
||||
->setAttribute('data-url', $this->gridField->Link('bulkaction/bulkedit/update'))
|
||||
->setUseButtonTag(true)
|
||||
->setAttribute('src', '')//changes type to image so isn't hooked by default actions handlers
|
||||
);
|
||||
|
||||
$actions->push(
|
||||
@ -73,7 +74,7 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler
|
||||
$editedRecordList->push(
|
||||
ToggleCompositeField::create(
|
||||
'GFBM_'.$id,
|
||||
'#'.$id.': '.DataObject::get_by_id($this->gridField->list->dataClass, $id)->getTitle(),
|
||||
DataObject::get_by_id($this->gridField->list->dataClass, $id)->getTitle(),
|
||||
array_values($recordCMSDataFields)
|
||||
)->setHeadingLevel(4)
|
||||
->addExtraClass('bulkEditingFieldHolder')
|
||||
@ -108,7 +109,7 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler
|
||||
$form->setAttribute('data-pjax-fragment', 'CurrentForm Content');
|
||||
|
||||
Requirements::javascript(BULK_EDIT_TOOLS_PATH . '/javascript/GridFieldBulkEditingForm.js');
|
||||
Requirements::css(BULK_EDIT_TOOLS_PATH . '/css/GridFieldBulkManager.css');
|
||||
Requirements::css(BULK_EDIT_TOOLS_PATH . '/css/GridFieldBulkEditingForm.css');
|
||||
Requirements::add_i18n_javascript(BULK_EDIT_TOOLS_PATH . '/javascript/lang');
|
||||
|
||||
if($this->request->isAjax())
|
||||
@ -150,7 +151,11 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler
|
||||
}
|
||||
}
|
||||
$record->write();
|
||||
|
||||
return '{done:1,recordID:'.$data['ID'].'}';
|
||||
|
||||
return json_encode(array(
|
||||
'done' => 1,
|
||||
'recordID' => $data['ID'],
|
||||
'title' => $record->getTitle()
|
||||
), JSON_NUMERIC_CHECK);
|
||||
}
|
||||
}
|
33
css/GridFieldBulkEditingForm.css
Normal file
33
css/GridFieldBulkEditingForm.css
Normal file
@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Bulk editing styles
|
||||
*/
|
||||
.bulkEditingForm.hasUpdate .ui-accordion-header
|
||||
{
|
||||
background-color: #f2ba11;
|
||||
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #f2ba11), color-stop(100%, #df6e00));
|
||||
background-image: -webkit-linear-gradient(top, #f2ba11 0%, #df6e00 100%);
|
||||
background-image: -moz-linear-gradient(top, #f2ba11 0%, #df6e00 100%);
|
||||
background-image: -o-linear-gradient(top, #f2ba11 0%, #df6e00 100%);
|
||||
background-image: -ms-linear-gradient(top, #f2ba11 0%, #df6e00 100%);
|
||||
background-image: linear-gradient(top, #f2ba11 0%, #df6e00 100%);
|
||||
}
|
||||
|
||||
.bulkEditingForm.updated .ui-accordion-header
|
||||
{
|
||||
background-color: #a4ca3a;
|
||||
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #a4ca3a), color-stop(100%, #59781D));
|
||||
background-image: -webkit-linear-gradient(top, #a4ca3a 0%, #59781D 100%);
|
||||
background-image: -moz-linear-gradient(top, #a4ca3a 0%, #59781D 100%);
|
||||
background-image: -o-linear-gradient(top, #a4ca3a 0%, #59781D 100%);
|
||||
background-image: -ms-linear-gradient(top, #a4ca3a 0%, #59781D 100%);
|
||||
background-image: linear-gradient(top, #a4ca3a 0%, #59781D 100%);
|
||||
}
|
||||
|
||||
.bulkEditingForm.hasUpdate .ui-accordion-header a,
|
||||
.bulkEditingForm.updated .ui-accordion-header a
|
||||
{
|
||||
color: #fff;
|
||||
text-shadow: none;
|
||||
}
|
@ -18,14 +18,14 @@
|
||||
}
|
||||
});
|
||||
|
||||
$('.bulkEditingForm input, .bulkEditingForm select, .bulkEditingForm textarea').entwine({
|
||||
$('.bulkEditingForm input.text, .bulkEditingForm select, .bulkEditingForm textarea, .bulkEditingForm input.checkbox').entwine({
|
||||
onchange: function(){
|
||||
var form;
|
||||
var $form = this.parents('form.bulkEditingForm');
|
||||
|
||||
form = this.parents('form.bulkEditingForm');
|
||||
|
||||
if ( !$(form).hasClass('hasUpdate') ) {
|
||||
$(form).addClass('hasUpdate');
|
||||
$form.removeClass('updated');
|
||||
if ( !$form.hasClass('hasUpdate') )
|
||||
{
|
||||
$form.addClass('hasUpdate');
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -37,15 +37,19 @@
|
||||
onunmatch: function(){
|
||||
},
|
||||
onclick: function(e){
|
||||
var formsWithUpadtes, url, data, cacheBuster;
|
||||
e.stopImmediatePropagation();
|
||||
|
||||
var $formsWithUpadtes = $('form.bulkEditingForm.hasUpdate'),
|
||||
url = $(this).data('url'),
|
||||
data,
|
||||
cacheBuster
|
||||
;
|
||||
|
||||
formsWithUpadtes = $('form.bulkEditingForm.hasUpdate');
|
||||
$(this).data('formsToUpdate', $(formsWithUpadtes).length);
|
||||
url = $(this).data('url');
|
||||
$(this).data('formsToUpdate', $formsWithUpadtes.length);
|
||||
|
||||
if ( $(formsWithUpadtes).length > 0 ) $(this).addClass('loading');
|
||||
if ( $formsWithUpadtes.length > 0 ) $(this).addClass('loading');
|
||||
|
||||
$(formsWithUpadtes).each(function(){
|
||||
$formsWithUpadtes.each(function(){
|
||||
cacheBuster = new Date().getTime() + '_' + $(this).attr('name');
|
||||
data = $(this).serialize();
|
||||
|
||||
@ -57,16 +61,31 @@
|
||||
data: data,
|
||||
type: "POST",
|
||||
context: $(this)
|
||||
}).done(function() {
|
||||
var btn = $('#bulkEditingUpdateBtn');
|
||||
var totalForms = parseInt( $(btn).data('formsToUpdate') );
|
||||
var counter = parseInt( $(btn).data('completedForms') );
|
||||
}).success(function(data, textStatus, jqXHR) {
|
||||
var $btn = $('#bulkEditingUpdateBtn'),
|
||||
totalForms = parseInt( $btn.data('formsToUpdate') ),
|
||||
counter = parseInt( $btn.data('completedForms') ),
|
||||
title
|
||||
;
|
||||
|
||||
counter = counter + 1;
|
||||
$(btn).data('completedForms', counter);
|
||||
$btn.data('completedForms', counter);
|
||||
|
||||
$(this).removeClass('hasUpdate');
|
||||
$(this).removeClass('hasUpdate');
|
||||
$(this).addClass('updated');
|
||||
|
||||
try{
|
||||
data = $.parseJSON( data );
|
||||
}catch(er){}
|
||||
|
||||
if ( data.title )
|
||||
{
|
||||
$(this).find('.ui-accordion-header a').html(data.title);
|
||||
}
|
||||
$(this).find('.ui-accordion-header').click();
|
||||
|
||||
if ( counter == totalForms ) {
|
||||
if ( counter == totalForms )
|
||||
{
|
||||
$('#bulkEditingUpdateBtn').data('completedForms', 0);
|
||||
$('#bulkEditingUpdateBtn').removeClass('loading');
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user