oracle application express as add-on for google apps

35
Oracle Application Express as add-on for Google Apps with Twitter Bootstrap 1

Upload: sergei-martens

Post on 10-May-2015

1.329 views

Category:

Technology


0 download

DESCRIPTION

Building a Google Apps application in APEX

TRANSCRIPT

Page 1: Oracle Application Express as add-on for Google Apps

1

Oracle Application Express as add-on for Google Apps

with Twitter Bootstrap

Page 2: Oracle Application Express as add-on for Google Apps

2

Agenda

19:00 Who is…? 19:05 Introduction Google Apps19:10 Business case & demo Gbilling19:25 Introduction to Twitter Bootstrap19:40 Some examples how to integrate TB in Apex 19:55 Mini-break20:05 More examples how to integrate TB in Apex 20:15 Working with Google authentication (oauth 2.0)20:35 Google API’s20:50 Announcement20:55 Quiz

Page 3: Oracle Application Express as add-on for Google Apps

3

Who is smart4apex?!

• Just some geeks passionate about Apex, having fun together

• Sharing experience and knowledge• Explore new techniques and opportunities• Building state of the art (Apex) solutions for our

customers

Page 4: Oracle Application Express as add-on for Google Apps

4

Who is smart4apex?!

• Company 2.0; – Co-operation of professionals

• Guild– Rules about work-ethics– Minimum experience

• Masters– Commission of entrance– Commission of dispute– Form the corporation

• Friends

WWW.APEX.NL

Page 5: Oracle Application Express as add-on for Google Apps

5

Who are we?

Sergei Martens• Oracle developer from 1998• OCP in 1999• Database version 7 • Started as classic developer

(Forms & Designer)• Now Apex developer• Speaker Dutch Apex congress

2012 (Ext JS) & 2013 (mobile)

Page 6: Oracle Application Express as add-on for Google Apps

6

Warning

During this presentation we will bring the user interface of our Apex application “to the next level”.To make this happen we make use of HTML, CSS and JavaScript.This is inevitable for creating a modern user interface.

Page 7: Oracle Application Express as add-on for Google Apps

7

Google Apps

Page 8: Oracle Application Express as add-on for Google Apps

8

Google Apps marketplace

IS NOT APP STORE!!

(GOOGLE PLAY)

Page 9: Oracle Application Express as add-on for Google Apps

9

Business Case

1. Specialist in information management 2. Interested in the opportunities of cloud technology and the use of it

in a business environment.

TaskBased on the appointments in our Google Calendars, we want to:

1. automatically generate invoices2. send the invoices digitally (email) to our customers

Next we want to keep track of payments, etc.

Page 10: Oracle Application Express as add-on for Google Apps

10

Architecture

Domain & user

information

Drive

Calendar

Jasper reports server

Gbilling

Accounts & projects

Invoicing

Local data

Google Apps

Goo

gle

API

Page 11: Oracle Application Express as add-on for Google Apps

11

Data structure

Users

Users-sessions

Companies

Projects

Clients

Invoices

Invoice itemsAgenda items

Page 12: Oracle Application Express as add-on for Google Apps

12

Demo Gbilling

Demo

Page 13: Oracle Application Express as add-on for Google Apps

13

Subjects on user interface

Commercial environmentShorter lifetime of software

Trends

Less = more

Reference of users

Bigger = better

HTML5 + CSS3AJAX

Page 14: Oracle Application Express as add-on for Google Apps

14

Trends

• Simple design• Just a few items• Large items• Dynamic regions• Info graphics• Dashboards• Long pages

• Complex design• Many items• Small items• Tabs / Report -> Detail• Text• Reports / tables• Short pages

Page 15: Oracle Application Express as add-on for Google Apps

15

wrong user interface

Page 16: Oracle Application Express as add-on for Google Apps

16

Example

Page 17: Oracle Application Express as add-on for Google Apps

17

Introduction Twitter Bootstrap

