Add load callback.

This commit is contained in:
David Molineus
2015-01-27 00:14:27 +01:00
parent 43a378bed6
commit a399004988
3 changed files with 48 additions and 8 deletions

View File

@@ -179,6 +179,9 @@ $GLOBALS['TL_DCA']['tl_leaflet_marker'] = array
array('Netzmacht\Contao\Leaflet\Dca\Leaflet', 'validateCoordinate'),
array('Netzmacht\Contao\Leaflet\Dca\Marker', 'saveCoordinates')
),
'load_callback' => array(
array('Netzmacht\Contao\Leaflet\Dca\Marker', 'loadCoordinates')
),
'wizard' => array(
array('Netzmacht\Contao\Leaflet\Dca\Leaflet', 'getGeocoder')
),
@@ -188,7 +191,6 @@ $GLOBALS['TL_DCA']['tl_leaflet_marker'] = array
'nullIfEmpty' => true,
'doNotSaveEmpty' => true,
),
'sql' => "varchar(255) NULL"
),
'latitude' => array
(
@@ -196,7 +198,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_marker'] = array
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "float NULL"
'sql' => "DECIMAL(10, 8)"
),
'longitude' => array
(
@@ -204,7 +206,7 @@ $GLOBALS['TL_DCA']['tl_leaflet_marker'] = array
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory' => false, 'maxlength' => 255, 'tl_class' => 'w50'),
'sql' => "float NULL"
'sql' => "DECIMAL(11, 8)"
),
'altitude' => array
(

View File

@@ -33,12 +33,17 @@ class migrate
*/
protected function createFields(\Database $database)
{
foreach (array('latitude', 'longitude', 'altitude') as $field) {
if (!$database->fieldExists('latitude', 'tl_leaflet_marker')) {
$database->execute(sprintf('ALTER TABLE tl_leaflet_marker ADD %s float NULL;', $field));
}
if (!$database->fieldExists('latitude', 'tl_leaflet_marker')) {
$database->execute('ALTER TABLE tl_leaflet_marker ADD latitude DECIMAL (10, 8) NULL;');
}
if (!$database->fieldExists('longitude', 'tl_leaflet_marker')) {
$database->execute('ALTER TABLE tl_leaflet_marker ADD longitude DECIMAL (11, 8) NULL;');
}
if (!$database->fieldExists('altitude', 'tl_leaflet_marker')) {
$database->execute('ALTER TABLE tl_leaflet_marker ADD altitude float NULL;');
}
}
/**

View File

@@ -82,6 +82,39 @@ class Marker
->set($combined)
->execute($dataContainer->id);
return $value;
return null;
}
/**
* Load the coordinates.
*
* @param string $value The raw data.
* @param \DataContainer $dataContainer The data container driver.
*
* @return string
*/
public function loadCoordinates($value, $dataContainer)
{
$result = \Database::getInstance()
->prepare('SELECT latitude, longitude, altitude FROM tl_leaflet_marker WHERE id=?')
->execute($dataContainer->id);
if ($result->numRows) {
$buffer = $result->latitude;
if ($buffer && $result->longitude) {
$buffer .= ',' . $result->longitude;
} else {
return $buffer;
}
if ($buffer && $result->altitude) {
$buffer .= ',' . $result->longitude;
}
return $buffer;
}
return '';
}
}