This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Jun 6, 2023. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

wordpress-firebase-form

Wordpress plugins that enables you to create web form, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Description

  • Create realtime contest with WordPress plugin, Google Firebase[realtime database, Firebase functions, firebase storage], AWS [IAM, API Gateway, LAMBDA, Elastic Search]
  • To use this plugin you will have to open account on Google to use Google products and on AWS to use Amazon services as mentioned above.
  • Also you will have to install Firebase CLI to deploy Firebase Function on Firebase.
  • On Google firebase side will need to have premium account as to call third party API's it is must.
  • For Firebase Functions can refer to: https://firebase.google.com/docs/functions/get-started

Configuration need to configure in init_firebase.php file

  • Please change or initiate firebase application by configuring below mentioned parameters in \firebase-forms\lib\init_firebase.php

$apikey = "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; $authdomain = "XXX-XX-XXXXX.firebaseapp.com"; $dburl = "https://XXX-XX-XXXXX.firebaseio.com"; $projecturl = "XXX-XX-XXXXX"; $bucket = "XXX-XX-XXXXX.appspot.com"; $senderid = "XXXXXXXXXXXX";

  • DEFAULT_TOKEN: You can get it from firebase console > project > project settings > Service accounts > Database secrets
  • FIREBASE_ES_API: This constant will hold URL of aws API which will post data to ES server with aws LAMDA function
  • FIREBASE_AWS_API_SECRET: This constant will hold secret key to authenticate call with aws API
  • Refer to https://firebase.google.com/docs/web/setup for more information about setup application on google firebase.

Installation & Setup for PHP REST API

  1. firebaseInterface.php
  2. firebaseLib.php
  3. firebaseStub.php
  • Copy them in /firebase-forms/lib folder
  • We are using this API to approve and reject contest entries from admin side.
  • To deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software please go through Licence section of API first.

Used Technologies

  1. Google Firebase: Realtime Database, Firebase Functions, Firebase Storage
  2. AWS: IAM role, API Gateway, LAMBDA, Elastic Search

Create Contest Page

  • After activating plugin add below code in page content, you can modify it if you want:
<div style="width: 100%;"><div style="width: 30%; float: left; margin-right: 10px;">[bootstrap_sidebar_navigation]</div><div class="container" style="width: 60%; float: left;">[firebase_form_shortcode]</div><div style="clear: both;"></div></div>

[bootstrap_sidebar_navigation] : Shortcode for sidebar navigation [firebase_form_shortcode] : Shortcode for contest forms [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] : Shortcode to show participated users, where contest is ID of contest which you can get from admin

Required Plugin

  • We have created another plugin "bootstrap-sidebar-navigation" to show sidebar with links to diffrent pages of site
  • To add or modify existing navigation you need to do changes in /view/navigation.php
  • Note: We used javascript function to call another page which is boot_loadPage() eq. javascript:boot_loadPage(3, 2) - where 3 is page id and 2 header id which we have added in firebase forms plugin
  • Also need to keep ID of "" element in specific format: "nav_lnk{pageid}{headerid}" eq: Fathers Day Contest

Customize Plugin Firbase Forms plugin

  • If you want to add new form or page you have to add two files 1. form-{id}.php eq. form-2.php in folder /view/ 2. form-{id}.js eq. form-2.js in folder /js/ 3. Similar to form you can add new header with file name headerlinks-{id}.php, eq. headerlinks-2.php 4. For your referance we have added few forms which you can refer to add new
  • On admin side, we have added page using which you can add new contest and see all participated users.
  • For added sample contests we have considered
    • If you want to customize Select Tag dropdown using select2 lib to implement multiple select drop down you need to follow two points below with some changes in form.js and form html
  1. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.js file then paste it in WordPress-Plugins/firebase-forms/js folder
  2. Go to https://github.com/select2/select2/blob/master/LICENSE.md, find and download select2.min.css file then paste it in WordPress-Plugins/firebase-forms/css folder

Workflow

  1. Add contest from admin, once you add contest you will get contest id which you need to configure in js file of form
  2. When user submit form data will get stored to firebase node.
  3. Once data write on firebase node firebase function will get trigger which will post same data to API gateway which will post it to Elastic Search
  4. After post data to Elastic search firebase function will copy data to main node and delete it from temporary node
  5. On frontend side, shortcode [firebase_contest_shortcode contest="-LHITRFgQimv9k6UzbYn"] will fetch all participant data from elastic search and show on site
  6. Note. If you want to change fields need to make changes in form javascript file, Firebase function code and LAMBDA function code

Firebase Database Structure

Node: - wp_fb_admin : Add admin users - wp_fb_contests : This node will include contest data like createdate and name - wp_fb_images : This node will include image info like description, status, createdate and URL - wp_fb_tokens : This node will include user device token which will be used as user login token - wp_fb_users : This node will include user related data like address, name and createdate

License

The MIT License (MIT)
Copyright (c) 2018 Christian Lai Yit Ming
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

About

Wordpress plugins that enables you to create web forms, that stores information in Firebase RealTime Database after user login thru FirebaseUI. It will then trigger Firebase Functions, to submit information to AWS Elastic Search thru AWS API Gateway and AWS Lambda.

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages