際際滷

際際滷Share a Scribd company logo
DrupalGap: crea una app Android (ed iOS) con Drupal, Drupalgap ed Apache Cordova
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 (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
DrupalDay
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 & Drupal
DrupalDay
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
DrupalDay
Drupal per la PA
Drupal per la PADrupal per la PA
Drupal per la PA
DrupalDay
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
DrupalDay
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
DrupalDay
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
DrupalDay
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
DrupalDay
[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
DrupalDay
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party
DrupalDay
[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
DrupalDay
[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders
DrupalDay
[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 time
DrupalDay
[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
DrupalDay
[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
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
DrupalDay
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 & Drupal
DrupalDay
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
DrupalDay
Drupal per la PA
Drupal per la PADrupal per la PA
Drupal per la PA
DrupalDay
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
DrupalDay
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
DrupalDay
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
DrupalDay
Your Entity, Your Code
Your Entity, Your CodeYour Entity, Your Code
Your Entity, Your Code
DrupalDay
[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
DrupalDay
[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party[drupalday2017] - Devel - D8 release party
[drupalday2017] - Devel - D8 release party
DrupalDay
[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
DrupalDay
[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders[drupalday2017] - Drupal 4 Stakeholders
[drupalday2017] - Drupal 4 Stakeholders
DrupalDay
[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 time
DrupalDay
[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
DrupalDay
[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

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
sparkfabrik
LinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery MobileLinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery Mobile
Salvatore 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 HTML5
Gabriele 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 peformance
Diego 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 Cordova
Federico 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 HTML
Sinergia Totale
Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)Non Conventional Android Programming (Italiano)
Non Conventional Android Programming (Italiano)
Davide Cerbo
Spring e Flex
Spring e FlexSpring e Flex
Spring e Flex
Marcello Teodori
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-platform
Gabriele Gaggi
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
Lorenzo 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@tulug
Ivan 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 mobili
GoWireless
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
GWTcon
Talks on my machine: Drupal CMS versus The Cool Kids
Talks on my machine: Drupal CMS versus The Cool KidsTalks on my machine: Drupal CMS versus The Cool Kids
Talks on my machine: Drupal CMS versus The Cool Kids
sparkfabrik
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
spawn150
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
dotnetcode
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
sparkfabrik
LinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery MobileLinuxDay2012 - Android, PhoneGap and jQuery Mobile
LinuxDay2012 - Android, PhoneGap and jQuery Mobile
Salvatore 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 HTML5
Gabriele 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 peformance
Diego 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 Cordova
Federico 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 HTML
Sinergia 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-platform
Gabriele Gaggi
Framework per la realizzazione di ria
Framework per la realizzazione di riaFramework per la realizzazione di ria
Framework per la realizzazione di ria
Lorenzo 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@tulug
Ivan 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 mobili
GoWireless
GWT Development for Handheld Devices
GWT Development for Handheld DevicesGWT Development for Handheld Devices
GWT Development for Handheld Devices
GWTcon
Talks on my machine: Drupal CMS versus The Cool Kids
Talks on my machine: Drupal CMS versus The Cool KidsTalks on my machine: Drupal CMS versus The Cool Kids
Talks on my machine: Drupal CMS versus The Cool Kids
sparkfabrik
01 Android - Introduction
01   Android - Introduction01   Android - Introduction
01 Android - Introduction
spawn150
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
dotnetcode

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...
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 Manager
DrupalDay
[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
DrupalDay
[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
DrupalDay
[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 Sapienza
DrupalDay
[drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal!
[drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal![drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal!
[drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal!
DrupalDay
[drupalday2017] - Quando linformazione 竪 un servizio
[drupalday2017] - Quando linformazione 竪 un servizio[drupalday2017] - Quando linformazione 竪 un servizio
[drupalday2017] - Quando linformazione 竪 un servizio
DrupalDay
[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
DrupalDay
[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 pieces
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 Manager
DrupalDay
[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
DrupalDay
[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
DrupalDay
[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 Sapienza
DrupalDay
[drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal!
[drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal![drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal!
[drupalday2017] - Venezia & Drupal. Venezia 竪 Drupal!
DrupalDay
[drupalday2017] - Quando linformazione 竪 un servizio
[drupalday2017] - Quando linformazione 竪 un servizio[drupalday2017] - Quando linformazione 竪 un servizio
[drupalday2017] - Quando linformazione 竪 un servizio
DrupalDay
[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
DrupalDay
[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 pieces
DrupalDay

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

  • 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"