Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.

, '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

Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.

, '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

Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.

, '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

Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.

, '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

Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.

, '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

Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.

, '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

Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.

, '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

Latest commit

History

History
65 lines (44 loc) · 2.82 KB

File metadata and controls

65 lines (44 loc) · 2.82 KB

How To Do Basic Stuff

This documents some of the simple stuff that you may need to do to get started. Some day, we should write real docs! But today is not that day.

Creating a new presentation

To create a new presentation, cd into the directory that you'd like your presentation to get created under.

cd Apache/ComDev

And then run:

mvn archetype:generate -DarchetypeGroupId=org.apache.training -DarchetypeArtifactId=content-archetype -DarchetypeVersion=1.3.0

This will give you a list of questions to answer in order to create the new presentation:

Define value for property 'groupID': org.apache.training.content Define value for property 'artifactID': training-content-HowToDoStuff Define value for property 'version' 1.0.0-SNAPSHOT: : Define value for property 'package' org.apache: : Confirm properties configuration: apacheTrainingToolsVersion: 1.3.0 groupID: org.apache.training.content artifactId: training-content-HowToDoStuff version 1.0.0-SNAPSHOT package: org.apache Y: :

In practice, you'll have to answer the first two questions (groupID and articactID) and just hit enter for the others. Answer Y at the end to start the generation process.

Update the file pom.xml to set the presentation's name and description.

Edit your content in the file src/main/asciidoc/index.adoc to create your content.

Rebuild your presentation by going to the top level directory of the repository and running mvn package.

Adding your presentation to the Apache Training (incubating) Website

The website of the Apache Training project is built by the module in the directory site.

There are two steps that need to be done here, in order to deploy your presentation:

  • Add the maven coordinates of your presentation to the pom.xml in two locations:
    • As a dependency (This ensures maven builds the presentation before trying to use it)
    • As an artifactItem inside the copy-presentations section (This tells maven to take the war of the presentation module and to unpack it into the output of the website module)

Please be sure to pay attention to the outputDirectory element of the artifactItem, as this defines where maven will copy the resources. In general, following the naming of the other presentations, that somewhat reflect the directory structure of the modules, makes sense.

Now your presentation would be available on the page, but not yet added to the navigation menu. In order to add it to that, you need to do one last step:

  • Edit the file src/site/site.xml and add an item element to the correct place.

Simply follow the convention of the other presentations and be sure to use the correct path.

As soon as you commit and push your changes, Jenkins will checkout these changes, build your and all other presentations and then update the website. There should be no other step needed.