Обратный вызов JavaScript после перестановок расширений полей сетки SilverStripe?

у меня есть ModelAdmin с MyDataObject имеет много AnotherDataObject а также Модуль расширений поля сетки SilverStripe который контролирует

class TestAdmin extends ModelAdmin {
static $managed_models = array('MyDataObject');
static $url_segment = 'testadmin';
static $menu_title = 'TestAdmin';
}

class MyDataObject extends DataObject {
private static $db = array('Name' => 'Varchar(255)');
private static $has_many= array('AnotherDataObjects' => 'AnotherDataObject');

function getCMSFields() {
$fields = parent::getCMSFields();

if ($grid = $fields->dataFieldByName('AnotherDataObjects')) {
$grid->getConfig()
->removeComponentsByType('GridFieldAddExistingAutocompleter')
->addComponent(new GridFieldOrderableRows('Priority'));

$fields->removeByName('AnotherDataObjects');
$fields->insertAfter($grid,'Name');
}

return $fields;
}
}

class AnotherDataObject extends DataObject {
private static $db = array(
'Name'      => 'Varchar(255)',
'Priority'  => 'Int'
);
private static $has_one = array('MyDataObject' => 'MyDataObject');
}

Я вижу, что называется «повторный заказ», как бы я прикрепил, например …

alert('Reorder Complete!');

…вызываться после завершения работы системы с изменениями базы данных?

3

Решение

Нет никаких событий, инициируемых, когда строки сетки были переупорядочены. Однако вы можете переопределить конструктор:

$(".ss-gridfield-orderable tbody").entwine({
onadd: function() {
var self = this;

var helper = function(e, row) {
return row.clone()
.addClass("ss-gridfield-orderhelper")
.width("auto")
.find(".col-buttons")
.remove()
.end();
};

var update = function(event, ui) {
// If the item being dragged is unsaved, don't do anything
var postback = true;
if (ui.item.hasClass('ss-gridfield-inline-new')) {
postback = false;
}

// Rebuild all sort hidden fields
self.rebuildSort();

// Check if we are allowed to postback
var grid = self.getGridField();
if (grid.data("immediate-update") && postback)
{
grid.reload({
url: grid.data("url-reorder")
}, function(data) {
self.onreordered();
});
}
else
{
var form = $('.cms-edit-form');
form.addClass('changed');
}
};

this.sortable({
handle: ".handle",
helper: helper,
opacity: .7,
update: update
});
},
onreordered: function() {
console.log('The grid was reordered');
},
});

Он должен быть загружен после GridFieldExtensions.js

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]