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
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ This file captures only selected high-level milestones.
* Added a shareable page for every resource; archived resources are now hidden by default; added an Agent 365 highlight row (driven by the `agent-365` tag) and "New" badges to the landing page.
* Cataloged 23 previously unlisted scripts, snippets, and samples (Viva Engage administration, Teams Phone and Rooms, SimpleGraph, ESS extensions) and archived scripts that depend on retired modules or services.
* Archived the prompt samples and removed a 41 MB archived demo video.
* Added a **Download** button to resource pages and the landing detail view for resources that are one self-contained file: interactive guides and tools (saved as a single HTML file), single-file scripts, PowerPoint decks, Power BI reports, and the Technical Advisory PDF. Clicks are recorded as a `resource_download` event in Clarity. An optional `download` front matter field picks the file explicitly; see `docs/CATALOG-METADATA.md`.
* Added a **Download** button to resource pages and the landing detail view for resources that are one self-contained file: interactive guides and tools (saved as a single HTML file), single-file scripts, PowerPoint decks, Power BI reports, and the Technical Advisory PDF. The button opens a short download page (`r/<slug>/download/`) that saves the file and records the download. Loads of that page are counted per resource as `downloads` in `resource-stats.json`, kept separate from views, and logged as a `resource_download` event in Clarity. An optional `download` front matter field picks the file explicitly; see `docs/CATALOG-METADATA.md`.
* The daily **Collect Traffic Data** workflow no longer collects GitHub repository traffic (views, clones, referrers), which needs a token that expires every few days under organization policy. It skips that step with a notice and keeps collecting Clarity page analytics and discussion votes. Set the repository variable `COLLECT_GITHUB_TRAFFIC` to `true` and replace `TRAFFIC_TOKEN` to resume.

### April 20, 2018
Expand Down
3 changes: 3 additions & 0 deletions assets/resource-page.css
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ h1 { font-size: clamp(1.75rem, 4vw, 2.75rem); line-height: 1.15; letter-spacing:
.btn:hover { text-decoration: none; background: var(--surface-hover); }
.btn svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.btn-size { font-weight: 400; color: var(--text-muted); }
.btn-primary .btn-size { color: inherit; opacity: 0.85; }
.fine { margin-top: 1.25rem; font-size: 0.875rem; color: var(--text-muted); max-width: 46rem; }
.fine a { text-decoration: underline; text-underline-offset: 2px; }
.btn-primary { background: var(--accent); border-color: var(--accent); color: #fff; }
.btn-primary:hover { background: var(--accent); filter: brightness(1.08); }
[data-theme="dark"] .btn-primary { color: #14141a; }
Expand Down
12 changes: 12 additions & 0 deletions assets/resource-page.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
}

// Same Clarity project and event names as the catalog so per-resource view stats keep working.
var downloadSlug = document.documentElement.getAttribute('data-download-slug');
var clarityId = script && script.getAttribute('data-clarity');
if (clarityId) {
(function (c, l, a, r, i, t, y) {
Expand All @@ -40,9 +41,20 @@
window.clarity('set', 'page', location.pathname);
window.clarity('set', 'resource', slug);
window.clarity('event', 'resource_view');
} else if (downloadSlug) {
// Loading this page is what counts as a download: the stats read its URL from Clarity.
window.clarity('set', 'page', location.pathname);
window.clarity('set', 'resource', downloadSlug);
window.clarity('event', 'resource_download');
}
document.querySelectorAll('[data-event]').forEach(function (element) {
element.addEventListener('click', function () { window.clarity('event', element.getAttribute('data-event')); });
});
}

// The download page saves the file by itself; its visible link covers blocked scripts.
var autoDownload = document.querySelector('[data-autodownload]');
if (autoDownload) {
setTimeout(function () { autoDownload.click(); }, 600);
}
})();
2 changes: 1 addition & 1 deletion docs/CATALOG-METADATA.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ prerequisites:
| `format` | enum | One of `ps1`, `bundle`, `declarative`, `interactive`, `pptx`, `pbix`, or `md`. This replaces the former `artifact` label. |
| `interactiveKind` | enum | Only for `format: interactive`. Set `guide` for a walkthrough or implementation/decision guide, or `tool` for a calculator or utility. Defaults to `tool`, which the catalog labels "Interactive tool"; `guide` is labeled "Interactive guide". A `guide` is also cross-listed under **Guides & planning** (see below), while a `tool` is not. |
| `preview` | string | Optional relative path (inside the resource folder) to a screenshot the catalog detail page renders above the description, for example `preview.webp`. Use an optimized local image (WebP or PNG). No URLs, absolute paths, `..`, or backslashes. Omit it for resources without a screenshot. |
| `download` | string | Optional relative path (inside the resource folder) of the one file the **Download** button saves, for example `Report.pbix`. No URLs, absolute paths, `..`, or backslashes. Without it, the catalog picks the file itself: `index.html` for `interactive`, the only `.pptx` or `.pbix` in the folder, and the only `.ps1` for `ps1` when the folder has no module, data, or template files next to it. Other resources get no Download button. Archived resources never get one. The button records a Clarity `resource_download` event. |
| `download` | string | Optional relative path (inside the resource folder) of the one file the **Download** button saves, for example `Report.pbix`. No URLs, absolute paths, `..`, or backslashes. Without it, the catalog picks the file itself: `index.html` for `interactive`, the only `.pptx` or `.pbix` in the folder, and the only `.ps1` for `ps1` when the folder has no module, data, or template files next to it. Other resources get no Download button. Archived resources never get one. The button opens the resource's download page (`r/<slug>/download/`), which saves the file and records the download: each load of that page is counted in `resource-stats.json` as `downloads`, and Clarity logs a `resource_download` event. |
| `featured` | boolean | Use sparingly for resources selected for catalog promotion. Default is `false`. |
| `status` | enum | `active`, `preview`, or `archived`. Default is `active`. `archived` resources are hidden from the default catalog view and the sitemap (visitors can reveal them with **Show archived**), and their pages are marked `noindex`. `preview` resources get a Preview badge. |
| `url` | HTTPS URL | Optional GitHub or destination URL. When omitted, the generator derives a GitHub URL from the resource path. |
Expand Down
13 changes: 4 additions & 9 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1572,7 +1572,7 @@ <h3>Related resources</h3>
View
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/><path d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"/></svg>
</button>
<a href="#" class="btn-secondary" id="btnDetailDownload" download style="display: none;">
<a href="#" class="btn-secondary" id="btnDetailDownload" style="display: none;">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 4v11M7.5 11l4.5 4.5 4.5-4.5M5 19h14"/></svg>
Download <span id="detailDownloadSize" style="font-weight: 400; opacity: 0.75;"></span>
</a>
Expand Down Expand Up @@ -2704,19 +2704,18 @@ <h3>Browse the scripts folder on GitHub &rarr;</h3>
viewBtn.onclick = null;
}

// Download button: only for resources with one self-sufficient file (see tools/catalog-build/downloads.js)
// Download button: only for resources with one self-sufficient file (see tools/catalog-build/downloads.js).
// It opens the resource's counted download page, which saves the file and records the download.
const downloadBtn = document.getElementById('btnDetailDownload');
if (resource.download) {
const size = formatBytes(resource.downloadSize);
downloadBtn.href = resource.download.split('/').map(encodeURIComponent).join('/');
downloadBtn.setAttribute('download', resource.downloadName || '');
downloadBtn.href = `r/${encodeURIComponent(resource.slug)}/download/`;
downloadBtn.setAttribute('aria-label', `Download ${resource.downloadName || resource.name}${size ? ` (${size})` : ''}`);
document.getElementById('detailDownloadSize').textContent = size;
downloadBtn.style.display = '';
} else {
downloadBtn.style.display = 'none';
downloadBtn.removeAttribute('href');
downloadBtn.removeAttribute('download');
downloadBtn.removeAttribute('aria-label');
document.getElementById('detailDownloadSize').textContent = '';
}
Expand Down Expand Up @@ -2808,10 +2807,6 @@ <h3>Browse the scripts folder on GitHub &rarr;</h3>
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
}

document.getElementById('btnDetailDownload').addEventListener('click', () => {
if (typeof window.clarity !== 'undefined') { window.clarity('event', 'resource_download'); }
});

function openViewer(name, url) {
const overlay = document.getElementById('viewerOverlay');
const frame = document.getElementById('viewerFrame');
Expand Down
57 changes: 57 additions & 0 deletions r/add-engagegroupadmins/download/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en" data-download-slug="add-engagegroupadmins">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Download Add-EngageGroupAdmins.ps1 | Microsoft FastTrack</title>
<meta name="robots" content="noindex">
<link rel="canonical" href="https://microsoft.github.io/FastTrack/r/add-engagegroupadmins/">
<meta name="theme-color" content="#4f46e5">
<link rel="icon" href="../../../assets/favicon.svg" type="image/svg+xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Figtree:wght@400;500;600;700&display=swap" rel="stylesheet">
<script>try{var t=localStorage.getItem('theme');document.documentElement.setAttribute('data-theme',t||(matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'))}catch(e){}</script>
<link rel="stylesheet" href="../../../assets/resource-page.css">
</head>
<body class="type-script">
<header class="site-header">
<div class="wrap bar">
<a class="brand" href="../../../" aria-label="Microsoft FastTrack catalog">
<svg viewBox="0 0 21 21" width="21" height="21" aria-hidden="true"><rect x="1" y="1" width="9" height="9" fill="#F25022"/><rect x="11" y="1" width="9" height="9" fill="#7FBA00"/><rect x="1" y="11" width="9" height="9" fill="#00A4EF"/><rect x="11" y="11" width="9" height="9" fill="#FFB900"/></svg>
Microsoft FastTrack
</a>
<nav class="bar-links" aria-label="Site">
<a href="../../../">Catalog</a>
<a href="https://github.com/microsoft/FastTrack" target="_blank" rel="noopener">GitHub</a>
<button class="icon-btn" id="themeToggle" type="button" aria-label="Toggle dark mode"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg></button>
</nav>
</div>
</header>

<main class="wrap">
<nav class="crumbs" aria-label="Breadcrumb">
<a href="../../../">Catalog</a><span aria-hidden="true">/</span><a href="../">Add-EngageGroupAdmins</a><span aria-hidden="true">/</span><span aria-current="page">Download</span>
</nav>

<section class="hero">
<div class="eyebrow"><span class="dot"></span>Download</div>
<h1>Your download is starting</h1>
<p class="lede">Add-EngageGroupAdmins: Add-EngageGroupAdmins.ps1 (7 KB)</p>
<div class="actions">
<a class="btn btn-primary" href="../../../scripts/Add-EngageGroupAdmins/Add-EngageGroupAdmins.ps1" download="Add-EngageGroupAdmins.ps1" data-autodownload>Download again<span class="btn-size">7 KB</span></a>
<a class="btn" href="../">Back to Add-EngageGroupAdmins</a>
</div>
<p class="fine">If the file does not save automatically, select <strong>Download again</strong>. Provided as-is under the <a href="https://github.com/microsoft/FastTrack/blob/master/LICENSE" target="_blank" rel="noopener">MIT License</a>; review it before you use it in your tenant.</p>
</section>
</main>

<footer class="site-footer">
<div class="wrap">
<p>Community catalog of tools, scripts, and guidance from Microsoft FastTrack. Provided as-is: not official Microsoft software, no SLA.</p>
<p><a href="../../../">Browse the catalog</a> · <a href="https://github.com/microsoft/FastTrack/blob/master/CONTRIBUTING.md" target="_blank" rel="noopener">Contribute</a> · <a href="https://github.com/microsoft/FastTrack/issues" target="_blank" rel="noopener">Issues</a> · <a href="https://github.com/microsoft/FastTrack/blob/master/LICENSE" target="_blank" rel="noopener">MIT License</a></p>
</div>
</footer>
<script src="../../../assets/resource-page.js" data-clarity="w810tntgw1" defer></script>
</body>
</html>
2 changes: 1 addition & 1 deletion r/add-engagegroupadmins/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ <h1>Add-EngageGroupAdmins</h1>
<p class="lede">Bulk-add owners (admins) to Viva Engage communities from a CSV by using the Microsoft Graph group owners API.</p>
<div class="actions">
<a class="btn btn-primary" href="https://github.com/microsoft/FastTrack/tree/master/scripts/Add-EngageGroupAdmins" target="_blank" rel="noopener">View on GitHub<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M7 17l9.2-9.2M17 16.2V7H8.8"/></svg></a>
<a class="btn" href="../../scripts/Add-EngageGroupAdmins/Add-EngageGroupAdmins.ps1" download="Add-EngageGroupAdmins.ps1" data-event="resource_download" aria-label="Download Add-EngageGroupAdmins.ps1 (7 KB)"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 4v11M7.5 11l4.5 4.5 4.5-4.5M5 19h14"/></svg>Download<span class="btn-size">7 KB</span></a>
<a class="btn" href="download/" aria-label="Download Add-EngageGroupAdmins.ps1 (7 KB)"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 4v11M7.5 11l4.5 4.5 4.5-4.5M5 19h14"/></svg>Download<span class="btn-size">7 KB</span></a>
<button class="btn" id="copyLink" type="button" data-url="https://microsoft.github.io/FastTrack/r/add-engagegroupadmins/">Copy link</button>
</div>
<div class="tags"><a class="tag" href="../../?tag=viva-engage">viva-engage</a><a class="tag" href="../../?tag=administration">administration</a><a class="tag" href="../../?tag=communities">communities</a><a class="tag" href="../../?tag=microsoft-graph">microsoft-graph</a></div>
Expand Down
57 changes: 57 additions & 0 deletions r/agent-365-enablement-checklist/download/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en" data-download-slug="agent-365-enablement-checklist">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Download agent-365-enablement-checklist.html | Microsoft FastTrack</title>
<meta name="robots" content="noindex">
<link rel="canonical" href="https://microsoft.github.io/FastTrack/r/agent-365-enablement-checklist/">
<meta name="theme-color" content="#4f46e5">
<link rel="icon" href="../../../assets/favicon.svg" type="image/svg+xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=Figtree:wght@400;500;600;700&display=swap" rel="stylesheet">
<script>try{var t=localStorage.getItem('theme');document.documentElement.setAttribute('data-theme',t||(matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light'))}catch(e){}</script>
<link rel="stylesheet" href="../../../assets/resource-page.css">
</head>
<body class="type-strategy">
<header class="site-header">
<div class="wrap bar">
<a class="brand" href="../../../" aria-label="Microsoft FastTrack catalog">
<svg viewBox="0 0 21 21" width="21" height="21" aria-hidden="true"><rect x="1" y="1" width="9" height="9" fill="#F25022"/><rect x="11" y="1" width="9" height="9" fill="#7FBA00"/><rect x="1" y="11" width="9" height="9" fill="#00A4EF"/><rect x="11" y="11" width="9" height="9" fill="#FFB900"/></svg>
Microsoft FastTrack
</a>
<nav class="bar-links" aria-label="Site">
<a href="../../../">Catalog</a>
<a href="https://github.com/microsoft/FastTrack" target="_blank" rel="noopener">GitHub</a>
<button class="icon-btn" id="themeToggle" type="button" aria-label="Toggle dark mode"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg></button>
</nav>
</div>
</header>

<main class="wrap">
<nav class="crumbs" aria-label="Breadcrumb">
<a href="../../../">Catalog</a><span aria-hidden="true">/</span><a href="../">Agent 365 Enablement Checklist</a><span aria-hidden="true">/</span><span aria-current="page">Download</span>
</nav>

<section class="hero">
<div class="eyebrow"><span class="dot"></span>Download</div>
<h1>Your download is starting</h1>
<p class="lede">Agent 365 Enablement Checklist: agent-365-enablement-checklist.html (667 KB)</p>
<div class="actions">
<a class="btn btn-primary" href="../../../copilot-agent-strategy/agent-365-enablement-checklist/index.html" download="agent-365-enablement-checklist.html" data-autodownload>Download again<span class="btn-size">667 KB</span></a>
<a class="btn" href="../">Back to Agent 365 Enablement Checklist</a>
</div>
<p class="fine">If the file does not save automatically, select <strong>Download again</strong>. Provided as-is under the <a href="https://github.com/microsoft/FastTrack/blob/master/LICENSE" target="_blank" rel="noopener">MIT License</a>; review it before you use it in your tenant.</p>
</section>
</main>

<footer class="site-footer">
<div class="wrap">
<p>Community catalog of tools, scripts, and guidance from Microsoft FastTrack. Provided as-is: not official Microsoft software, no SLA.</p>
<p><a href="../../../">Browse the catalog</a> · <a href="https://github.com/microsoft/FastTrack/blob/master/CONTRIBUTING.md" target="_blank" rel="noopener">Contribute</a> · <a href="https://github.com/microsoft/FastTrack/issues" target="_blank" rel="noopener">Issues</a> · <a href="https://github.com/microsoft/FastTrack/blob/master/LICENSE" target="_blank" rel="noopener">MIT License</a></p>
</div>
</footer>
<script src="../../../assets/resource-page.js" data-clarity="w810tntgw1" defer></script>
</body>
</html>
Loading
Loading