Error Showing Content - please login as admin for details.
Error Showing Content - please login as admin for details.
#4 Call Toolbars Commands from JavaScript
2sxc UI - cms.run commands
In some cases you need to call a CMS command without using the toolbar - like in SPAs and in situations where a normal HTML button should call edit.
You can also use this to trigger Workflows (new in 12.10).
You can register custom before
and after
code to run, change specs or prevent the action from executing.
Read the workflow docs or the
toolbar docs to learn more about this.
Important: Usually only editors see these toolbars - so saving won't work.
Hover over the various boxes to see the result - like this:
Important: The feature "Public Use of Edit Form" is disabled
The feature is needed for anonymous users to use the Edit Form. Register your site here https://patrons.2sxc.org/ to get access to the feature.
Simple Setup, Custom Link
The following command will open an edit dialog.
When you click it and close the dialog again, the page will
not refresh.
Instead, you'll see console messages that a custom JS took over the process.
👉 Run open command
More Stuff
You can do much more - like change icons, call call-parameters etc.
Read the
how-to and the
specs for this.
#4 Call Toolbars Commands from JavaScript
@inherits Custom.Hybrid.Razor14
<!-- unimportant stuff, hidden -->
<h2>Simple Setup, Custom Link</h2>
<div class="alert alert-primary" style="width: 50%;">
The following command will open an edit dialog.
When you click it and close the dialog again, the page will <em>not refresh</em>. <br>
Instead, you'll see console messages that a custom JS took over the process. <br>
<a href="#" onclick="openAndCancelRefreshAfterwards(this, 'new', { contentType: 'UiEmptyHelloWorld'})">👉 Run open command</a>
</div>
<script>
function openAndCancelRefreshAfterwards(tag, action, params) {
// This workflow step will run on every action, just to log what's happening
const workflowToLog = {
command: 'all', // Run on every command/action
phase: 'all', // Run before and after
code: (wfArgs) => {
console.log("Toolbar asked to to something - here are the details.", wfArgs);
}
}
// This is the workflow step we will register to stop page refresh
const workflowToDisableRefresh = {
command: 'refresh', // The command name it's for
phase: 'before', // The workflow-step should run before the command is executed
code: (wfArgs) => { // The code which should be run
console.log('Toolbar asked to refresh, will return false to stop it. These are the arguments we got.', wfArgs);
return false; // Return false to stop this command from happening
}
};
$2sxc.cms.run({ tag: tag, action: action, params: params, workflows: [workflowToLog, workflowToDisableRefresh]})
.then(function(data) {
console.log("after run", data);
return false;
});
}
</script>
<!-- unimportant stuff, hidden -->
<!-- unimportant stuff, hidden -->