Page 18: Oracle Application Express as add-on for Google Apps

18

Bootstrap in a nutshell

Wikipedia1. Bootstrap is a free collection of tools for creating websites and

web applications. 2. It has been the most popular project in GitHub and has been used

by NASA and MSNBC among others.3. Bootstrap was developed by Mark Otto and Jacob Thornton at

Twitter as a framework to encourage consistency across internal tools

4. Since version 2.0 it also supports responsive design

Page 19: Oracle Application Express as add-on for Google Apps

19

Bootstrap examples I - template

<!DOCTYPE html>

<html>

<head>

<title>Bootstrap Template</title>

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<!-- Bootstrap -->

<link href="/css/bootstrap.min.css" rel="stylesheet" media="screen">

</head>

<body>

<h1>Hello, world!</h1>

<script src="/js/jquery.js"></script>

<script src="/js/bootstrap.min.js"></script>

</body>

</html>

Page 20: Oracle Application Express as add-on for Google Apps

20

Bootstrap examples I - grid

• 12 column layout• 940px width• Works with CSS-classes:• row; like <tr> in html-table• span#; width of the column• offset#; move # columns to the right• fluid; uses percentages in stead of fixed width• container; centre on page

Page 21: Oracle Application Express as add-on for Google Apps

21

Bootstrap examples II - Icons

• Icons available through classes<i class="icon-search"></i>

• 140 icons available (glyphicons) – from “icon-glass” to “icon-fullscreen”

• Alternative: font-awesome– http://fortawesome.github.io/Font-Awesome/icons/– 361 icons– Compatible with the TB glyphicons– Sizeable (they use a font instead of an image)

• CSS adjustable (colour, underline, alignment etc.)<i class="icon-search"></i>

Page 22: Oracle Application Express as add-on for Google Apps

22

Who are we?

Richard Martens• Oracle since 12 years (Oracle 8i)– Large Multilingual websites– RAD applications

• Core Technologies– Oracle PL/SQL– Oracle Apex– HTML5, CSS3, JavaScript, XML, XSLT

• Other technologies– PHP, ASP(.net)– Windows and Linux server platform

• RIMA on Oracle Forums

Page 23: Oracle Application Express as add-on for Google Apps

23

Bootstrap examples II – Modal

• Modal– Built-in dialog (popup)– Usage• First create the modal.– Container div» modal-header» modal-body » modal-footer

• To open modal– Through data attributes» <button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

– Through JavaScript» $('#myModal').modal('show');

• Modal implemented as a region template.• Opening of modal through data-attributes on a button– Sometimes JavaScript is used for specific reasons.

<div id="myModal" class="modal hide fade" tabindex="-1“ role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal“ aria-hidden="true">×</button> <h3 id="myModalLabel">Modal header</h3> </div> <div class="modal-body"> <p>One fine body…</p> </div> <div class="modal-footer"> <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> <button class="btn btn-primary">Save changes</button> </div></div>

Page 24: Oracle Application Express as add-on for Google Apps

24

Bootstrap examples II – Date-picker

