Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .DS_Store
Binary file not shown.
29 changes: 28 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,31 @@ examples/*
examples.py
uv.lock
.vscode/*
*.pyc
*.pyc
.DS_Store
*.egg
*.egg-info
*.pyo
*.pyd
*.swp
*.swo
*.log
*.coverage
.coverage.*
.coverage
.coverage.*
*.mo
*.pot
*.po
*.db
*.sqlite3
*.sqlite
*.db-journal
*.pid
*.pid.lock
*.lock
*.bak
*.orig
*.swp
*.swo
site/*
31 changes: 31 additions & 0 deletions docs/assets/javascript/init_kapa_widget.v2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
document.addEventListener("DOMContentLoaded", function () {
var script = document.createElement("script");
script.src = "https://widget.kapa.ai/kapa-widget.bundle.js";
script.setAttribute("data-website-id", "95d8dc11-e509-42cb-a7ee-f7e06df52017");
script.setAttribute("data-project-name", "Atlas");
script.setAttribute("data-project-color", "#2894F3");
script.setAttribute("data-project-logo", "https://avatars.githubusercontent.com/u/78708182?s=128");
script.setAttribute("data-modal-disclaimer", "You can find further support on our [Discord server](https://discord.com/servers/atlas-795710270000332800) or [our GitHub Discussions](https://github.com/Atlas-OS/Atlas/discussions). Remember that not all answers are accurate, as results are AI-generated.")
script.setAttribute("data-modal-example-questions", "Does Atlas support Windows Defender?,Who is Atlas for?,What does Atlas do?")
script.setAttribute("data-modal-example-questions-col-span", "12")
script.async = true;

script.onload = () => {
const kapaLoadedCheck = setInterval(() => {
const kapaStyle = document.head.querySelector('style[data-emotion="mantine"]');
if (kapaStyle && kapaStyle.sheet) {
clearInterval(kapaLoadedCheck);
const cssRules = Array.from(kapaStyle.sheet.cssRules).map(rule => rule.cssText).join('\n');
const node = document.body.appendChild(kapaStyle);
node.appendChild(document.createTextNode(cssRules));
}
}, 150);
};

document.head.appendChild(script);
});

function clickKapaAi() {
const button = document.querySelector('#kapa-widget-container > button')
if (button) button.click()
}
189 changes: 189 additions & 0 deletions docs/assets/javascript/msdl.v1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
// AGPL-3.0-only https://spdx.org/licenses/AGPL-3.0-or-later.html
// Modified from https://github.com/gravesoft/msdl for use in AtlasOS documentation
//
// Changes:
// - Auto-selecting language, and removing 'Choose once'
// - Removing table to download other versions
// - Restructuring of script
// - Simplification of certain functions like updateVars
// - Fixes/adaptations for use in Atlas documentation

const apiUrl = "https://api.gravesoft.dev/msdl/";

let sessionId;
let msContent;
let pleaseWait;
let processingError;
let download;
let downloadLink;
let winProductID;
let skuId;

function uuidv4() {
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4))).toString(16)
);
}

function updateVars() {
// With auto-selection, an option is always selected.
let id = document.getElementById('product-languages').value;
document.getElementById('submit-sku').disabled = false;
skuId = JSON.parse(id)['id'];
console.log(`Updated skuId: ${skuId}`);
return skuId;
}

function showError(error) {
processingError.style.display = "block";
pleaseWait.style.display = "none";
msContent.style.display = "none";
processingError.innerHTML = 'Error: ' + error;
console.error('Error: ' + error);
}

function getFileNameFromLink(link) {
let raw_link = link.split('?')[0];
return raw_link.split('/').pop();
}

function getLanguages(productId) {
let url = `${apiUrl}skuinfo?product_id=${productId}`;
let xhr = new XMLHttpRequest();
xhr.onload = onLanguageXhrChange;
xhr.onerror = function() {
showError("Failed to retrieve languages.");
};
xhr.open("GET", url, true);
xhr.send();
}

function onLanguageXhrChange() {
if (this.status != 200) {
showError("Failed to retrieve languages.");
return;
}
pleaseWait.style.display = "none";
msContent.style.display = "block";

let langHtml = langJsonStrToHTML(this.responseText);
msContent.innerHTML = langHtml;

let prodLang = document.getElementById('product-languages');
prodLang.addEventListener("change", updateVars);

updateVars();
}

function langJsonStrToHTML(jsonStr) {
let json = JSON.parse(jsonStr);
let container = document.createElement('div');

let header = document.createElement('h2');
header.textContent = "Select the product language";
container.appendChild(header);

let info = document.createElement('p');
info.innerHTML = "You'll need to choose the same language when you install Windows. To see what language you're currently using, go to <strong>Time and language</strong> in PC settings or <strong>Region</strong> in Control Panel.";
container.appendChild(info);

let select = document.createElement('select');
select.id = "product-languages";

let defaultOption = document.createElement('option');
defaultOption.value = "";
defaultOption.selected = true;
defaultOption.textContent = "Choose one";
select.appendChild(defaultOption);

json.Skus.forEach(sku => {
let option = document.createElement('option');
option.value = JSON.stringify({ id: sku.Id });
option.textContent = sku.LocalizedLanguage;
select.appendChild(option);
});

container.appendChild(select);

let button = document.createElement('button');
button.id = "submit-sku";
button.textContent = "Download";
button.disabled = true;
button.setAttribute("onClick", "getDownload();");
button.classList = "msdl-button";
container.appendChild(button);

return container.innerHTML;
}

function getDownload() {
msContent.style.display = "none";
pleaseWait.style.display = "block";
skuId = skuId ? skuId : updateVars();
let url = `${apiUrl}proxy?product_id=${winProductID}&sku_id=${skuId}`;
console.log(`Requesting download links from URL: ${url}`);
let xhr = new XMLHttpRequest();
xhr.onload = onDownloadsXhrChange;
xhr.open("GET", url, true);
xhr.send();
}

function onDownloadsXhrChange() {
if (this.status != 200) {
showError("Failed to retrieve download links.");
return;
}
let response = JSON.parse(this.responseText);
console.log('Download response:', response);

pleaseWait.style.display = "none";
msContent.innerHTML = "";
msContent.style.display = "block";

if (response.ProductDownloadOptions && response.ProductDownloadOptions.length > 0) {
let header = document.createElement('h2');
header.textContent = `${response.ProductDownloadOptions[0].ProductDisplayName} ${response.ProductDownloadOptions[0].LocalizedLanguage}`;
msContent.appendChild(header);

response.ProductDownloadOptions.forEach(option => {
let optionContainer = document.createElement('div');
let downloadButton = document.createElement('a');
downloadButton.href = option.Uri;
downloadButton.textContent = getFileNameFromLink(option.Uri);
downloadButton.target = "_blank";
optionContainer.appendChild(downloadButton);
msContent.appendChild(optionContainer);

// Trigger automatic download
const link = document.createElement('a');
link.href = option.Uri;
link.download = getFileNameFromLink(option.Uri);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
});
} else {
msContent.innerHTML = "<p>No download options available.</p>";
}
}

function getWindows(id) {
// Define variables for contents of page
sessionId = document.getElementById("msdl-session-id");
msContent = document.getElementById("msdl-ms-content");
pleaseWait = document.getElementById("msdl-please-wait");
processingError = document.getElementById("msdl-processing-error");
download = document.getElementById("msdl-download");
downloadLink = document.getElementById("msdl-download-link");

skuId = null;
sessionId.value = uuidv4();
msContent.style.display = "none";
processingError.style.display = "none";
download.style.display = "none";
pleaseWait.style.display = "block";

// Retrieve languages
winProductID = id;
getLanguages(winProductID);
}
Binary file added docs/assets/logo/dotpy_blue_transparent.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file.
57 changes: 57 additions & 0 deletions docs/assets/old_pages/index_.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
description: The official documentation for EasySwitch
icon: material/home
---

# Welcome to EasySwitch Documentation!

**Simplify transactions, master configurations, switch easily.**

**EasySwitch** is a unified Python SDK for Mobile Money integration across major aggregators in West Africa. It provides a single, consistent interface to simplify payment processing, reduce code duplication, and accelerate development.

<div class="grid cards" markdown>

- :material-power:{ .lg .middle } __English__

---

Contiue reading **EasySwitch** documentation in **English**.

[-> Get started](en/)

- :material-wrench:{ .lg .middle } __Français__

---

Lire la documentation de **EasySwitch** en **Français**

[-> Commencer](fr/)

<!-- - :material-chat-question:{ .lg .middle } __Frequently Asked Questions__

---

Get the answer to any frequently asked questions regarding AtlasOS.

[-> Install FAQ](install-faq/removed-features.md) | [-> General FAQ](general-faq/atlas-and-security.md)

- :material-handshake:{ .lg .middle } __Development__

---

Learn how you can contribute to AtlasOS, and do so effectively.

[-> Contribution Guidelines](contributing/contribution-guidelines.md) -->

</div>

## :material-head-question-outline: What is AtlasOS?

AtlasOS, or Atlas, is an open-source project that enhances Windows by conveniently applying privacy, usability, and performance optimizations, all while maintaining functionality and [customizability](https://docs.atlasos.net/getting-started/post-installation/atlas-folder/general-configuration/).

If you'd like to learn more, see our:

- [GitHub repository README](https://github.com/Atlas-OS/Atlas) for more in-depth overviews
- [GitHub repository's source code](https://github.com/Atlas-OS/Atlas/tree/main/src) for what Atlas does under the hood
- [Discord server](https://discord.atlasos.net/) to connect with the Atlas community and get support
- [Website](https://atlasos.net/) for a general overview of Atlas
Loading