rise 360
11697 TopicsChanging Data Centre from US to EU
Dear Community/Support Team, I need adivce. My subscription is expiring in a few weeks, and I would like to renew it. However, I need to change my data center from the US to the EU (we are based in the EU, yet for some reason, our account is allocated to the US data center) as I’m experiencing issues sharing files with external partners. Could you please clarify the process for making this change? I was informed that one option is to let the account expire and start a new one, but I’m concerned about what will happen to my Rise files and other content. I’d really appreciate your guidance on the best way to proceed. Thank you in advance for your help.832Views0likes13CommentsIntroducing Quick Share: One-Click Publishing for Everyday Learning
We’re excited to share a brand-new way to get your Rise content out into the world: Quick Share! What Is Quick Share? Quick Share lets you publish Rise courses instantly and share them with a simple link, no LMS setup, no logins, no admin delays. You’ll also get light analytics so you can see how many people viewed your course (and, with the Guestbook enabled, who those learners are). It’s all about speed and simplicity, helping learners get the right information at the right time without barriers. When to Use Quick Share Quick Share is perfect for everyday learning content that needs to move fast: Job aids and quick reference materials Presentations or meeting resources Explainer modules and how-tos Operational updates or announcements Pre-boarding and onboarding refreshers It’s also a great way to share examples right here in the E-Learning Heroes community. It’s a fast way to showcase your creativity, get feedback, and inspire fellow creators. If you need deeper, learner-level analytics or advanced group management, that’s where Reach or your LMS comes in. Quick Share can live alongside those tools to give you flexibility. 🎥 Tip Video: Deploy Content Rapidly with Quick Share Community Use Cases We love seeing how community members are already using Quick Share: BradDameron uses it to share preview links and resources across departments. “The Guestbook gives us a general view of engagement — perfect for quick stakeholder visibility,” he shared. JeremyNash uses Quick Share to deliver client-specific training without needing an LMS: “It’s a great step between Preview and Review.” JessicaDecker found it helpful for external partners: “We need to share training with outside vendors who don’t have LMS access. The Guestbook is nice so we can still track who’s taken it.” Try It Out! Quick Share is automatically available for all Articulate 360 creators, no setup required and no extra cost. 💬 Have you tried Quick Share yet? How are you using it? Share your experiences (and any creative use cases) in the comments below!1.6KViews10likes29CommentsRise feature request: multiple block selection
Hi all, I'd love to see a new feature in Rise: the ability to select multiple blocks at once and then move or copy them as a group. Right now, adjusting the layout of a longer lesson can be quite time-consuming, since you have to move each block one at a time. The idea is simple: You select several blocks (for example: a text block, an image block, and a video block) Then you can move them up or down together, or copy and paste them as a group This would make editing and reorganizing lessons much faster and easier Let me know if others are also missing this feature or if maybe there’s already a smart workaround I’ve missed! Please upvote if you need this feature as well! Thanks, ThomSolved244Views3likes12CommentsRise code block feature requests
Hi there. My team uses code blocks heavily in our courses. We've created a custom code block template in order to provide code syntax highlighting, copy-paste functionality, and the ability for the learner to enlarge/shrink the code box size. Ideally, this would be available out of the box in the built-in Rise code tool (under Multimedia > Code snippet). We'd like to request implementing these features in the existing code block so that we don't have to use a custom block template as a workaround. Ideally, the code block should: Provide an input field where the elearning dev can paste a snippet of code that will be visible to the learner. Provide automatic syntax highlighting with the ability customize the code colors and background color. Resize automatically according to code snippet length and screen size. Provide copy/paste button and a "click to view larger" button. I've attached a GIF to show a demonstration of this functionality in the custom code block that we are currently using. Here is the code that we used to create it: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Code Block Highlighting</title> <script> var CODE_SNIPPET = `{ "type": "Hidden", "value": "io.camunda:watchserviceinbound:1", "binding": { "type": "zeebe:property", "name": "inbound.type" } } `; </script> <style> :root { color-scheme: dark; } body { margin: 0; padding: 1rem; font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background-color: #1e1e1e; color: #d4d4d4; box-sizing: border-box; } .toolbar { position: absolute; top: 1rem; right: 1rem; z-index: 10; display: flex; gap: 0.5rem; } button.copy-btn { background-color: #0e639c; color: #ffffff; border: none; border-radius: 4px; padding: 0.3rem 0.8rem; font-size: 0.8rem; cursor: pointer; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } button.copy-btn:hover { background-color: #1177bb; } button.copy-btn:active { background-color: #0b4f75; } .editor-container { display: none; /* hidden input area */ } .code-container { position: relative; background-color: #1e1e1e; border-radius: 6px; padding: 1rem; overflow: auto; max-height: 300px; transition: max-height 0.3s ease; box-sizing: border-box; } .code-container.maximized { max-height: none; } pre { margin: 0; font-family: "Fira Code", "Consolas", "Menlo", monospace; font-size: 0.9rem; line-height: 1.4; white-space: pre; } /* Syntax highlighting tokens */ .token-punctuation { color: #d4d4d4; } .token-key { color: #9cdcfe; /* keys */ } .token-string { color: #ce9178; /* string values */ } .token-number { color: #b5cea8; } .token-boolean { color: #569cd6; } .token-function { color: #dcdcaa; } .token-variable { color: #4ec9b0; } </style> </head> <body> <div class="toolbar"> <button class="copy-btn" id="maximizeButton">Maximize ↕</button> <button class="copy-btn" id="copyButton">Copy</button> </div> <!-- Hidden editor (used internally, not visible) --> <div class="editor-container"> <textarea id="codeInput"></textarea> </div> <div class="code-container"> <pre><code id="codeBlock"></code></pre> </div> <script> // ==================================================================== (function () { var button = document.getElementById("copyButton"); var maximizeButton = document.getElementById("maximizeButton"); var codeContainer = document.querySelector(".code-container"); var codeElement = document.getElementById("codeBlock"); var inputElement = document.getElementById("codeInput"); var currentSnippet = CODE_SNIPPET; var isMaximized = false; function escapeHtml(str) { return str .replace(/&/g, "&") .replace(/</g, "<") .replace(/>/g, ">") .replace(/"/g, """); } function highlightCode(code) { var out = ""; var i = 0; var len = code.length; function isDigit(ch) { return ch >= "0" && ch <= "9"; } function isIdentifierStart(ch) { return (ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z") || ch === "_"; } function isIdentifierPart(ch) { return isIdentifierStart(ch) || isDigit(ch); } while (i < len) { var ch = code[i]; // Strings: distinguish keys vs string values if (ch === '"') { var start = i; var j = i + 1; var escaped = false; while (j < len) { var c = code[j]; if (!escaped && c === "\\") { escaped = true; j++; continue; } if (!escaped && c === '"') { j++; break; } escaped = false; j++; } var str = code.slice(start, j); // Look ahead to see if this string is a key (string followed by :) var k = j; while (k < len && /\s/.test(code[k])) k++; var isKey = code[k] === ":"; if (isKey) { out += '<span class="token-key">' + escapeHtml(str) + '</span>'; } else { out += '<span class="token-string">' + escapeHtml(str) + '</span>'; } i = j; continue; } // Numbers if (isDigit(ch) || (ch === "-" && i + 1 < len && isDigit(code[i + 1]))) { var nStart = i; var n = i + 1; while (n < len && (isDigit(code[n]) || code[n] === ".")) { n++; } var num = code.slice(nStart, n); out += '<span class="token-number">' + escapeHtml(num) + '</span>'; i = n; continue; } // Identifiers (variables, booleans, functions) if (isIdentifierStart(ch)) { var idStart = i; var t = i + 1; while (t < len && isIdentifierPart(code[t])) { t++; } var ident = code.slice(idStart, t); // Look ahead for function call var u = t; while (u < len && /\s/.test(code[u])) u++; var isFunc = code[u] === "("; if (ident === "true" || ident === "false") { out += '<span class="token-boolean">' + escapeHtml(ident) + '</span>'; } else if (isFunc) { out += '<span class="token-function">' + escapeHtml(ident) + '</span>'; } else { out += '<span class="token-variable">' + escapeHtml(ident) + '</span>'; } i = t; continue; } // Punctuation if ("{}[],:".indexOf(ch) !== -1) { out += '<span class="token-punctuation">' + escapeHtml(ch) + '</span>'; i++; continue; } // Everything else out += escapeHtml(ch); i++; } return out; } function renderCode(code) { codeElement.innerHTML = highlightCode(code); // Check if content needs scrolling after a brief moment to let rendering complete setTimeout(function() { var needsScroll = codeContainer.scrollHeight > codeContainer.clientHeight; if (needsScroll) { // Content is larger than container, show maximize button maximizeButton.style.display = "block"; } else { // Content fits, hide maximize button and adjust container height maximizeButton.style.display = "none"; codeContainer.style.maxHeight = "none"; codeContainer.classList.add("maximized"); } }, 10); } function copyText(text) { // Try modern Clipboard API first, but catch permission errors if (navigator.clipboard && navigator.clipboard.writeText) { return navigator.clipboard.writeText(text).catch(function() { // Fallback to execCommand if Clipboard API is blocked return fallbackCopy(text); }); } // Use fallback directly if Clipboard API is not available return fallbackCopy(text); } function fallbackCopy(text) { var textarea = document.createElement("textarea"); textarea.value = text; textarea.style.position = "fixed"; textarea.style.opacity = "0"; document.body.appendChild(textarea); textarea.select(); try { var success = document.execCommand("copy"); document.body.removeChild(textarea); return success ? Promise.resolve() : Promise.reject(new Error("Copy failed")); } catch (err) { document.body.removeChild(textarea); return Promise.reject(err); } } button.addEventListener("click", function () { copyText(currentSnippet).then(function () { var original = button.textContent; button.textContent = "Copied!"; setTimeout(function () { button.textContent = original; }, 1500); }).catch(function (err) { console.error("Copy failed:", err); var original = button.textContent; button.textContent = "Copy failed"; setTimeout(function () { button.textContent = original; }, 1500); }); }); maximizeButton.addEventListener("click", function () { isMaximized = !isMaximized; if (isMaximized) { codeContainer.style.maxHeight = "none"; maximizeButton.textContent = "Minimize ↕"; } else { codeContainer.style.maxHeight = "300px"; maximizeButton.textContent = "Maximize ↕"; } }); // Initial render from CODE_SNIPPET inputElement.value = CODE_SNIPPET; renderCode(CODE_SNIPPET); // External API: call window.setCodeBlock("...") to update from outside window.setCodeBlock = function (newCode) { currentSnippet = String(newCode || ""); inputElement.value = currentSnippet; renderCode(currentSnippet); }; })(); </script> </body> </html>8Views0likes1CommentCONTINUE Divider Block Not Working All of A Sudden
I'm hoping someone can get me a quick answer as I'm working with a tight deadline. I have a RISE lesson with multiple Storyline blocks separated by a CONTINUE divider. Each Storyline block ends with a COMPLETE LESSON block that activates the CONTINUE button which is set to complete block directly above. Up until about 2 hours ago, it was working fine. Now, the continue button activates when I click COMPLETE LESSON in the Storyline Block, but when I click the divider it jumps me backwards to the last page of the Storyline block. I checked my settings in Storyline. They're fine. This is happening on all of the lessons now. Is this a glitch? Please help.Solved187Views6likes11CommentsCustom Blocks Questions
I am loving the custom blocks feature! I have two questions about it. I am using one of the templates and replaced one of the graphics with a graphic of quotation marks. They are currently dark blue and I'd like to change the color but don't see how to. Is there a way to change the color of graphics downloaded from your library? I created a custom block I'd like to use throughout my course. Is there a way to save them and reuse? Thanks! CindySolved68Views0likes4Comments