From 3907d5e53350a79db8478f1a4c07bd6ae80862fd Mon Sep 17 00:00:00 2001 From: jahoti Date: Sun, 5 Sep 2021 00:00:00 +0000 Subject: Add Google Forms Fix Add an incomplete fix for Google Forms (currently going back is inconvenient) --- content/pgoogle_forms/index.json | 5 ++++ content/sgoogle_forms/gforms.js | 64 ++++++++++++++++++++++++++++++++++++++++ content/sgoogle_forms/index.json | 6 ++++ 3 files changed, 75 insertions(+) create mode 100644 content/pgoogle_forms/index.json create mode 100644 content/sgoogle_forms/gforms.js create mode 100644 content/sgoogle_forms/index.json diff --git a/content/pgoogle_forms/index.json b/content/pgoogle_forms/index.json new file mode 100644 index 0000000..810db5b --- /dev/null +++ b/content/pgoogle_forms/index.json @@ -0,0 +1,5 @@ +{ +"type" : "page", +"pattern" : "https://docs.google.com/forms/d/e/**", +"payload" : ["script", "Google Forms Fix"] +} diff --git a/content/sgoogle_forms/gforms.js b/content/sgoogle_forms/gforms.js new file mode 100644 index 0000000..1c7417a --- /dev/null +++ b/content/sgoogle_forms/gforms.js @@ -0,0 +1,64 @@ +/* + (Incomplete) Fix for Google Forms + + Copyright © 2021 jahoti (jahoti@tilde.team) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +var form = document.forms[0]; +for (let div of form.querySelectorAll('div[data-params]')) { + var data = JSON.parse('[' + div.dataset.params.substring(4)); + var name = 'entry.' + data[0][4][0][0]; + var input = div.querySelector('input'); + + if (input.name === name + '_sentinel') { // Radio + for (input of div.querySelectorAll('.appsMaterialWizToggleRadiogroupElContainer')) { + div = document.createElement('input'); + div.type = 'radio'; + div.name = name; + div.value = input.nextElementSibling.innerText.trim(); + input.parentNode.replaceChild(div, input); + } + } else { + input.removeAttribute('disabled'); + input.name = name; + } +} + +for (div of document.querySelectorAll('.quantumWizTextinputPaperinputPlaceholder')) + div.remove(); + +function goToNext() +{ + var next = document.createElement('input'); + next.type = 'hidden'; + next.name = 'continue'; + next.value = '1'; + form.appendChild(next); + form.submit(); +} + +for (div of document.querySelectorAll('.freebirdFormviewerViewNavigationNoSubmitButton')) { + input = document.createElement('button'); + + data = div.innerText.trim(); + input.innerText = data; + if (data.toLowerCase() === 'next') + input.onclick = goToNext; + else if (data.toLowerCase() === 'submit') + input.type = 'submit'; + div.parentNode.replaceChild(input, div); +} + +// TODO: back, instate previous entries diff --git a/content/sgoogle_forms/index.json b/content/sgoogle_forms/index.json new file mode 100644 index 0000000..b86d8f1 --- /dev/null +++ b/content/sgoogle_forms/index.json @@ -0,0 +1,6 @@ +{ +"type" : "script", +"name" : "Google Forms Fix", +"sha256" : "e0892e24a4253a5f6694de5ab54e764e5e4f92deffd757d248bf796d2e2898ba", +"location" : "gforms.js" +} -- cgit v1.2.3