Oracle Apex PDF Viewer
up vote
0
down vote
favorite
i am new in Oracle-Apex. I need Help to show a PDF in Oracle APEX. I have a question: I have uploaded the PDF in to the Database. I save the PDF as a blob in database. After that i showed the name of the PDF in Classic Report.When i click on the name, i want to see the preview of the PDF that i had uploaded.
Now i am searching a way to show the PDF with a Code. Can somebody help?
I need previous and next button.
How can i show this PDF in the Region?here is my Page
oracle pdf oracle-apex
add a comment |
up vote
0
down vote
favorite
i am new in Oracle-Apex. I need Help to show a PDF in Oracle APEX. I have a question: I have uploaded the PDF in to the Database. I save the PDF as a blob in database. After that i showed the name of the PDF in Classic Report.When i click on the name, i want to see the preview of the PDF that i had uploaded.
Now i am searching a way to show the PDF with a Code. Can somebody help?
I need previous and next button.
How can i show this PDF in the Region?here is my Page
oracle pdf oracle-apex
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
i am new in Oracle-Apex. I need Help to show a PDF in Oracle APEX. I have a question: I have uploaded the PDF in to the Database. I save the PDF as a blob in database. After that i showed the name of the PDF in Classic Report.When i click on the name, i want to see the preview of the PDF that i had uploaded.
Now i am searching a way to show the PDF with a Code. Can somebody help?
I need previous and next button.
How can i show this PDF in the Region?here is my Page
oracle pdf oracle-apex
i am new in Oracle-Apex. I need Help to show a PDF in Oracle APEX. I have a question: I have uploaded the PDF in to the Database. I save the PDF as a blob in database. After that i showed the name of the PDF in Classic Report.When i click on the name, i want to see the preview of the PDF that i had uploaded.
Now i am searching a way to show the PDF with a Code. Can somebody help?
I need previous and next button.
How can i show this PDF in the Region?here is my Page
oracle pdf oracle-apex
oracle pdf oracle-apex
edited yesterday
asked Oct 26 at 6:54
canberkcelik
114
114
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
2
down vote
accepted
Here's an example I quickly whipped up using APEX_APPLICATION_TEMP_FILES
. Hopefully it's what you're trying to achieve.
https://apex.oracle.com/pls/apex/f?p=34781
Username: demo
Password: demo
This uses the PDF.js project by Mozilla. Here's a quick recipe of what you may need.
- Create a
File Browse
page item and set the Storage Type toTable APEX_APPLICATION_TEMP_FILES
. - Create a page button to submit the page.
Create a Classic Report region and enter the following query:
select
id
, filename
from apex_application_temp_files
where application_id = :APP_ID
Add a virtual column and set the HTML Expression:
<button type="button" class="btn-preview-pdf" data-id="#ID#">Preview</button>
Create a region and enter the following in the Source:
<canvas id="preview-pane"></canvas>
Create a Click dynamic action.
a. Set the selection Type to
jQuery Selector
.
b. Enter the jQuery Selector
.btn-preview-pdf
.
Add a
Execute JavaScript Code
action with the following JS code (check out the examples from the PDF.js website for more details on what the code does):
var fileId = $(this.triggeringElement).data('id');
var docUrl = 'f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=DOWNLOADPDF:::FILE_ID:' + fileId;
var previewPane = this.affectedElements[0];
// from PDF.js examples
pdfjsLib.getDocument(docUrl).then(function(pdf) {
var pageNumber = 1;
pdf.getPage(pageNumber).then(function(page) {
console.log('Page loaded');
var scale = 1.5;
var viewport = page.getViewport(scale);
// Prepare canvas using PDF page dimensions
var canvas = previewPane;
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Page rendered');
});
})
}, function(reason) {
console.error(reason);
});
For the action, also set the Affected Elements:
a. Selection Type:
jQuery Selector
b. jQuery Selector:
#preview-pane
Follow Joel Kallman's post on creating a link to download a file. You will need an Application Process (
DOWNLOADPDF
) and an Application Item (FILE_ID
) The modified code for the Application ProcessDOWNLOADPDF
looks like this:
begin
for file in (select *
from apex_application_temp_files
where id = :FILE_ID) loop
--
sys.htp.init;
sys.owa_util.mime_header( file.mime_type, FALSE );
sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( file.blob_content));
sys.htp.p('Content-Disposition: attachment; filename="' || file.filename || '"' );
sys.htp.p('Cache-Control: max-age=3600'); -- tell the browser to cache for one hour, adjust as necessary
sys.owa_util.http_header_close;
sys.wpg_docload.download_file( file.blob_content );
apex_application.stop_apex_engine;
end loop;
end;
Almost missed this out. On the Page Attributes, set the JavaScript File URLs to any of the CDNs listed. For example:
//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.550/pdf.min.js
Note that this is a very basic prototype. The preview only allows you to view the first page. You will need to figure out the API and then do the necessary to allow multipage viewing. I'll leave you to figure that out.
That should be it. Let me know if it doesn't work for you.
It's work! Thanks man, You saved my life. How can i change to multipage viewing ?
– canberkcelik
Oct 28 at 11:30
I have updated the demo to show case pagination. It's a crude solution. I will update the post another time with details. Meanwhile, take a look at the new buttons and the JavaScript. As mention, the trick is in the page rendering function and the page number parameter that it takes. It will benefit you to think of how to use this on your own.
– Adrian P
Oct 28 at 22:26
I saw Demo. It's cool. I need only Prev. und next button. Can you send me details? Thanks
– canberkcelik
Oct 29 at 7:39
Can you share the next and previous buttons code please, thank you @Adrian P
– canberkcelik
Nov 15 at 12:12
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
2
down vote
accepted
Here's an example I quickly whipped up using APEX_APPLICATION_TEMP_FILES
. Hopefully it's what you're trying to achieve.
https://apex.oracle.com/pls/apex/f?p=34781
Username: demo
Password: demo
This uses the PDF.js project by Mozilla. Here's a quick recipe of what you may need.
- Create a
File Browse
page item and set the Storage Type toTable APEX_APPLICATION_TEMP_FILES
. - Create a page button to submit the page.
Create a Classic Report region and enter the following query:
select
id
, filename
from apex_application_temp_files
where application_id = :APP_ID
Add a virtual column and set the HTML Expression:
<button type="button" class="btn-preview-pdf" data-id="#ID#">Preview</button>
Create a region and enter the following in the Source:
<canvas id="preview-pane"></canvas>
Create a Click dynamic action.
a. Set the selection Type to
jQuery Selector
.
b. Enter the jQuery Selector
.btn-preview-pdf
.
Add a
Execute JavaScript Code
action with the following JS code (check out the examples from the PDF.js website for more details on what the code does):
var fileId = $(this.triggeringElement).data('id');
var docUrl = 'f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=DOWNLOADPDF:::FILE_ID:' + fileId;
var previewPane = this.affectedElements[0];
// from PDF.js examples
pdfjsLib.getDocument(docUrl).then(function(pdf) {
var pageNumber = 1;
pdf.getPage(pageNumber).then(function(page) {
console.log('Page loaded');
var scale = 1.5;
var viewport = page.getViewport(scale);
// Prepare canvas using PDF page dimensions
var canvas = previewPane;
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Page rendered');
});
})
}, function(reason) {
console.error(reason);
});
For the action, also set the Affected Elements:
a. Selection Type:
jQuery Selector
b. jQuery Selector:
#preview-pane
Follow Joel Kallman's post on creating a link to download a file. You will need an Application Process (
DOWNLOADPDF
) and an Application Item (FILE_ID
) The modified code for the Application ProcessDOWNLOADPDF
looks like this:
begin
for file in (select *
from apex_application_temp_files
where id = :FILE_ID) loop
--
sys.htp.init;
sys.owa_util.mime_header( file.mime_type, FALSE );
sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( file.blob_content));
sys.htp.p('Content-Disposition: attachment; filename="' || file.filename || '"' );
sys.htp.p('Cache-Control: max-age=3600'); -- tell the browser to cache for one hour, adjust as necessary
sys.owa_util.http_header_close;
sys.wpg_docload.download_file( file.blob_content );
apex_application.stop_apex_engine;
end loop;
end;
Almost missed this out. On the Page Attributes, set the JavaScript File URLs to any of the CDNs listed. For example:
//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.550/pdf.min.js
Note that this is a very basic prototype. The preview only allows you to view the first page. You will need to figure out the API and then do the necessary to allow multipage viewing. I'll leave you to figure that out.
That should be it. Let me know if it doesn't work for you.
It's work! Thanks man, You saved my life. How can i change to multipage viewing ?
– canberkcelik
Oct 28 at 11:30
I have updated the demo to show case pagination. It's a crude solution. I will update the post another time with details. Meanwhile, take a look at the new buttons and the JavaScript. As mention, the trick is in the page rendering function and the page number parameter that it takes. It will benefit you to think of how to use this on your own.
– Adrian P
Oct 28 at 22:26
I saw Demo. It's cool. I need only Prev. und next button. Can you send me details? Thanks
– canberkcelik
Oct 29 at 7:39
Can you share the next and previous buttons code please, thank you @Adrian P
– canberkcelik
Nov 15 at 12:12
add a comment |
up vote
2
down vote
accepted
Here's an example I quickly whipped up using APEX_APPLICATION_TEMP_FILES
. Hopefully it's what you're trying to achieve.
https://apex.oracle.com/pls/apex/f?p=34781
Username: demo
Password: demo
This uses the PDF.js project by Mozilla. Here's a quick recipe of what you may need.
- Create a
File Browse
page item and set the Storage Type toTable APEX_APPLICATION_TEMP_FILES
. - Create a page button to submit the page.
Create a Classic Report region and enter the following query:
select
id
, filename
from apex_application_temp_files
where application_id = :APP_ID
Add a virtual column and set the HTML Expression:
<button type="button" class="btn-preview-pdf" data-id="#ID#">Preview</button>
Create a region and enter the following in the Source:
<canvas id="preview-pane"></canvas>
Create a Click dynamic action.
a. Set the selection Type to
jQuery Selector
.
b. Enter the jQuery Selector
.btn-preview-pdf
.
Add a
Execute JavaScript Code
action with the following JS code (check out the examples from the PDF.js website for more details on what the code does):
var fileId = $(this.triggeringElement).data('id');
var docUrl = 'f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=DOWNLOADPDF:::FILE_ID:' + fileId;
var previewPane = this.affectedElements[0];
// from PDF.js examples
pdfjsLib.getDocument(docUrl).then(function(pdf) {
var pageNumber = 1;
pdf.getPage(pageNumber).then(function(page) {
console.log('Page loaded');
var scale = 1.5;
var viewport = page.getViewport(scale);
// Prepare canvas using PDF page dimensions
var canvas = previewPane;
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Page rendered');
});
})
}, function(reason) {
console.error(reason);
});
For the action, also set the Affected Elements:
a. Selection Type:
jQuery Selector
b. jQuery Selector:
#preview-pane
Follow Joel Kallman's post on creating a link to download a file. You will need an Application Process (
DOWNLOADPDF
) and an Application Item (FILE_ID
) The modified code for the Application ProcessDOWNLOADPDF
looks like this:
begin
for file in (select *
from apex_application_temp_files
where id = :FILE_ID) loop
--
sys.htp.init;
sys.owa_util.mime_header( file.mime_type, FALSE );
sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( file.blob_content));
sys.htp.p('Content-Disposition: attachment; filename="' || file.filename || '"' );
sys.htp.p('Cache-Control: max-age=3600'); -- tell the browser to cache for one hour, adjust as necessary
sys.owa_util.http_header_close;
sys.wpg_docload.download_file( file.blob_content );
apex_application.stop_apex_engine;
end loop;
end;
Almost missed this out. On the Page Attributes, set the JavaScript File URLs to any of the CDNs listed. For example:
//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.550/pdf.min.js
Note that this is a very basic prototype. The preview only allows you to view the first page. You will need to figure out the API and then do the necessary to allow multipage viewing. I'll leave you to figure that out.
That should be it. Let me know if it doesn't work for you.
It's work! Thanks man, You saved my life. How can i change to multipage viewing ?
– canberkcelik
Oct 28 at 11:30
I have updated the demo to show case pagination. It's a crude solution. I will update the post another time with details. Meanwhile, take a look at the new buttons and the JavaScript. As mention, the trick is in the page rendering function and the page number parameter that it takes. It will benefit you to think of how to use this on your own.
– Adrian P
Oct 28 at 22:26
I saw Demo. It's cool. I need only Prev. und next button. Can you send me details? Thanks
– canberkcelik
Oct 29 at 7:39
Can you share the next and previous buttons code please, thank you @Adrian P
– canberkcelik
Nov 15 at 12:12
add a comment |
up vote
2
down vote
accepted
up vote
2
down vote
accepted
Here's an example I quickly whipped up using APEX_APPLICATION_TEMP_FILES
. Hopefully it's what you're trying to achieve.
https://apex.oracle.com/pls/apex/f?p=34781
Username: demo
Password: demo
This uses the PDF.js project by Mozilla. Here's a quick recipe of what you may need.
- Create a
File Browse
page item and set the Storage Type toTable APEX_APPLICATION_TEMP_FILES
. - Create a page button to submit the page.
Create a Classic Report region and enter the following query:
select
id
, filename
from apex_application_temp_files
where application_id = :APP_ID
Add a virtual column and set the HTML Expression:
<button type="button" class="btn-preview-pdf" data-id="#ID#">Preview</button>
Create a region and enter the following in the Source:
<canvas id="preview-pane"></canvas>
Create a Click dynamic action.
a. Set the selection Type to
jQuery Selector
.
b. Enter the jQuery Selector
.btn-preview-pdf
.
Add a
Execute JavaScript Code
action with the following JS code (check out the examples from the PDF.js website for more details on what the code does):
var fileId = $(this.triggeringElement).data('id');
var docUrl = 'f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=DOWNLOADPDF:::FILE_ID:' + fileId;
var previewPane = this.affectedElements[0];
// from PDF.js examples
pdfjsLib.getDocument(docUrl).then(function(pdf) {
var pageNumber = 1;
pdf.getPage(pageNumber).then(function(page) {
console.log('Page loaded');
var scale = 1.5;
var viewport = page.getViewport(scale);
// Prepare canvas using PDF page dimensions
var canvas = previewPane;
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Page rendered');
});
})
}, function(reason) {
console.error(reason);
});
For the action, also set the Affected Elements:
a. Selection Type:
jQuery Selector
b. jQuery Selector:
#preview-pane
Follow Joel Kallman's post on creating a link to download a file. You will need an Application Process (
DOWNLOADPDF
) and an Application Item (FILE_ID
) The modified code for the Application ProcessDOWNLOADPDF
looks like this:
begin
for file in (select *
from apex_application_temp_files
where id = :FILE_ID) loop
--
sys.htp.init;
sys.owa_util.mime_header( file.mime_type, FALSE );
sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( file.blob_content));
sys.htp.p('Content-Disposition: attachment; filename="' || file.filename || '"' );
sys.htp.p('Cache-Control: max-age=3600'); -- tell the browser to cache for one hour, adjust as necessary
sys.owa_util.http_header_close;
sys.wpg_docload.download_file( file.blob_content );
apex_application.stop_apex_engine;
end loop;
end;
Almost missed this out. On the Page Attributes, set the JavaScript File URLs to any of the CDNs listed. For example:
//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.550/pdf.min.js
Note that this is a very basic prototype. The preview only allows you to view the first page. You will need to figure out the API and then do the necessary to allow multipage viewing. I'll leave you to figure that out.
That should be it. Let me know if it doesn't work for you.
Here's an example I quickly whipped up using APEX_APPLICATION_TEMP_FILES
. Hopefully it's what you're trying to achieve.
https://apex.oracle.com/pls/apex/f?p=34781
Username: demo
Password: demo
This uses the PDF.js project by Mozilla. Here's a quick recipe of what you may need.
- Create a
File Browse
page item and set the Storage Type toTable APEX_APPLICATION_TEMP_FILES
. - Create a page button to submit the page.
Create a Classic Report region and enter the following query:
select
id
, filename
from apex_application_temp_files
where application_id = :APP_ID
Add a virtual column and set the HTML Expression:
<button type="button" class="btn-preview-pdf" data-id="#ID#">Preview</button>
Create a region and enter the following in the Source:
<canvas id="preview-pane"></canvas>
Create a Click dynamic action.
a. Set the selection Type to
jQuery Selector
.
b. Enter the jQuery Selector
.btn-preview-pdf
.
Add a
Execute JavaScript Code
action with the following JS code (check out the examples from the PDF.js website for more details on what the code does):
var fileId = $(this.triggeringElement).data('id');
var docUrl = 'f?p=&APP_ID.:0:&APP_SESSION.:APPLICATION_PROCESS=DOWNLOADPDF:::FILE_ID:' + fileId;
var previewPane = this.affectedElements[0];
// from PDF.js examples
pdfjsLib.getDocument(docUrl).then(function(pdf) {
var pageNumber = 1;
pdf.getPage(pageNumber).then(function(page) {
console.log('Page loaded');
var scale = 1.5;
var viewport = page.getViewport(scale);
// Prepare canvas using PDF page dimensions
var canvas = previewPane;
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
// Render PDF page into canvas context
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.then(function () {
console.log('Page rendered');
});
})
}, function(reason) {
console.error(reason);
});
For the action, also set the Affected Elements:
a. Selection Type:
jQuery Selector
b. jQuery Selector:
#preview-pane
Follow Joel Kallman's post on creating a link to download a file. You will need an Application Process (
DOWNLOADPDF
) and an Application Item (FILE_ID
) The modified code for the Application ProcessDOWNLOADPDF
looks like this:
begin
for file in (select *
from apex_application_temp_files
where id = :FILE_ID) loop
--
sys.htp.init;
sys.owa_util.mime_header( file.mime_type, FALSE );
sys.htp.p('Content-length: ' || sys.dbms_lob.getlength( file.blob_content));
sys.htp.p('Content-Disposition: attachment; filename="' || file.filename || '"' );
sys.htp.p('Cache-Control: max-age=3600'); -- tell the browser to cache for one hour, adjust as necessary
sys.owa_util.http_header_close;
sys.wpg_docload.download_file( file.blob_content );
apex_application.stop_apex_engine;
end loop;
end;
Almost missed this out. On the Page Attributes, set the JavaScript File URLs to any of the CDNs listed. For example:
//cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.550/pdf.min.js
Note that this is a very basic prototype. The preview only allows you to view the first page. You will need to figure out the API and then do the necessary to allow multipage viewing. I'll leave you to figure that out.
That should be it. Let me know if it doesn't work for you.
edited Oct 27 at 19:11
answered Oct 27 at 18:33
Adrian P
42637
42637
It's work! Thanks man, You saved my life. How can i change to multipage viewing ?
– canberkcelik
Oct 28 at 11:30
I have updated the demo to show case pagination. It's a crude solution. I will update the post another time with details. Meanwhile, take a look at the new buttons and the JavaScript. As mention, the trick is in the page rendering function and the page number parameter that it takes. It will benefit you to think of how to use this on your own.
– Adrian P
Oct 28 at 22:26
I saw Demo. It's cool. I need only Prev. und next button. Can you send me details? Thanks
– canberkcelik
Oct 29 at 7:39
Can you share the next and previous buttons code please, thank you @Adrian P
– canberkcelik
Nov 15 at 12:12
add a comment |
It's work! Thanks man, You saved my life. How can i change to multipage viewing ?
– canberkcelik
Oct 28 at 11:30
I have updated the demo to show case pagination. It's a crude solution. I will update the post another time with details. Meanwhile, take a look at the new buttons and the JavaScript. As mention, the trick is in the page rendering function and the page number parameter that it takes. It will benefit you to think of how to use this on your own.
– Adrian P
Oct 28 at 22:26
I saw Demo. It's cool. I need only Prev. und next button. Can you send me details? Thanks
– canberkcelik
Oct 29 at 7:39
Can you share the next and previous buttons code please, thank you @Adrian P
– canberkcelik
Nov 15 at 12:12
It's work! Thanks man, You saved my life. How can i change to multipage viewing ?
– canberkcelik
Oct 28 at 11:30
It's work! Thanks man, You saved my life. How can i change to multipage viewing ?
– canberkcelik
Oct 28 at 11:30
I have updated the demo to show case pagination. It's a crude solution. I will update the post another time with details. Meanwhile, take a look at the new buttons and the JavaScript. As mention, the trick is in the page rendering function and the page number parameter that it takes. It will benefit you to think of how to use this on your own.
– Adrian P
Oct 28 at 22:26
I have updated the demo to show case pagination. It's a crude solution. I will update the post another time with details. Meanwhile, take a look at the new buttons and the JavaScript. As mention, the trick is in the page rendering function and the page number parameter that it takes. It will benefit you to think of how to use this on your own.
– Adrian P
Oct 28 at 22:26
I saw Demo. It's cool. I need only Prev. und next button. Can you send me details? Thanks
– canberkcelik
Oct 29 at 7:39
I saw Demo. It's cool. I need only Prev. und next button. Can you send me details? Thanks
– canberkcelik
Oct 29 at 7:39
Can you share the next and previous buttons code please, thank you @Adrian P
– canberkcelik
Nov 15 at 12:12
Can you share the next and previous buttons code please, thank you @Adrian P
– canberkcelik
Nov 15 at 12:12
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53003083%2foracle-apex-pdf-viewer%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown