SlideShare a Scribd company logo
1 of 17
Download to read offline
DrupalGap
Crea una app Android (ed iOS) con Drupal ,
Drupalgap ed Apache Cordova
Lorenzo Monaco
m3m3nto@gmail.com
DrupalGap
● Inizialmente sviluppato da Tyler Frankenstein
all'inizio del 2012.
● Permette di create app Android e iOS
totalmente gestite da una installazione Drupal.
DrupalGap: architettura
Basato su un modulo Drupal che fornisce un
wrapper per Drupal Services e da un mobile
SDK basato su jQuery Mobile
Modulo Drupal:
services
wrapper
Mobile SDK:
basato su jQuery
Mobile
https://www.drupal.org/project/drupalgap
https://www.github.com/signalpoint/DrupalGap
DrupalGap: come funziona? (1)
Cordova/PhoneGap permette la creazione
di app per Android e iOS (recentemente
anche Windows Phone) basate su
HTML5 + CSS3 + JS (es. jQuery Mobile)
Cordova mette a disposizione un wrapper
javascript per tutte le funzionalità tipiche di
un device mobile: fotocamera, bussola
digitale, contatti, Gps, filesystem locale,
etc.
DrupalGap permette quindi di collegare
la app al nostro back-end drupal.
DrupalGap fornisce una installazione di
Drupal di natura headless, che espone
una serie di webservice consumati
dalla nostra app.
DrupalGap: come funziona? (2)
rdbms drupal
views
datasource
services +
drupalgap mod
Restfull
webservice
http server
drupalGap
mobile sdkjDrupal
jQuery
mobile
mobile app
rest server module
DrupalGap e Drupal (1)
● DrupalGap espone una API javascript che
eredita tutti i concetti chiave di Drupal
Themes Forms
Modules Messages
Blocks Vews
Pages Services
Entity Fields
DrupalGap e Drupal (2)
● Fornisce integrazione per molti moduli esistenti:
http://drupalgap.com/project/modules
● L'api è chiaramente estendibile:
http://api.drupalgap.org
● Tra i moduli supportati troviamo:
Commerce, Webform, Gmap, Colorbox,
AmazonS3
● Drupal8 fornisce restfull webservice ootb ed è
in fase di adattamento il mobile sdk.
Installazione ambiente di sviluppo (1)
● Installazione sintetica step by step:
https://github.com/m3m3nto/drupalday2015_drupalgap
● Requisiti:
– Oracle Java6
– Nodejs
– Apache Cordova
– Cordova plugin
– AndroidSDK
– Drupal
Installazione ambiente di sviluppo (2)
● Creazione dell'app con Apache Cordova:
# cordova create drupaldayapp com.drupalday "DrupalDay App"
# cd drupaldayapp
# cordova platform add android
# cordova plugin add … [v. drupalgap_environment_installation]
● Installazione dei moduli Drupal necessari:
# drush dl drupalgap services libraries views_datasource
# drush en drupalgap field_ui image list menu number path services
views_datasource views_ui locale -y
Installazione ambiente di sviluppo (3)
● Download del mobile SDK:
https://github.com/signalpoint/DrupalGap
# wget https://github.com/signalpoint/DrupalGap/archive/7.x-1.3.tar.gz
# tar xzf 7.x-1.3.tar.gz && mv DrupalGap-7.x-1.3/* www/
# rm -rf www/css/ www/img/ www/js/
# cd www/app && cp default.settings.js settings.js
● Impostazione della url/endpoint di Drupal ed
impostazione del DrupalGap mode in settings.js:
Drupal.settings.site_path = 'http://drupalday.dev';
drupalgap.settings.mode = 'phonegap';
# cp platforms/android/assets/www/cordova.js www/
DrupalGap: DrupalDay demo app
● Repository delle slide [slide]
● Istruzioni installazione [drupalgap_install.txt]
● Codice del progetto demo [drupaldayapp]
https://github.com/m3m3nto/drupalday2015_drupalgap
http://bit.ly/1IAvqkC
● Apk per l'installazione
http://drupalday.iotdb.it/sites/default/files/drupaldaydemo.apk
DrupalGap API (1)
● Esempio di hook_menu():
function drupalday_menu() {
try {
var items = {};
items['drupaldaydashboard'] = {
title: 'Drupalday 2015',
page_callback: 'drupalday_dashboard_page'
};
items['gallery'] = {
title: 'Gallery',
page_callback: 'drupalday_gallery_page',
options:{
reloadPage:true
}
};
return items;
}
catch (error) { console.log('drupalday_menu - ' + error); }
}
DrupalGap: API (2)
● page_callback implementation:
function drupalday_dashboard_page() {
try {
var content = {};
content.site_info = { markup: '<h4 style="text-align: center;">' + Drupal.settings.site_path + '</h4>' };
content.welcome = { markup: '<h2 style="text-align: center;">' + t('Benvenuto al DrupalDay') + '</h2>'
+ '<p style="text-align: center;">' +
t('DrupalGap: crea una app Android (ed iOS) con Drupal , Drupalgap ed Apache Cordova') + '</p>'
};
if (drupalgap.settings.logo) {
content.logo = { markup: '<center>' + theme('image', {path: drupalgap.settings.logo}) + '</center>'
};
}
content.get_started = {
theme: 'button_link',
text: t('Guida dev environment'),
path: 'https://github.com/m3m3nto/drupalday2015_drupalgap',
options: {InAppBrowser: true}
};
[...]
return content;
}
catch (error) { console.log('drupalday_dashboard_page - ' + error); }
}
DrupalGap: API (3)
● Attivazione del modulo
in settings.js:
// App Front Page
drupalgap.settings.front =
'drupalday-dashboard';
Drupal.modules.custom['drupalday'] = {};
● Build della app android:
# cordova run android
DrupalGap Cordova API
● Apache Cordova permette di accedere alle
funzionalità tipiche dei device mobili:
# cordova plugin list
[...] "Battery"
[...] "Contacts"
[...] "Device Motion"
[...] "Device Orientation"
[...] "Vibration"
[...] "Whitelist"
[...] "Camera"
[...] "Console"
[...] "Device"
[...] "Notification"
[...] "File"
[...] "Geolocation"
[...] "InAppBrowser"
[...] "Network Information"
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova

