Added licenses to Excel Password Remover, Filed file input on standalone, Added auto-clear to file input

Update excel-password-remover.yml, excel-password-remover.yml, and 3 more files...
This commit is contained in:
2025-09-14 02:12:04 +02:00
parent 1f249206e7
commit 8c51b2b8b3
5 changed files with 136 additions and 120 deletions

View File

@@ -1,58 +1,43 @@
# EN - Excel Password Remover # EN - Excel Password Remover
meta.title: Excel Password Remover meta:
meta.description: >- title: Excel Password Remover
Small web application from which you can easily remove a password from an Excel description: >-
worksheet. It works by leaving the task of editing the XML files on an Excel Small web application from which you can easily remove a password from an Excel
document to your browser instead to keep everything local. worksheet. It works by leaving the task of editing the XML files on an Excel
meta.description.light: >- document to your browser instead to keep everything local.
Small web application from which you can easily remove a password from an Excel description.light: >-
worksheet directly in your browser. Small web application from which you can easily remove a password from an Excel
worksheet directly in your browser.
#article.subtitle: >- eula:
# <a 1: "This tool should only be used with files you have the express permission to unlock."
# href="https://github.com/aziascreations/Excel-Worksheet-Password-Remover"><i 2: "All password removal is done locally in your browser, and <span class='t-bold'>no data is sent online</span>.<br>
# class="fab fa-github"></i> View on GitHub</a>
#intro.title: Introduction
#intro.p1: >-
# This project aims to simplify the removal of passwords on Excel's Worksheet by
# leaving the task of editing the XML files on an Excel document to your
# browser.
#working.title: Security & Internal workings
#working.p1: >-
# In terms of security, your browser handles all the data without sending any of
# it to a central server like many web apps do.<br>This makes it, and your data,
# as safe as your browser can be since it is the only potential point of failure
# here.
#working.p2: >-
# As for the internal workings, the only thing this tool does is extract the
# content of the <code>.xlsx</code> file you gave it and removes the passwords
# on any worksheets and makes a new file with all the changes.<br>Once all of
# that is done, the file is downloaded via a <a
# href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URLs">data
# URL</a>.
#usage.title: Usage
#usage.p1: >-
# To use this tool you can either visit "<a
# href="https://aziascreations.github.io/Excel-Worksheet-Password-Remover">aziascreations.github.io/Excel-Worksheet-Password-Remover</a>"
# or download the repository and host the web page yourself.
#demo.title: Demonstration video
#links.title: Links
#content.link.demo: Demo hosted on GitHub
eula.1: "This tool should only be used with files you have the express permission to unlock."
eula.2: "All password removal is done locally in your browser, and <span class='t-bold'>no data is sent online</span>.<br>
The original password cannot be revealed as its secure by design and not stored in plain text; it simply gets removed." The original password cannot be revealed as its secure by design and not stored in plain text; it simply gets removed."
eula.3: "By using this tool, you accept full responsibility, and that it is provided “as is” without any warranty." 3: "By using this tool, you accept full responsibility, and that it is provided “as is” without any warranty."
file.selection.title: "File Selection" file:
file.selection.1: "Drop your excel file(s) here or click on the buttons." selection:
title: "File Selection"
1: "Drop your excel file(s) here or click on the buttons."
details.title : "Result(s)" details:
details.empty.1 : "Your Excel files with their password removed will end up here." title : "Result(s)"
empty:
1 : "Your Excel files with their password removed will end up here."
result.success.count: "Removed <span id=\"tmpl-success-password-count\">???</span> password(s)" result:
result.warning.extension: "The file doesn't appear to be an Excel Worksheet !" success:
result.warning.password: "The Excel Worksheet didn't contain any password !" count: "Removed <span id=\"tmpl-success-password-count\">???</span> password(s)"
result.error.jszip: "JSZip was unable to open the file !" warning:
extension: "The file doesn't appear to be an Excel Worksheet !"
password: "The Excel Worksheet didn't contain any password !"
error:
jszip: "JSZip was unable to open the file !"
license:
title: "Licenses"
text:
1: "This tool uses the <a href=\"https://stuk.github.io/jszip/\">JSZip</a>
library, which is licensed under the <a href=\"https://github.com/Stuk/jszip/blob/main/LICENSE.markdown\">MIT license</a>."
2: "The rest of this tool's code is released in the <a href=\"https://github.com/aziascreations/Web-NibblePoker\">public domain</a>."

View File

@@ -1,53 +1,44 @@
# FR - Excel Password Remover # FR - Excel Password Remover
meta.title: Excel Password Remover meta:
meta.description: >- title: Excel Password Remover
Petite application web qui permet de facilement retirer le mot de passe d'une description: >-
feuille de calcul Excel depuis votre navigateur web sans avoir à uploader le Petite application web qui permet de facilement retirer le mot de passe d'une
fichier sur internet. Cette application laisse votre navigateur modifier les feuille de calcul Excel depuis votre navigateur web sans avoir à uploader le
fichiers XML du fichier Excel afin de tout garder en local. fichier sur internet. Cette application laisse votre navigateur modifier les
meta.description.light: >- fichiers XML du fichier Excel afin de tout garder en local.
Application web qui permet de facilement retirer le mot de passe d'un ficher Excel depuis description.light: >-
votre navigateur web sans avoir à uploader le fichier sur internet. Application web qui permet de facilement retirer le mot de passe d'un ficher Excel depuis
votre navigateur web sans avoir à uploader le fichier sur internet.
#article.subtitle: >- eula:
# <a 1: "Cet outil ne doit être utilisé qu'avec des fichiers pour lesquels vous avez l'autorisation de les déverrouiller."
# href="https://github.com/aziascreations/Excel-Worksheet-Password-Remover"><i 2: "Toute suppression de mot de passe se fait localement dans votre navigateur, et <span class='t-bold'>aucune donnée n'est envoyée via Internet</span>.<br>
# class="fab fa-github"></i> Voir sur GitHub</a>
#intro.title: Introduction
#intro.p1: >-
# Ce projet vise à simplifier le processus de suppression des mots de passes sur
# les "worksheet" d'Excel en laissant votre navigateur web s'en charger.
#working.title: Sécurité & Fonctionnement
#working.p1: >-
# Cet outil charge le ficher que vous lui donnez en mémoire et travaille
# directement dessus dans le navigateur web sans utiliser un serveur central,
# vos données restent donc entièrement sur votre machine.
#working.p2: >-
# Par sécurité, nous vous demandons quand même de n'utiliser cet outil qu'avec
# des fichiers pour lesquels vous avez été explicitement autorisés à enlever le
# mot de passe.
#usage.title: Utilisation
#usage.p1: >-
# Vous pouvez utiliser cet outil en allant sur "<a
# href="https://aziascreations.github.io/Excel-Worksheet-Password-Remover">aziascreations.github.io/Excel-Worksheet-Password-Remover</a>"
# ou en téléchargeant le dépôt et en hébergeant la page web vous-même.
#demo.title: Vidéo de démonstration
#links.title: Liens
#content.link.demo: Démo hébergée sur GitHub
eula.1 : "Cet outil ne doit être utilisé qu'avec des fichiers pour lesquels vous avez l'autorisation de les déverrouiller."
eula.2 : "Toute suppression de mot de passe se fait localement dans votre navigateur, et <span class='t-bold'>aucune donnée n'est envoyée via Internet</span>.<br>
Le mot de passe original ne peut pas être révélé car il est sécurisé par Excel et n'est pas stocké en texte clair ; il est simplement supprimé." Le mot de passe original ne peut pas être révélé car il est sécurisé par Excel et n'est pas stocké en texte clair ; il est simplement supprimé."
eula.3 : "En utilisant cet outil, vous acceptez l'entière responsabilité de vos action, et le fait qu'il est fourni “tel quel” sans aucune garantie." 3: "En utilisant cet outil, vous acceptez l'entière responsabilité de vos action, et le fait qu'il est fourni “tel quel” sans aucune garantie."
file.selection.title : "Sélection de fichier(s)" file:
file.selection.1 : "Déposez vos fichiers Excel ici ou cliquez sur les boutons." selection:
title: "Sélection de fichier(s)"
1: "Déposez vos fichiers Excel ici ou cliquez sur les boutons."
details.title: "Résultat(s)" details:
details.empty.1 : "Vos fichiers Excel sans leurs mots de passe finiront ici." title: "Résultat(s)"
empty:
1: "Vos fichiers Excel sans leurs mots de passe finiront ici."
result.success.count: "Mot de passe(s) supprimé(s) : <span id=\"tmpl-success-password-count\">???</span>" result:
result.warning.extension: "Le fichier ne semble pas être une feuille de calcul Excel !" success:
result.warning.password: "La feuille de calcul Excel ne contenait aucun mot de passe !" count: "Mot de passe(s) supprimé(s) : <span id=\"tmpl-success-password-count\">???</span>"
result.error.jszip: "JSZip n'a pas pu ouvrir le fichier !" warning:
extension: "Le fichier ne semble pas être une feuille de calcul Excel !"
password: "La feuille de calcul Excel ne contenait aucun mot de passe !"
error:
jszip: "JSZip n'a pas pu ouvrir le fichier !"
license:
title: "Licences"
text:
1: "Cet outil utilise la bibliothèque <a href=\"https://stuk.github.io/jszip/\">JSZip</a>,
qui est distribuée sous licence <a href=\"https://github.com/Stuk/jszip/blob/main/LICENSE.markdown\">MIT</a>."
2: "Le reste du code de cet outil est placé dans le <a href=\"https://github.com/aziascreations/Web-NibblePoker\">domaine public</a>."