• Date-picker• Using Bootstrap plugin (http://www.eyecon.ro/bootstrap-datepicker/)

• Combination of text-item and button• Usage– Create input element of type text and ad the “date-picker”

class– Page template will transform all these elements using

jQuery and CSS

<div class="input-append"> <input type="text" class="text_field input-medium date-picker" value="20-08-2013"> <button class="btn icon-calendar btn-date-picker" type="button"></button></div>

Page 25: Oracle Application Express as add-on for Google Apps

25

Bootstrap examples II – Parsley

• Is not a part of bootstrap– http://parsleyjs.org/

• JavaScript library for client side form validation• Allows element as well as form validation• Element validation implemented in the S4A Bootstrap theme– without using plugins– Available for all page templates– By use of element attributes: • parsley=“blur”• parsley=“false”

– Further attributes according to parsley docs

• required = “required”• data-notblank = “true”• data-minlength = “6”• data-maxlength = “8”• data-type=“email”

(“url”, “digits”, “number”, “date-iso”)

Page 26: Oracle Application Express as add-on for Google Apps

26

Bootstrap examples II – Parsley

– Template JavaScript to position the error message correctly for Bootstrap

<div class="control-group error"> <label class="control-label“ for="inputError"> Input with error</label> <div class="controls"> <input type="text" id="inputError"> <span class="help-inline"> Please correct the error</span> </div></div>

Page 27: Oracle Application Express as add-on for Google Apps

27

Google API – Authentication

Server Application

Google oauth2server

Google API endpoint

Token request

Code

API call with token

API response (json, xml)

User login and consent

Exchange code for token

Token

Step 1

Step 2

Step 3

Page 28: Oracle Application Express as add-on for Google Apps

28

Google API – Authentication I

• Utilizes package and tables on database– Table contains session information

• Page 101 (standard login page)– Remove token from table for “this” session– Start procedure• Procedure redirects to:

https://accounts.google.com/o/oauth2/

• Google takes over:– Shows login information (shows the grants that the app is requesting)– User clicks okay– Google redirects to the URL specified in API console (which is page 102)

Server Application

Google oauth2server

Token request

Code

User login and consent

Page 29: Oracle Application Express as add-on for Google Apps

29

Google API – Authentication II

• Page 102 (copied from 101)– Contains item to store

query string– Dynamic action to process query string• Copy query string into item (using JavaScript)• Start procedure (using pl/sql block)– Request token– Do first API call to:» Get user info (id, email, name)

– Return user info– Put user-info into application items

• Submit the page

– Login process• Prepare redirect (start or settings) (new user needs to set certain settings)• Set session language• Start standard apex login procedure

– User is redirected to start-screen or settings-page

Server Application Google oauth2server

Exchange code for token

Code

Page 30: Oracle Application Express as add-on for Google Apps

30

Google API – making a request• Three options:– Using apex built-in restful client• Advantages:– Easy to implement– Results go in a apex-collection

• Disadvantages– Limited use from PL/SQL– Limited debugging possibilities

– Making your own request in PL/SQL

• Advantages– Full debugging possibilities– Full access from PL/SQL

• Disadvantages– More difficult to implement

– Using apex_web_service package (not covered)

• Advantages – like making own request– Easier to implement than own request,

more difficult than restful client• Disadvantages– Less control than own request

– Greatest lack in oracle apex is built in JSON parsing / extracting

Page 31: Oracle Application Express as add-on for Google Apps

31

Google API – the built-in restful client

• Create web-service reference in “Shared Components”

• Create process, report or form utilising the reference– Process: store result in collection or items– Report: will run on a temp collection– Form: allows to post data

Page 32: Oracle Application Express as add-on for Google Apps

32

Google API – making your own request

• Relies on procedures and functions (within packages)• Gives full freedom in what to do• You must take errors into account• A request consists of:– URL (the question asked, aka: “endpoint”)– Header (for setting security and other parameters)• Authorization: Bearer {token}• Content-Length: {length_of_body}

– Body (sometimes optional, used for POST, PUT and PATCH requests, contains the content sent)• Can contain json, xml or other structures, depending on webservice

Page 33: Oracle Application Express as add-on for Google Apps

33

Google API - getUserInfo

• RESTful webservice• Response in json format• Endpoint:

https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token={token}

• Response is json:{ "id": "111253075910917653317" , "email": [email protected] , "verified_email": true , "name": "Richard Martens" , "given_name": "Richard" , "family_name": "Martens" , "link": https://plus.google.com/111253075910917653317 , "picture": https://lh6.googleusercontent.com/-Dz..NM/photo.jpg , "gender": "male" , "locale": "nl" , "hd": "smart4apex.nl" }

Page 34: Oracle Application Express as add-on for Google Apps

34

Announcement