More Related Content

Viewers also liked

La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu
La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.euLa semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu
La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.euDrupalDay
 
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...DrupalDay
 
La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...
La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...
La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...DrupalDay
 
"Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen...
"Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen..."Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen...
"Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen...DrupalDay
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalDrupalDay
 
Come progettare e realizzare una distribuzione in Drupal 8
Come progettare e realizzare una distribuzione in Drupal 8Come progettare e realizzare una distribuzione in Drupal 8
Come progettare e realizzare una distribuzione in Drupal 8DrupalDay
 
Drupal per la PA
Drupal per la PADrupal per la PA
Drupal per la PADrupalDay
 
Da X a Drupal 8, migra tutto e vivi sereno
Da X a Drupal 8, migra tutto e vivi serenoDa X a Drupal 8, migra tutto e vivi sereno
Da X a Drupal 8, migra tutto e vivi serenoDrupalDay
 
Tooling per il tema in Drupal 8
Tooling per il tema in Drupal 8Tooling per il tema in Drupal 8
Tooling per il tema in Drupal 8DrupalDay
 
Once you go cloud you never go down
Once you go cloud you never go downOnce you go cloud you never go down
Once you go cloud you never go downDrupalDay
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your CodeDrupalDay
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
 
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release partyDrupalDay
 
[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 framework[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 frameworkDrupalDay
 
[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 StakeholdersDrupalDay
 
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.DrupalDay
 
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a timeDrupalDay
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di piùDrupalDay
 
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...DrupalDay
 

Viewers also liked (20)

La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu
La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.euLa semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu
La semantica per automatizzare una redazione web: l'esperienza di Innolabplus.eu
 
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
Drupal 8: dal download del Core alla pubblicazione in produzione. Cos'è cambi...
 
La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...
La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...
La piattaforma web di CNA: Istanze Drupal replicabili integrate con Alfresco ...
 
"Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen...
"Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen..."Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen...
"Twig e i belli dentro": panoramica sui nuovi standard di frontend-developmen...
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
Come progettare e realizzare una distribuzione in Drupal 8
Come progettare e realizzare una distribuzione in Drupal 8Come progettare e realizzare una distribuzione in Drupal 8
Come progettare e realizzare una distribuzione in Drupal 8
 
Drupal per la PA
Drupal per la PADrupal per la PA
Drupal per la PA
 
Da X a Drupal 8, migra tutto e vivi sereno
Da X a Drupal 8, migra tutto e vivi serenoDa X a Drupal 8, migra tutto e vivi sereno
Da X a Drupal 8, migra tutto e vivi sereno
 
Tooling per il tema in Drupal 8
Tooling per il tema in Drupal 8Tooling per il tema in Drupal 8
Tooling per il tema in Drupal 8
 
Once you go cloud you never go down
Once you go cloud you never go downOnce you go cloud you never go down
Once you go cloud you never go down
 
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party
 
[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 framework[drupalday2017] - Async navigation with a lightweight ES6 framework
[drupalday2017] - Async navigation with a lightweight ES6 framework
 
[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders
 
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
[drupalday 2017] - Accessibilità Web: Finalità, metodologie e strumenti.
 
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
[drupalday2017 - KEYNOTE] - Saving the world one Open Source project at a time
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più[drupalday2017] - Behat per Drupal: test automatici e molto di più
[drupalday2017] - Behat per Drupal: test automatici e molto di più
 
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
[drupalday2017] - Contenuti educativi digitali aperti, creare contenuti e dis...
 

Similar to DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova

Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernosparkfabrik
 
LinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery MobileLinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery MobileSalvatore Carotenuto
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Gabriele Gaggi
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceDiego La Monica
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)Diego La Monica
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLSinergia Totale
 
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Davide Cerbo
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformGabriele Gaggi
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di riaLorenzo Bortolotto
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Antonio Gallo
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIvan Gualandri
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoWireless
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld DevicesGWTcon
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introductionspawn150
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 

Similar to DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova (20)

Drupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native modernoDrupal 10: un framework PHP di sviluppo Cloud Native moderno
Drupal 10: un framework PHP di sviluppo Cloud Native moderno
 
LinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery MobileLinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery Mobile
 
Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5Sviluppo di App cross-platform con Cordova e HTML5
Sviluppo di App cross-platform con Cordova e HTML5
 
Applicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformanceApplicazioni mobili: strumenti, costi soluzioni e peformance
Applicazioni mobili: strumenti, costi soluzioni e peformance
 
I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)I linguaggi del web - seconda edizione (3° giornata)
I linguaggi del web - seconda edizione (3° giornata)
 
Federico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile CordovaFederico Massi.it - Intro alle app mobile Cordova
Federico Massi.it - Intro alle app mobile Cordova
 
Come sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTMLCome sviluppare applicazioni cross device con HTML
Come sviluppare applicazioni cross device con HTML
 
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)
 
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Android
AndroidAndroid
Android
 
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platformAngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
AngularJs, Bootstrap e Cordova: il connubio per app mobile cross-platform
 
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
 
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
Le novità di Ionic 4- Il framework basato su Angular per sviluppare applicazi...
 
Introduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulugIntroduzione alla programmazione Android - Android@tulug
Introduzione alla programmazione Android - Android@tulug
 
Google Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobiliGoogle Android: una nuova piattaforma Open Source per dispositivi mobili
Google Android: una nuova piattaforma Open Source per dispositivi mobili
 
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
 
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 

More from DrupalDay

[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...DrupalDay
 
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client ManagerDrupalDay
 
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al themingDrupalDay
 
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5DrupalDay
 
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...DrupalDay
 
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di SapienzaDrupalDay
 
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal![drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!DrupalDay
 
[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizio[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizioDrupalDay
 
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8DrupalDay
 
[drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance![drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance!DrupalDay
 
[drupalday2017] - REST in pieces
[drupalday2017] - REST in pieces[drupalday2017] - REST in pieces
[drupalday2017] - REST in piecesDrupalDay
 

More from DrupalDay (11)

[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
[drupalday2017] - Cloud e integrazione per la PA: la sfida dell'Open Source t...
 
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
[drupalday2017] - Drupal come frontend che consuma servizi: HTTP Client Manager
 
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
[drupalday2017] - Drupal & Patternlab: un nuovo approccio al theming
 
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
[drupalday2017] - Decoupled frontend con Drupal 8 e OpenUI 5
 
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
[drupalday2017] - Open Data con Drupal nella PA: considerazioni su licensing ...
 
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
[drupalday2017] - DRUPAL per la PA: il modello della Trasparenza di Sapienza
 
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal![drupalday2017] - Venezia & Drupal. Venezia è Drupal!
[drupalday2017] - Venezia & Drupal. Venezia è Drupal!
 
[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizio[drupalday2017] - Quando l’informazione è un servizio
[drupalday2017] - Quando l’informazione è un servizio
 
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
[drupalday2017] - Cosa significa convertire un modulo da D7 a D8
 
[drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance![drupalday2017] - Speed-up your Drupal instance!
[drupalday2017] - Speed-up your Drupal instance!
 
[drupalday2017] - REST in pieces
[drupalday2017] - REST in pieces[drupalday2017] - REST in pieces
[drupalday2017] - REST in pieces
 

DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova

  • 1.
  • 2. DrupalGap Crea una app Android (ed iOS) con Drupal , Drupalgap ed Apache Cordova Lorenzo Monaco m3m3nto@gmail.com
  • 3. DrupalGap ● Inizialmente sviluppato da Tyler Frankenstein all'inizio del 2012. ● Permette di create app Android e iOS totalmente gestite da una installazione Drupal.
  • 4. DrupalGap: architettura Basato su un modulo Drupal che fornisce un wrapper per Drupal Services e da un mobile SDK basato su jQuery Mobile Modulo Drupal: services wrapper Mobile SDK: basato su jQuery Mobile https://www.drupal.org/project/drupalgap https://www.github.com/signalpoint/DrupalGap
  • 5. DrupalGap: come funziona? (1) Cordova/PhoneGap permette la creazione di app per Android e iOS (recentemente anche Windows Phone) basate su HTML5 + CSS3 + JS (es. jQuery Mobile) Cordova mette a disposizione un wrapper javascript per tutte le funzionalità tipiche di un device mobile: fotocamera, bussola digitale, contatti, Gps, filesystem locale, etc. DrupalGap permette quindi di collegare la app al nostro back-end drupal. DrupalGap fornisce una installazione di Drupal di natura headless, che espone una serie di webservice consumati dalla nostra app.
  • 6. DrupalGap: come funziona? (2) rdbms drupal views datasource services + drupalgap mod Restfull webservice http server drupalGap mobile sdkjDrupal jQuery mobile mobile app rest server module
  • 7. DrupalGap e Drupal (1) ● DrupalGap espone una API javascript che eredita tutti i concetti chiave di Drupal Themes Forms Modules Messages Blocks Vews Pages Services Entity Fields
  • 8. DrupalGap e Drupal (2) ● Fornisce integrazione per molti moduli esistenti: http://drupalgap.com/project/modules ● L'api è chiaramente estendibile: http://api.drupalgap.org ● Tra i moduli supportati troviamo: Commerce, Webform, Gmap, Colorbox, AmazonS3 ● Drupal8 fornisce restfull webservice ootb ed è in fase di adattamento il mobile sdk.
  • 9. Installazione ambiente di sviluppo (1) ● Installazione sintetica step by step: https://github.com/m3m3nto/drupalday2015_drupalgap ● Requisiti: – Oracle Java6 – Nodejs – Apache Cordova – Cordova plugin – AndroidSDK – Drupal
  • 10. Installazione ambiente di sviluppo (2) ● Creazione dell'app con Apache Cordova: # cordova create drupaldayapp com.drupalday "DrupalDay App" # cd drupaldayapp # cordova platform add android # cordova plugin add … [v. drupalgap_environment_installation] ● Installazione dei moduli Drupal necessari: # drush dl drupalgap services libraries views_datasource # drush en drupalgap field_ui image list menu number path services views_datasource views_ui locale -y
  • 11. Installazione ambiente di sviluppo (3) ● Download del mobile SDK: https://github.com/signalpoint/DrupalGap # wget https://github.com/signalpoint/DrupalGap/archive/7.x-1.3.tar.gz # tar xzf 7.x-1.3.tar.gz && mv DrupalGap-7.x-1.3/* www/ # rm -rf www/css/ www/img/ www/js/ # cd www/app && cp default.settings.js settings.js ● Impostazione della url/endpoint di Drupal ed impostazione del DrupalGap mode in settings.js: Drupal.settings.site_path = 'http://drupalday.dev'; drupalgap.settings.mode = 'phonegap'; # cp platforms/android/assets/www/cordova.js www/
  • 12. DrupalGap: DrupalDay demo app ● Repository delle slide [slide] ● Istruzioni installazione [drupalgap_install.txt] ● Codice del progetto demo [drupaldayapp] https://github.com/m3m3nto/drupalday2015_drupalgap http://bit.ly/1IAvqkC ● Apk per l'installazione http://drupalday.iotdb.it/sites/default/files/drupaldaydemo.apk
  • 13. DrupalGap API (1) ● Esempio di hook_menu(): function drupalday_menu() { try { var items = {}; items['drupaldaydashboard'] = { title: 'Drupalday 2015', page_callback: 'drupalday_dashboard_page' }; items['gallery'] = { title: 'Gallery', page_callback: 'drupalday_gallery_page', options:{ reloadPage:true } }; return items; } catch (error) { console.log('drupalday_menu - ' + error); } }
  • 14. DrupalGap: API (2) ● page_callback implementation: function drupalday_dashboard_page() { try { var content = {}; content.site_info = { markup: '<h4 style="text-align: center;">' + Drupal.settings.site_path + '</h4>' }; content.welcome = { markup: '<h2 style="text-align: center;">' + t('Benvenuto al DrupalDay') + '</h2>' + '<p style="text-align: center;">' + t('DrupalGap: crea una app Android (ed iOS) con Drupal , Drupalgap ed Apache Cordova') + '</p>' }; if (drupalgap.settings.logo) { content.logo = { markup: '<center>' + theme('image', {path: drupalgap.settings.logo}) + '</center>' }; } content.get_started = { theme: 'button_link', text: t('Guida dev environment'), path: 'https://github.com/m3m3nto/drupalday2015_drupalgap', options: {InAppBrowser: true} }; [...] return content; } catch (error) { console.log('drupalday_dashboard_page - ' + error); } }
  • 15. DrupalGap: API (3) ● Attivazione del modulo in settings.js: // App Front Page drupalgap.settings.front = 'drupalday-dashboard'; Drupal.modules.custom['drupalday'] = {}; ● Build della app android: # cordova run android
  • 16. DrupalGap Cordova API ● Apache Cordova permette di accedere alle funzionalità tipiche dei device mobili: # cordova plugin list [...] "Battery" [...] "Contacts" [...] "Device Motion" [...] "Device Orientation" [...] "Vibration" [...] "Whitelist" [...] "Camera" [...] "Console" [...] "Device" [...] "Notification" [...] "File" [...] "Geolocation" [...] "InAppBrowser" [...] "Network Information"