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-icon', 'accept')
|
||||||
->setAttribute('data-url', $this->gridField->Link('bulkaction/bulkedit/update'))
|
->setAttribute('data-url', $this->gridField->Link('bulkaction/bulkedit/update'))
|
||||||
->setUseButtonTag(true)
|
->setUseButtonTag(true)
|
||||||
|
->setAttribute('src', '')//changes type to image so isn't hooked by default actions handlers
|
||||||
);
|
);
|
||||||
|
|
||||||
$actions->push(
|
$actions->push(
|
||||||
@ -73,7 +74,7 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler
|
|||||||
$editedRecordList->push(
|
$editedRecordList->push(
|
||||||
ToggleCompositeField::create(
|
ToggleCompositeField::create(
|
||||||
'GFBM_'.$id,
|
'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)
|
array_values($recordCMSDataFields)
|
||||||
)->setHeadingLevel(4)
|
)->setHeadingLevel(4)
|
||||||
->addExtraClass('bulkEditingFieldHolder')
|
->addExtraClass('bulkEditingFieldHolder')
|
||||||
@ -108,7 +109,7 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler
|
|||||||
$form->setAttribute('data-pjax-fragment', 'CurrentForm Content');
|
$form->setAttribute('data-pjax-fragment', 'CurrentForm Content');
|
||||||
|
|
||||||
Requirements::javascript(BULK_EDIT_TOOLS_PATH . '/javascript/GridFieldBulkEditingForm.js');
|
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');
|
Requirements::add_i18n_javascript(BULK_EDIT_TOOLS_PATH . '/javascript/lang');
|
||||||
|
|
||||||
if($this->request->isAjax())
|
if($this->request->isAjax())
|
||||||
@ -150,7 +151,11 @@ class GridFieldBulkActionEditHandler extends GridFieldBulkActionHandler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$record->write();
|
$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(){
|
onchange: function(){
|
||||||
var form;
|
var $form = this.parents('form.bulkEditingForm');
|
||||||
|
|
||||||
form = this.parents('form.bulkEditingForm');
|
$form.removeClass('updated');
|
||||||
|
if ( !$form.hasClass('hasUpdate') )
|
||||||
if ( !$(form).hasClass('hasUpdate') ) {
|
{
|
||||||
$(form).addClass('hasUpdate');
|
$form.addClass('hasUpdate');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -37,15 +37,19 @@
|
|||||||
onunmatch: function(){
|
onunmatch: function(){
|
||||||
},
|
},
|
||||||
onclick: function(e){
|
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);
|
||||||
$(this).data('formsToUpdate', $(formsWithUpadtes).length);
|
|
||||||
url = $(this).data('url');
|
|
||||||
|
|
||||||
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');
|
cacheBuster = new Date().getTime() + '_' + $(this).attr('name');
|
||||||
data = $(this).serialize();
|
data = $(this).serialize();
|
||||||
|
|
||||||
@ -57,16 +61,31 @@
|
|||||||
data: data,
|
data: data,
|
||||||
type: "POST",
|
type: "POST",
|
||||||
context: $(this)
|
context: $(this)
|
||||||
}).done(function() {
|
}).success(function(data, textStatus, jqXHR) {
|
||||||
var btn = $('#bulkEditingUpdateBtn');
|
var $btn = $('#bulkEditingUpdateBtn'),
|
||||||
var totalForms = parseInt( $(btn).data('formsToUpdate') );
|
totalForms = parseInt( $btn.data('formsToUpdate') ),
|
||||||
var counter = parseInt( $(btn).data('completedForms') );
|
counter = parseInt( $btn.data('completedForms') ),
|
||||||
|
title
|
||||||
|
;
|
||||||
|
|
||||||
counter = counter + 1;
|
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').data('completedForms', 0);
|
||||||
$('#bulkEditingUpdateBtn').removeClass('loading');
|
$('#bulkEditingUpdateBtn').removeClass('loading');
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user