View File

@@ -48,7 +48,6 @@ export function initCore() {
// Setting up the file drop inputs // Setting up the file drop inputs
document.querySelectorAll(".np-file-input-drop-container").forEach(eRootContainer => { document.querySelectorAll(".np-file-input-drop-container").forEach(eRootContainer => {
//console.log(eRootContainer);
/** @type {HTMLInputElement} */ /** @type {HTMLInputElement} */
const eFileDropInput = eRootContainer.querySelector("input[type=file]"); const eFileDropInput = eRootContainer.querySelector("input[type=file]");
@@ -58,7 +57,6 @@ export function initCore() {
/** @type {string} */ /** @type {string} */
const inputId = eFileDropInput.getAttribute("id"); const inputId = eFileDropInput.getAttribute("id");
//console.log(inputId);
/** @type {HTMLElement} */ /** @type {HTMLElement} */
const eFileDropTextEmpty = eRootContainer.querySelector(`#${inputId}-text-drop`); const eFileDropTextEmpty = eRootContainer.querySelector(`#${inputId}-text-drop`);
@@ -78,24 +76,29 @@ export function initCore() {
/** @type {NodeListOf<HTMLElement>} */ /** @type {NodeListOf<HTMLElement>} */
const eFileDropSelectionCounts = eRootContainer.querySelectorAll(`.np-file-drop-count`); const eFileDropSelectionCounts = eRootContainer.querySelectorAll(`.np-file-drop-count`);
function handleFileDropClear() {
eFileDropInput.value = '';
if(eFileDropTextSingle !== null) {
eFileDropTextSingle.hidden = true;
}
if(eFileDropTextMultiple !== null) {
eFileDropTextMultiple.hidden = true;
}
if(eFileDropTextEmpty !== null) {
eFileDropTextEmpty.hidden = false;
}
}
if(eFileDropAddButton !== null) { if(eFileDropAddButton !== null) {
eFileDropAddButton.addEventListener("click", function() { eFileDropAddButton.addEventListener("click", function() {
handleFileDropClear();
eFileDropInput.click(); eFileDropInput.click();
}); });
} }
if(eFileDropClearButton !== null) { if(eFileDropClearButton !== null) {
eFileDropClearButton.addEventListener("click", function() { eFileDropClearButton.addEventListener("click", function() {
eFileDropInput.value = ''; handleFileDropClear();
if(eFileDropTextSingle !== null) {
eFileDropTextSingle.hidden = true;
}
if(eFileDropTextMultiple !== null) {
eFileDropTextMultiple.hidden = true;
}
if(eFileDropTextEmpty !== null) {
eFileDropTextEmpty.hidden = false;
}
}); });
} }

View File

@@ -27,14 +27,23 @@
</div> </div>
<div id="{{ applet_data.id }}-details-populated" hidden> <div id="{{ applet_data.id }}-details-populated" hidden>
{{ render_button( {% if is_standalone %}
{{ render_button(
l10n("download.action.all", "commons", user_lang),
false, applet_data.id + "-files-download-all", "bkgd-green") }}
{{ render_button(
l10n("clear.all.files", "commons", user_lang),
false, applet_data.id + "-files-clear", "bkgd-orange") }}
{% else %}
{{ render_button(
"<i class=\"fa-duotone fa-solid fa-floppy-disks mr-xs\"></i>" + "<i class=\"fa-duotone fa-solid fa-floppy-disks mr-xs\"></i>" +
l10n("download.action.all", "commons", user_lang), l10n("download.action.all", "commons", user_lang),
false, applet_data.id + "-files-download-all", "bkgd-green") }} false, applet_data.id + "-files-download-all", "bkgd-green") }}
{{ render_button( {{ render_button(
"<i class=\"fa-duotone fa-solid fa-trash mr-xs\"></i>" + "<i class=\"fa-duotone fa-solid fa-trash mr-xs\"></i>" +
l10n("clear.all.files", "commons", user_lang), l10n("clear.all.files", "commons", user_lang),
false, applet_data.id + "-files-clear", "bkgd-orange") }} false, applet_data.id + "-files-clear", "bkgd-orange") }}
{% endif %}
</div> </div>
<div id="{{ applet_data.id }}-result-container" class="mt-s"></div> <div id="{{ applet_data.id }}-result-container" class="mt-s"></div>
@@ -46,13 +55,21 @@
<table class="table-p-xxs table-v-center"> <table class="table-p-xxs table-v-center">
<tr> <tr>
<td rowspan="2" class="br bkgd-green bkgd-grid30 rl-l"> <td rowspan="2" class="br bkgd-green bkgd-grid30 rl-l">
<i class="fa-duotone fa-solid fa-circle-check mx-s"></i> {% if is_standalone %}
<span class="mx-xxs">✅</span>
{% else %}
<i class="fa-duotone fa-solid fa-circle-check mx-s"></i>
{% endif %}
</td> </td>
<td class="w-full t-bold"> <td class="w-full t-bold">
<span id="tmpl-success-filename">PlaceholderSuccessName.xlsx</span> <span id="tmpl-success-filename">PlaceholderSuccessName.xlsx</span>
</td> </td>
<td rowspan="2" class="bl bkgd-blue bkgd-grid30 rr-l"> <td rowspan="2" class="bl bkgd-blue bkgd-grid30 rr-l">
<i class="fa-duotone fa-download mx-s"></i> {% if is_standalone %}
<span class="mx-xxs">💾</span>
{% else %}
<i class="fa-duotone fa-download mx-s"></i>
{% endif %}
</td> </td>
</tr> </tr>
<tr class="t-italic"> <tr class="t-italic">
@@ -67,7 +84,11 @@
<table class="table-p-xxs table-v-center"> <table class="table-p-xxs table-v-center">
<tr> <tr>
<td rowspan="2" class="br bkgd-orange bkgd-grid30 rl-l"> <td rowspan="2" class="br bkgd-orange bkgd-grid30 rl-l">
<i class="fa-duotone fa-solid fa-triangle-exclamation mx-s"></i> {% if is_standalone %}
<span class="mx-xxs">⚠️</span>
{% else %}
<i class="fa-duotone fa-solid fa-triangle-exclamation mx-s"></i>
{% endif %}
</td> </td>
<td class="w-full t-bold"> <td class="w-full t-bold">
<span id="tmpl-warning-filename">PlaceholderWarningName.xlsx</span> <span id="tmpl-warning-filename">PlaceholderWarningName.xlsx</span>
@@ -92,7 +113,11 @@
<table class="table-p-xxs table-v-center"> <table class="table-p-xxs table-v-center">
<tr> <tr>
<td rowspan="2" class="br bkgd-red bkgd-grid30 rl-l"> <td rowspan="2" class="br bkgd-red bkgd-grid30 rl-l">
<i class="fa-duotone fa-solid fa-hexagon-exclamation mx-s"></i> {% if is_standalone %}
<span class="mx-xxs">❌</span>
{% else %}
<i class="fa-duotone fa-solid fa-hexagon-exclamation mx-s"></i>
{% endif %}
</td> </td>
<td class="w-full t-bold"> <td class="w-full t-bold">
<span id="tmpl-error-filename">PlaceholderErrorName.xlsx</span> <span id="tmpl-error-filename">PlaceholderErrorName.xlsx</span>
@@ -110,8 +135,13 @@
</template> </template>
{% if is_standalone %} {% if is_standalone %}
<section id="{{ applet_data.id }}-licenses"> <section id="{{ applet_data.id }}-licenses" class="mt-l mt-0-if-first">
{{ render_h2(l10n("licenses.title", applet_data.id, user_lang)) }} {{ render_h2(l10n("license.title", applet_data.id, user_lang)) }}
<p>123</p>
<div class="content-spacer">
{{ render_paragraph(
l10n("license.text.1", applet_data.id, user_lang) + "<br>" + l10n("license.text.2", applet_data.id, user_lang)
) }}
</div>
</section> </section>
{% endif %} {% endif %}

View File

@@ -23,7 +23,10 @@
<div class="np-file-drop-buttons pb-s"> <div class="np-file-drop-buttons pb-s">
{% if file_upload_button %} {% if file_upload_button %}
<button id="{{ file_input_id }}-add" class="p-xs r-s border btn-primary np-file-drop-button"> <button id="{{ file_input_id }}-add" class="p-xs r-s border btn-primary np-file-drop-button">
<i class="fa-duotone fa-solid fa-cloud-arrow-up mr-xxs"></i> {% if not is_standalone %}
<i class="fa-duotone fa-solid fa-cloud-arrow-up mr-xxs"></i>
{% endif %}
{% if file_multiple %} {% if file_multiple %}
{{ l10n("file.drop.upload.multiple", "commons", user_lang) }} {{ l10n("file.drop.upload.multiple", "commons", user_lang) }}
{% else %} {% else %}
@@ -34,7 +37,11 @@
{% if file_clear_button %} {% if file_clear_button %}
<button id="{{ file_input_id }}-reset" class="p-xs r-s border btn-warning np-file-drop-button"> <button id="{{ file_input_id }}-reset" class="p-xs r-s border btn-warning np-file-drop-button">
{{ "<i class=\"fa-duotone fa-solid fa-trash mr-xs\"></i>" + l10n("file.drop.clear", "commons", user_lang) }} {% if not is_standalone %}
<i class="fa-duotone fa-solid fa-trash mr-xs"></i>
{% endif %}
{{ l10n("file.drop.clear", "commons", user_lang) }}
</button> </button>
{% endif %} {% endif %}
</div> </div>