SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
25 -27 April, 2014 http://camp2014.drupal.dn.ua
Drupal and Outer
Space
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
A Game Changer for the Geospatial Data Market
Dauria Aerospace
develops new ways in
building low cost
satellites, thus reducing
costs for earth
observation data
drastically.
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Game Changer for the Geospatial Data Market
Affordable Geo data allow
small businesses to pioneer
new business models.
Example:
Low cost parcel monitoring
service for local farmers
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Building Satellites with Smartphone Technology
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Building Lightweight Satellites
Conventional Satellite
New Satellite
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Less Expensive Launches
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
We need a Configurable Product with a Map
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Commerce's Standard Handling of Product Variations
http://demo.commerceguys.com/ck/tops/guy-short-sleeve-tee
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Customizable Products Module
As the ancient
Drupal Proverb goes:
There's a module
for that
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Configuration of References
Content Type for the
Product Display
Configuration:
Add Product Reference
Set „Product Types that
can be referenced“
to Product Type;
Set „Add to Cart Line
Item Type“
to Line Item Type
Product Display Node
Configuration:
Set „Product Reference“
to Product
Product
Configuration:
Set „Referenced by“
to Product
Display Node
Product Type
Configuration:
Set „Default Reference“
to Content Type
Line Item Type
Configuration:
Set „Add to Cart Line
Item Type“
to itself (self reference!)
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Validating User Inputs
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Validating User Inputs
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Validating User Inputs
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Validating User Inputs
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Validating User Inputs
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Utilizing PostGIS
PostGIS extends PostgreSQL Databases with geodetic functio
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The PostGIS Module integrates this Functions into Drupal
function validate() {
$geo = is_null($this->wkt) ? $this->geometry : $this->wkt;
try {
$result = db_query("SELECT ST_GeometryType(:geo), ST_IsValid(:geo), ST_IsValidReason(:geo) as reason",
array(':geo' => $geo))->fetchAssoc();
// Return reason if geometry is not valid.
if (!$result['st_isvalid']) {
return array(
'error' => 'postgis_unparsable',
'message' => t('Not a valid geometry: @reason.', array('@reason' => $result['reason'])),
);
}
...
}
catch (PDOException $e) {
// TODO: catch only WKT parse errors.
return array(
'error' => 'postgis_unparsable',
'message' => t('Unable to parse WKT: ' . $geo),
);
}
}
class PostgisGeometry {
...
class PostgisGeometry {
...
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
But the PostGIS Module has some Weaknesses
/**
* Calculates diffrence to a given geometry.
*
* @param PostgisGeometry $geometry
* Geometry which this instance will be compared to.
*
* @return PostgisGeometry
* Geometry of diffrence.
*/
function diff($geometry) {
...
$geo_diff = db_query("SELECT ST_Union(ST_Difference(:geo_a, :geo_b), ST_Difference(:geo_b, :geo_a))",
array(':geo_a' => $geo_a, ':geo_b' => $geo_b))->fetchField();
$geo_type = db_query("SELECT GeometryType(:geo_diff)",
array(':geo_diff' => $geo_diff))->fetchField();
$diff = new PostgisGeometry($geo_type, $this->srid);
$diff->fromGeometry($geo_diff);
return $diff;
}
- Some important geodetic functions are not implemented
- Error handling is inconsistent
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Extending and Overwriting the PostGIS Module
class PostgisGeometries extends PostgisGeometry {
...
function intersects($geometry) {
if ((get_class($geometry) !== 'postgis_geometry') && (get_class($geometry) !== 'PostgisGeometries')) {
throw new PostgisGeometryException('not postgis_geometry');
}
try {
$geo_a = $this->getText();
if(stripos($geo_a,'GEOMETRYCOLLECTION(' ) === 0) {
$geo_a = substr(strstr($geo_a, '('),1, -1);
}
$geo_b = $geometry->getText();
if(stripos($geo_b,'GEOMETRYCOLLECTION(' ) === 0) {
$geo_b = substr(strstr($geo_b, '('),1, -1);
}
$intersects = db_query("SELECT ST_Intersects(text :geo_a, text :geo_b)",
array(':geo_a' => $geo_a, ':geo_b' => $geo_b))->fetchField();
return $intersects;
}
catch (PDOException $e) {
throw new PostgisGeometryException( $e->getMessage( ) , (int)$e->getCode( ) );
}
}
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Writing a module to validate the AOI and calculate the price
function water_quality_form_alter(&$form, &$form_state, $form_id) {
...
$coverage_region_comparison->transform($aoi->getSrid());
$coverage_region_comparison->dump();
$intersects_google_projection = $coverage_region_comparison->intersects($aoi_comparison);
if ($intersects_google_projection){
// Convert aoi to srid of the region.
$aoi_comparison->transform($coverage_region['region']->getSrid());
$aoi_comparison->dump();
// check if the aoi intersects with the region. This needs to be
// done in the SRID of the coverage region for accuracy.
$within = $aoi_comparison->within($coverage_region['region']);
if ($within){
...
...
$form['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt']['#element_validate'][] =
'water_quality_aoi_validate';
...
function water_quality_aoi_validate($element, &$form_state) {
...
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Open Layers Editor has some Bugs
What it
should
deliver
POLYGON((1066993.16984217 4873953.49407963,
1340943.47921804 5392502.29411237,
1810572.58092165 5382718.35450175,
1979345.539345157 5106322.0602720035,
1849708.33939679 4776114.09813913,
1066993.16984217 4873953.49407963))
GEOMETRYCOLLECTION(
POLYGON((1066993.16984217 4873953.49407963,
1340943.47921804 5392502.29411237,
1810572.58092165 5382718.35450175,
1979345.539345157 5106322.0602720035,
1849708.33939679 4776114.09813913,
1066993.16984217 4873953.49407963)),
POINT(1203968.324530105 5133227.894096),
POINT(1575758.0300698448 5387610.32430706),
POINT(1894959.0601334036 5244520.207386877),
POINT(1914526.9393709735 4941218.079205567),
POINT(1458350.75461948 4825033.79610938),
POINT(1066993.16984217 4873953.49407963),
POINT(1340943.47921804 5392502.29411237),
POINT(1810572.58092165 5382718.35450175),
POINT(1979345.539345157 5106322.0602720035),
POINT(1849708.33939679 4776114.09813913))
What it
sometime
s
delivers
GEOMETRYCOLLECTION()
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Open Layers Editor has some Bugs
Caching and the
Open Layers
Editor
have an awkward
relationship
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Open Layers Editor has some Bugs
function water_quality_subscription_type_validate($element, &$form_state) {
if(!isset($element['#value']) || empty($element['#value'])){
drupal_rebuild_form($form_state['build_info']['form_id'], $form_state);
}
}
function eomap_eula_validate($element, &$form_state) {
if(!isset($element['#value']) || empty($element['#value'])){
drupal_rebuild_form($form_state['build_info']['form_id'], $form_state);
form_set_error('field_line_item_map', t('Agreement to Product EULA must be checked'));
}
}
function water_quality_form_alter(&$form, &$form_state, $form_id) {
...
...
$form['line_item_fields']['field_subscription_type'][LANGUAGE_NONE]['#element_validate'][] =
'water_quality_subscription_type_validate';
$form['line_item_fields']['field_eomap_eula_agreement'][LANGUAGE_NONE]['#element_validate'][] =
'eomap_eula_validate';
...
...
}
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Open Layers Editor has some Bugs
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Open Layers Editor has some Bugs
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The Open Layers Editor has some Bugs
$form_state['no_cache'] = TRUE;
if (isset($form_state['values']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'])){
$form_state['input']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'] =
$form_state['values']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'];
} else {
if (isset($form_state['input']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'])){
$wkt = $form_state['input']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'];
if(stripos($wkt, 'POINT') !== false){
$wkt = substr(strstr($wkt, '('), 1,(stripos($wkt, ',POINT') - stripos($wkt, '(') -1));
}
$form['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt']['#value'] = $wkt;
}
}
Some form fields mysteriously loose
their value and need to be refilled
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Wrapping it up: Placing the Geo 
Data Product in the Shopping Cart
A Rule
overwrites
the line item
price with
the calculated
price
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Wrapping it up: Placing the Geo 
Data Product in the Shopping Cart
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
What it's all about...
You can build some such thing
and even more sophisticated
sites with Drupal modules
and a little coding!
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
Any Questions?
Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org
The End
Спасибі за увагу
Спасибо за внимание
Danke für Ihre Aufmerksamkeit
Thank you for your attention
Translated to a select
choice of languages
observed on planet Earth:

Weitere ähnliche Inhalte

Ähnlich wie Drupal and Outer space - Martin Mayer

Moose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeMoose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeTudor Girba
 
Platform agnostic information systems development
Platform agnostic information systems developmentPlatform agnostic information systems development
Platform agnostic information systems developmentMark Jayson Fuentes
 
(PHPers Wrocław #5) How to write valuable unit test?
(PHPers Wrocław #5) How to write valuable unit test?(PHPers Wrocław #5) How to write valuable unit test?
(PHPers Wrocław #5) How to write valuable unit test?RST Software Masters
 
Best Practices with ODI : Flexibility
Best Practices with ODI : FlexibilityBest Practices with ODI : Flexibility
Best Practices with ODI : FlexibilityGurcan Orhan
 
Gmaps Railscamp2008
Gmaps Railscamp2008Gmaps Railscamp2008
Gmaps Railscamp2008xilinus
 
Why is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenariosWhy is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenariosDivante
 
Machine Learning Model for M.S admissions
Machine Learning Model for M.S admissionsMachine Learning Model for M.S admissions
Machine Learning Model for M.S admissionsOmkar Rane
 
Running Intelligent Applications inside a Database: Deep Learning with Python...
Running Intelligent Applications inside a Database: Deep Learning with Python...Running Intelligent Applications inside a Database: Deep Learning with Python...
Running Intelligent Applications inside a Database: Deep Learning with Python...Miguel González-Fierro
 
Saving Gaia with GeoDjango
Saving Gaia with GeoDjangoSaving Gaia with GeoDjango
Saving Gaia with GeoDjangoCalvin Cheng
 
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...FarhanAhmade
 
Mobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in SwitzerlandMobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in SwitzerlandFrançois Garillot
 
Spark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed KafsiSpark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed KafsiSpark Summit
 
Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery ApplicationsRebecca Murphey
 
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...Databricks
 
Scaling up data science applications
Scaling up data science applicationsScaling up data science applications
Scaling up data science applicationsKexin Xie
 
Computer Science CS Project Matrix CBSE Class 12th XII .pdf
Computer Science CS Project Matrix CBSE Class 12th XII .pdfComputer Science CS Project Matrix CBSE Class 12th XII .pdf
Computer Science CS Project Matrix CBSE Class 12th XII .pdfPranavAnil9
 

Ähnlich wie Drupal and Outer space - Martin Mayer (20)

Moose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeMoose: how to solve real problems without reading code
Moose: how to solve real problems without reading code
 
Platform agnostic information systems development
Platform agnostic information systems developmentPlatform agnostic information systems development
Platform agnostic information systems development
 
(PHPers Wrocław #5) How to write valuable unit test?
(PHPers Wrocław #5) How to write valuable unit test?(PHPers Wrocław #5) How to write valuable unit test?
(PHPers Wrocław #5) How to write valuable unit test?
 
Best Practices with ODI : Flexibility
Best Practices with ODI : FlexibilityBest Practices with ODI : Flexibility
Best Practices with ODI : Flexibility
 
Deep learning
Deep learningDeep learning
Deep learning
 
Gmaps Railscamp2008
Gmaps Railscamp2008Gmaps Railscamp2008
Gmaps Railscamp2008
 
Android swedroid
Android swedroidAndroid swedroid
Android swedroid
 
Why is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenariosWhy is crud a bad idea - focus on real scenarios
Why is crud a bad idea - focus on real scenarios
 
Machine Learning Model for M.S admissions
Machine Learning Model for M.S admissionsMachine Learning Model for M.S admissions
Machine Learning Model for M.S admissions
 
Running Intelligent Applications inside a Database: Deep Learning with Python...
Running Intelligent Applications inside a Database: Deep Learning with Python...Running Intelligent Applications inside a Database: Deep Learning with Python...
Running Intelligent Applications inside a Database: Deep Learning with Python...
 
Saving Gaia with GeoDjango
Saving Gaia with GeoDjangoSaving Gaia with GeoDjango
Saving Gaia with GeoDjango
 
Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2Angular Workshop_Sarajevo2
Angular Workshop_Sarajevo2
 
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...Informatics Practices (new) solution CBSE  2021, Compartment,  improvement ex...
Informatics Practices (new) solution CBSE 2021, Compartment, improvement ex...
 
Mobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in SwitzerlandMobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in Switzerland
 
Spark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed KafsiSpark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed Kafsi
 
Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery Applications
 
Seeing Like Software
Seeing Like SoftwareSeeing Like Software
Seeing Like Software
 
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...
Scaling Up: How Switching to Apache Spark Improved Performance, Realizability...
 
Scaling up data science applications
Scaling up data science applicationsScaling up data science applications
Scaling up data science applications
 
Computer Science CS Project Matrix CBSE Class 12th XII .pdf
Computer Science CS Project Matrix CBSE Class 12th XII .pdfComputer Science CS Project Matrix CBSE Class 12th XII .pdf
Computer Science CS Project Matrix CBSE Class 12th XII .pdf
 

Mehr von DrupalCampDN

Drupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef DabernigDrupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef DabernigDrupalCampDN
 
Dependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqweDependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqweDrupalCampDN
 
Our AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew BoagOur AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew BoagDrupalCampDN
 
Guzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем МирошникGuzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем МирошникDrupalCampDN
 
Blocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef DabernigBlocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef DabernigDrupalCampDN
 
CKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman SeferovCKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman SeferovDrupalCampDN
 
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander SchedrovDrush - use full power - Alexander Schedrov
Drush - use full power - Alexander SchedrovDrupalCampDN
 
Это Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей ЧерноусЭто Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей ЧерноусDrupalCampDN
 
Migrate - new way site upgrade
Migrate - new way site upgradeMigrate - new way site upgrade
Migrate - new way site upgradeDrupalCampDN
 
Caching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander ShumenkoCaching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander ShumenkoDrupalCampDN
 
Rich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим ВалуевRich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим ВалуевDrupalCampDN
 
Panels как философия - Alexander Danilenko
Panels как философия - Alexander DanilenkoPanels как философия - Alexander Danilenko
Panels как философия - Alexander DanilenkoDrupalCampDN
 
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals   maksym moskvychevTwig internals - Maksym MoskvychevTwig internals   maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals maksym moskvychevDrupalCampDN
 
Boost your theming skills - Artem Shymko
Boost your theming skills - Artem ShymkoBoost your theming skills - Artem Shymko
Boost your theming skills - Artem ShymkoDrupalCampDN
 
Continious integration - Иван Лещёв
Continious integration - Иван ЛещёвContinious integration - Иван Лещёв
Continious integration - Иван ЛещёвDrupalCampDN
 
Rules - Yaroslav Doroshuk
Rules - Yaroslav DoroshukRules - Yaroslav Doroshuk
Rules - Yaroslav DoroshukDrupalCampDN
 
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...DrupalCampDN
 
Render API - Pavel Makhrinsky
Render API - Pavel MakhrinskyRender API - Pavel Makhrinsky
Render API - Pavel MakhrinskyDrupalCampDN
 
Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.DrupalCampDN
 
Управление отображением материалов с помощью Display Suite. Илья Станкевич.
Управление отображением материалов с помощью Display Suite. Илья Станкевич.Управление отображением материалов с помощью Display Suite. Илья Станкевич.
Управление отображением материалов с помощью Display Suite. Илья Станкевич.DrupalCampDN
 

Mehr von DrupalCampDN (20)

Drupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef DabernigDrupal - Changing the Web by Connecting Open Minds - Josef Dabernig
Drupal - Changing the Web by Connecting Open Minds - Josef Dabernig
 
Dependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqweDependency Injection in Drupal 8 - Стадник АндрейQweqwe
Dependency Injection in Drupal 8 - Стадник АндрейQweqwe
 
Our AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew BoagOur AWS Cloud Journey - Andrew Boag
Our AWS Cloud Journey - Andrew Boag
 
Guzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем МирошникGuzzle in Drupal 8 and as a REST client - Артем Мирошник
Guzzle in Drupal 8 and as a REST client - Артем Мирошник
 
Blocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef DabernigBlocks & Layouts in D7 - Josef Dabernig
Blocks & Layouts in D7 - Josef Dabernig
 
CKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman SeferovCKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
CKEditor в Drupal: тонкая настройка и кастомизация - Osman Seferov
 
Drush - use full power - Alexander Schedrov
Drush - use full power - Alexander SchedrovDrush - use full power - Alexander Schedrov
Drush - use full power - Alexander Schedrov
 
Это Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей ЧерноусЭто Drupal, %username%! - Андрей Черноус
Это Drupal, %username%! - Андрей Черноус
 
Migrate - new way site upgrade
Migrate - new way site upgradeMigrate - new way site upgrade
Migrate - new way site upgrade
 
Caching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander ShumenkoCaching on highload Drupal site - Alexander Shumenko
Caching on highload Drupal site - Alexander Shumenko
 
Rich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим ВалуевRich Text in Drupal - Вадим Валуев
Rich Text in Drupal - Вадим Валуев
 
Panels как философия - Alexander Danilenko
Panels как философия - Alexander DanilenkoPanels как философия - Alexander Danilenko
Panels как философия - Alexander Danilenko
 
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals   maksym moskvychevTwig internals - Maksym MoskvychevTwig internals   maksym moskvychev
Twig internals - Maksym MoskvychevTwig internals maksym moskvychev
 
Boost your theming skills - Artem Shymko
Boost your theming skills - Artem ShymkoBoost your theming skills - Artem Shymko
Boost your theming skills - Artem Shymko
 
Continious integration - Иван Лещёв
Continious integration - Иван ЛещёвContinious integration - Иван Лещёв
Continious integration - Иван Лещёв
 
Rules - Yaroslav Doroshuk
Rules - Yaroslav DoroshukRules - Yaroslav Doroshuk
Rules - Yaroslav Doroshuk
 
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
Системы управления взаимоотношениями с клиентами. Drupal CRM Core. - Вадим Ми...
 
Render API - Pavel Makhrinsky
Render API - Pavel MakhrinskyRender API - Pavel Makhrinsky
Render API - Pavel Makhrinsky
 
Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.Темизация Drupal7. Omega theme. Александр Даниленко.
Темизация Drupal7. Omega theme. Александр Даниленко.
 
Управление отображением материалов с помощью Display Suite. Илья Станкевич.
Управление отображением материалов с помощью Display Suite. Илья Станкевич.Управление отображением материалов с помощью Display Suite. Илья Станкевич.
Управление отображением материалов с помощью Display Suite. Илья Станкевич.
 

Kürzlich hochgeladen

FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607dollysharma2066
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girladitipandeya
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.soniya singh
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$kojalkojal131
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Callshivangimorya083
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girlsstephieert
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirtrahman018755
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Sheetaleventcompany
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 

Kürzlich hochgeladen (20)

FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
 
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call GirlVIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
VIP 7001035870 Find & Meet Hyderabad Call Girls LB Nagar high-profile Call Girl
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
 
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip CallDelhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
Delhi Call Girls Rohini 9711199171 ☎✔👌✔ Whatsapp Hard And Sexy Vip Call
 
Russian Call girls in Dubai +971563133746 Dubai Call girls
Russian  Call girls in Dubai +971563133746 Dubai  Call girlsRussian  Call girls in Dubai +971563133746 Dubai  Call girls
Russian Call girls in Dubai +971563133746 Dubai Call girls
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya ShirtChallengers I Told Ya Shirt
Challengers I Told Ya ShirtChallengers I Told Ya Shirt
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 

Drupal and Outer space - Martin Mayer

  • 1. 25 -27 April, 2014 http://camp2014.drupal.dn.ua Drupal and Outer Space
  • 2. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org A Game Changer for the Geospatial Data Market Dauria Aerospace develops new ways in building low cost satellites, thus reducing costs for earth observation data drastically.
  • 3. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Game Changer for the Geospatial Data Market Affordable Geo data allow small businesses to pioneer new business models. Example: Low cost parcel monitoring service for local farmers
  • 4. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Building Satellites with Smartphone Technology
  • 5. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Building Lightweight Satellites Conventional Satellite New Satellite
  • 6. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Less Expensive Launches
  • 7. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org We need a Configurable Product with a Map
  • 8. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Commerce's Standard Handling of Product Variations http://demo.commerceguys.com/ck/tops/guy-short-sleeve-tee
  • 9. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Customizable Products Module As the ancient Drupal Proverb goes: There's a module for that
  • 10. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Configuration of References Content Type for the Product Display Configuration: Add Product Reference Set „Product Types that can be referenced“ to Product Type; Set „Add to Cart Line Item Type“ to Line Item Type Product Display Node Configuration: Set „Product Reference“ to Product Product Configuration: Set „Referenced by“ to Product Display Node Product Type Configuration: Set „Default Reference“ to Content Type Line Item Type Configuration: Set „Add to Cart Line Item Type“ to itself (self reference!)
  • 11. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Validating User Inputs
  • 12. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Validating User Inputs
  • 13. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Validating User Inputs
  • 14. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Validating User Inputs
  • 15. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Validating User Inputs
  • 16. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Utilizing PostGIS PostGIS extends PostgreSQL Databases with geodetic functio
  • 17. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The PostGIS Module integrates this Functions into Drupal function validate() { $geo = is_null($this->wkt) ? $this->geometry : $this->wkt; try { $result = db_query("SELECT ST_GeometryType(:geo), ST_IsValid(:geo), ST_IsValidReason(:geo) as reason", array(':geo' => $geo))->fetchAssoc(); // Return reason if geometry is not valid. if (!$result['st_isvalid']) { return array( 'error' => 'postgis_unparsable', 'message' => t('Not a valid geometry: @reason.', array('@reason' => $result['reason'])), ); } ... } catch (PDOException $e) { // TODO: catch only WKT parse errors. return array( 'error' => 'postgis_unparsable', 'message' => t('Unable to parse WKT: ' . $geo), ); } } class PostgisGeometry { ... class PostgisGeometry { ...
  • 18. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org But the PostGIS Module has some Weaknesses /** * Calculates diffrence to a given geometry. * * @param PostgisGeometry $geometry * Geometry which this instance will be compared to. * * @return PostgisGeometry * Geometry of diffrence. */ function diff($geometry) { ... $geo_diff = db_query("SELECT ST_Union(ST_Difference(:geo_a, :geo_b), ST_Difference(:geo_b, :geo_a))", array(':geo_a' => $geo_a, ':geo_b' => $geo_b))->fetchField(); $geo_type = db_query("SELECT GeometryType(:geo_diff)", array(':geo_diff' => $geo_diff))->fetchField(); $diff = new PostgisGeometry($geo_type, $this->srid); $diff->fromGeometry($geo_diff); return $diff; } - Some important geodetic functions are not implemented - Error handling is inconsistent
  • 19. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Extending and Overwriting the PostGIS Module class PostgisGeometries extends PostgisGeometry { ... function intersects($geometry) { if ((get_class($geometry) !== 'postgis_geometry') && (get_class($geometry) !== 'PostgisGeometries')) { throw new PostgisGeometryException('not postgis_geometry'); } try { $geo_a = $this->getText(); if(stripos($geo_a,'GEOMETRYCOLLECTION(' ) === 0) { $geo_a = substr(strstr($geo_a, '('),1, -1); } $geo_b = $geometry->getText(); if(stripos($geo_b,'GEOMETRYCOLLECTION(' ) === 0) { $geo_b = substr(strstr($geo_b, '('),1, -1); } $intersects = db_query("SELECT ST_Intersects(text :geo_a, text :geo_b)", array(':geo_a' => $geo_a, ':geo_b' => $geo_b))->fetchField(); return $intersects; } catch (PDOException $e) { throw new PostgisGeometryException( $e->getMessage( ) , (int)$e->getCode( ) ); } }
  • 20. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Writing a module to validate the AOI and calculate the price function water_quality_form_alter(&$form, &$form_state, $form_id) { ... $coverage_region_comparison->transform($aoi->getSrid()); $coverage_region_comparison->dump(); $intersects_google_projection = $coverage_region_comparison->intersects($aoi_comparison); if ($intersects_google_projection){ // Convert aoi to srid of the region. $aoi_comparison->transform($coverage_region['region']->getSrid()); $aoi_comparison->dump(); // check if the aoi intersects with the region. This needs to be // done in the SRID of the coverage region for accuracy. $within = $aoi_comparison->within($coverage_region['region']); if ($within){ ... ... $form['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt']['#element_validate'][] = 'water_quality_aoi_validate'; ... function water_quality_aoi_validate($element, &$form_state) { ...
  • 21. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Open Layers Editor has some Bugs What it should deliver POLYGON((1066993.16984217 4873953.49407963, 1340943.47921804 5392502.29411237, 1810572.58092165 5382718.35450175, 1979345.539345157 5106322.0602720035, 1849708.33939679 4776114.09813913, 1066993.16984217 4873953.49407963)) GEOMETRYCOLLECTION( POLYGON((1066993.16984217 4873953.49407963, 1340943.47921804 5392502.29411237, 1810572.58092165 5382718.35450175, 1979345.539345157 5106322.0602720035, 1849708.33939679 4776114.09813913, 1066993.16984217 4873953.49407963)), POINT(1203968.324530105 5133227.894096), POINT(1575758.0300698448 5387610.32430706), POINT(1894959.0601334036 5244520.207386877), POINT(1914526.9393709735 4941218.079205567), POINT(1458350.75461948 4825033.79610938), POINT(1066993.16984217 4873953.49407963), POINT(1340943.47921804 5392502.29411237), POINT(1810572.58092165 5382718.35450175), POINT(1979345.539345157 5106322.0602720035), POINT(1849708.33939679 4776114.09813913)) What it sometime s delivers GEOMETRYCOLLECTION()
  • 22. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Open Layers Editor has some Bugs Caching and the Open Layers Editor have an awkward relationship
  • 23. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Open Layers Editor has some Bugs function water_quality_subscription_type_validate($element, &$form_state) { if(!isset($element['#value']) || empty($element['#value'])){ drupal_rebuild_form($form_state['build_info']['form_id'], $form_state); } } function eomap_eula_validate($element, &$form_state) { if(!isset($element['#value']) || empty($element['#value'])){ drupal_rebuild_form($form_state['build_info']['form_id'], $form_state); form_set_error('field_line_item_map', t('Agreement to Product EULA must be checked')); } } function water_quality_form_alter(&$form, &$form_state, $form_id) { ... ... $form['line_item_fields']['field_subscription_type'][LANGUAGE_NONE]['#element_validate'][] = 'water_quality_subscription_type_validate'; $form['line_item_fields']['field_eomap_eula_agreement'][LANGUAGE_NONE]['#element_validate'][] = 'eomap_eula_validate'; ... ... }
  • 24. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Open Layers Editor has some Bugs
  • 25. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Open Layers Editor has some Bugs
  • 26. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The Open Layers Editor has some Bugs $form_state['no_cache'] = TRUE; if (isset($form_state['values']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'])){ $form_state['input']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'] = $form_state['values']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt']; } else { if (isset($form_state['input']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt'])){ $wkt = $form_state['input']['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt']; if(stripos($wkt, 'POINT') !== false){ $wkt = substr(strstr($wkt, '('), 1,(stripos($wkt, ',POINT') - stripos($wkt, '(') -1)); } $form['line_item_fields']['field_line_item_map'][LANGUAGE_NONE][0]['wkt']['#value'] = $wkt; } } Some form fields mysteriously loose their value and need to be refilled
  • 27. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Wrapping it up: Placing the Geo  Data Product in the Shopping Cart A Rule overwrites the line item price with the calculated price
  • 28. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Wrapping it up: Placing the Geo  Data Product in the Shopping Cart
  • 29. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org What it's all about... You can build some such thing and even more sophisticated sites with Drupal modules and a little coding!
  • 30. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org Any Questions?
  • 31. Martin Mayer, Diplom Systems Practitioner (Open) info@socialoom.org The End Спасибі за увагу Спасибо за внимание Danke für Ihre Aufmerksamkeit Thank you for your attention Translated to a select choice of languages observed on planet Earth: