corrade-nucleus-nucleons – Rev 28
?pathlinks?
<div id="script-kiddie">
<!-- Script Kiddie style. -->
<link href="/script-kiddie/css/style.css" rel="stylesheet" type="text/css">
<!-- Bootstrap Toggle -->
<link href="/script-kiddie/node_modules/bootstrap-toggle/css/bootstrap-toggle.min.css" rel="stylesheet" type="text/css">
<!-- Dialog Modal -->
<div id="script-kiddie-avatar-select" class="modal fade bs-example-modal-lg" role="dialog">
<div class="modal-dialog modal-lg">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h1 class="modal-title">Avatar Selection</h1>
</div>
<form class="form-inline" data-toggle="validator" onSubmit="event.preventDefault();">
<div class="modal-body">
<p>Please enter the avatar firstname and lastname to send the script to.</p>
<div class="form-group has-feedback">
<label for="script-kiddie-avatar-firstname">First Name</label>
<input id="script-kiddie-avatar-firstname" type="text" class="form-control" aria-describedby="basic-addon1" required>
<label for="script-kiddie-avatar-lastname">Last Name</label>
<input id="script-kiddie-avatar-lastname" type="text" class="form-control" aria-describedby="basic-addon1" required>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button id="script-kiddie-send-script" type="submit" class="btn btn-primary">Confirm</button>
</div>
</form>
</div>
</div>
</div>
<div class="panel panel-default draggable movable">
<div class="panel-heading">
<button type="button" class="close" data-target="#script-kiddie" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<form id="script-kiddie-script-tools" data-toggle="validator" onSubmit="event.preventDefault();">
<div class="form-group">
<button id="script-kiddie-compile-script" class="btn btn-default check-image checkButton" type="button" title="Compile script.">Compile</button>
<button id="script-kiddie-tidy-script" class="btn btn-default" type="button" title="Tidy source-code.">Cleanup</button>
</div>
<div class="form-group has-feedback">
<div class="input-group">
<span class="input-group-btn">
<input id="script-kiddie-store-script" type="checkbox" data-toggle="toggle" data-on="Store" data-off="No Store" data-onstyle="success" disabled="disabled">
</span>
<input id="script-kiddie-script-name" type="text" class="form-control" placeholder="Script Name" aria-describedby="basic-addon1" required>
<span class="input-group-addon">-</span>
<input id="script-kiddie-script-UUID" type="text" class="form-control" aria-describedby="basic-addon2" size="36">
<span class="input-group-btn">
<button id="script-kiddie-give-script" class="btn btn-default" type="button" title="Give script." disabled="disabled">Give</button>
</span>
</div>
</div>
</form>
</div>
<div class="panel-body">
<div id="script-kiddie-editor" style="height: 500px;">default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}
</div>
<div>
<textarea id="script-kiddie-message" class="form-control" rows="5" style="min-width: 100%; max-width: 100%; font-family: monospace; display: none;" readonly></textarea>
</div>
</div>
</div>
<!-- Bootstrap Javascript -->
<script src="/node_modules/bootstrap/dist/js/bootstrap.min.js" type="text/javascript"></script>
<!-- Bootstrap Validator -->
<script src="/node_modules/bootstrap-validator/dist/validator.min.js" type="text/javascript"></script>
<!-- Bootstrap Toggle -->
<script src="/script-kiddie/node_modules/bootstrap-toggle/js/bootstrap-toggle.min.js" type="text/javascript"></script>
<!-- ACE -->
<script src="/script-kiddie/node_modules/ace-builds/src-min-noconflict/ace.js" type="text/javascript"></script>
<script src="/script-kiddie/node_modules/ace-builds/src-min-noconflict/ext-language_tools.js" type="text/javascript"></script>
<!-- Beautify.JS -->
<script src="/script-kiddie/node_modules/js-beautify/js/lib/beautify.js" type="text/javascript"></script>
<!-- Velocity -->
<script src="/script-kiddie/node_modules/velocity-animate/velocity.min.js" type="text/javascript"></script>
<script>
$(document).ready(() => {
// Auto-complete.
ace.require("ace/ext/language_tools");
// Create the editor.
var editor = ace.edit("script-kiddie-editor");
editor.setTheme("ace/theme/twilight");
editor.getSession().setMode("ace/mode/lsl");
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: false,
enableLiveAutocompletion: true
});
// Get the script from the storage.
var storeScriptText = localStorage.getItem('nucleus-script-kiddie-script-body');
if (typeof storeScriptText == "string")
editor.getSession().setValue(storeScriptText);
function compile(lsl, callback) {
// Set the editor to read-only.
editor.setReadOnly(true);
// Set the button image.
$('#script-kiddie-compile-script').removeClass("check-image");
$('#script-kiddie-compile-script').removeClass("checkButton");
$('#script-kiddie-compile-script').removeClass("cross-image");
$('#script-kiddie-compile-script').removeClass("crossButton");
$('#script-kiddie-compile-script').addClass("activity-image");
$('#script-kiddie-compile-script').addClass("activityButton");
$.ajax({
type: 'POST',
url: '/',
data: {
command: 'compilescript',
data: lsl
},
dataType: 'json'
}).done(function(response) {
var success = response.success === "True";
// Set the editor to read-enabled.
editor.setReadOnly(false);
if(success) {
// Set the button image.
$('#script-kiddie-compile-script').removeClass("activity-image");
$('#script-kiddie-compile-script').removeClass("activityButton");
$('#script-kiddie-compile-script').addClass("check-image");
$('#script-kiddie-compile-script').addClass("checkButton");
$("#script-kiddie-message").velocity("slideUp", {
duration: 1000
});
callback(success);
return;
}
// Move panel to top.
$('#script-kiddie-error-panel').css('z-index', getTopWindowIndex() + 1);
$('#script-kiddie-error-panel').css('position', 'relative');
// Set the button image.
$('#script-kiddie-compile-script').removeClass("activity-image");
$('#script-kiddie-compile-script').removeClass("activityButton");
$('#script-kiddie-compile-script').addClass("cross-image");
$('#script-kiddie-compile-script').addClass("crossButton");
$("#script-kiddie-message").velocity("slideDown", {
duration: 1000
});
$('#script-kiddie-message').val(wasCSVToArray(response.data).join(''));
callback(success);
});
}
function store(lsl, callback) {
$.ajax({
type: 'POST',
url: '/',
data: {
command: 'updatescript',
create: true,
type: 'agent',
entity: 'text',
item: $('#script-kiddie-script-UUID').val(),
target: $('#script-kiddie-script-name').val(),
data: lsl
},
dataType: 'json'
}).done(function(response) {
var success = response.success === "True";
if(success) {
// Get the response data and item UUID.
var data = wasCSVToArray(response.data);
var UUID = data[data.indexOf('item') + 1];
// Set the inventory UUID of the saved script.
$('#script-kiddie-script-UUID').val(UUID);
localStorage.setItem('nucleus-script-kiddie-script-UUID', UUID);
}
callback(success);
});
}
// Add compiling with Ctrl-S
editor.commands.addCommand({
name: 'Compile',
bindKey: {
win: 'Ctrl-S',
mac: 'Command-S'
},
exec: editor => {
var data = editor.getSession().getValue();
// Store locally on save.
localStorage.setItem('nucleus-script-kiddie-script-body', data);
compile(data, (success) => {
// Script did not compile so do not store.
if(!success)
return;
// Storing is not enabled so return.
if($('#script-kiddie-store-script').prop('checked') !== true)
return;
store(data, (success) => {
// Script was stored successfully.
//alert("Script stored succssfully.");
});
});
},
readOnly: false // false if this command should not apply in readOnly mode
});
// Add click listener for compile button.
$('#script-kiddie-compile-script').on('click', function (e) {
if($('#script-kiddie-compile-script').hasClass("activity-image"))
return;
var data = editor.getSession().getValue();
compile(data, (success) => {});
if($('#script-kiddie-store-script').prop('checked') === true)
store(data);
});
// Add click listener for tidy button.
$('#script-kiddie-tidy-script').on('click', function (e) {
if($('#script-kiddie-compile-script').hasClass("activity-image"))
return;
// Code cleanup parameters.
editor.setValue(
js_beautify(
editor.getSession().getValue(),
{
"indent_size": 4,
"indent_char": " ",
"indent_with_tabs": false,
"eol": "\n",
"end_with_newline": true,
"indent_level": 0,
"preserve_newlines": true,
"max_preserve_newlines": 10,
"space_in_paren": false,
"space_in_empty_paren": false,
"jslint_happy": false,
"space_after_anon_function": false,
"brace_style": "expand",
"break_chained_methods": false,
"keep_array_indentation": false,
"unescape_strings": false,
"wrap_line_length": 0,
"e4x": false,
"comma_first": false,
"operator_position": "before-newline"
}
)
);
});
function give(firstname, lastname, callback) {
$.ajax({
type: 'POST',
url: '/',
data: {
command: 'give',
entity: 'avatar',
item: $('#script-kiddie-script-UUID').val(),
firstname: firstname,
lastname: lastname,
permissions: 'c--mvt------------c--mvtc--mvt'
},
dataType: 'json'
}).done(function(response) {
callback(response);
});
}
// Add click listener for give button.
$('#script-kiddie-give-script').on('click', function (e) {
if($('#script-kiddie-compile-script').hasClass("activity-image"))
return;
// Show the popup.
$('#script-kiddie-avatar-select').modal('show');
});
// Add click listener to modal confirmation.
$('#script-kiddie-send-script').on('click', function(e) {
// Hide the popup.
$('#script-kiddie-avatar-select').modal('hide');
// Disable give button.
$('#script-kiddie-give-script').attr('disabled', true);
give($('#script-kiddie-avatar-firstname').val(), $('#script-kiddie-avatar-lastname').val(), (response) => {
// Enable give button.
$('#script-kiddie-give-script').attr('disabled', false);
});
})
// Save script on change.
editor.getSession().on('change', function(e) {
localStorage.setItem('nucleus-script-kiddie-script-body', editor.getSession().getValue());
});
// Get the item name from the storage.
var storeScriptUUID = localStorage.getItem('nucleus-script-kiddie-script-UUID');
if (typeof storeScriptUUID == "string")
$('#script-kiddie-script-UUID').val(storeScriptUUID);
// Get the item name from the storage.
var storeScriptName = localStorage.getItem('nucleus-script-kiddie-script-name');
if (typeof storeScriptName == "string")
$('#script-kiddie-script-name').val(storeScriptName);
// Store script name on modification.
var scriptNameTimerID;
$('#script-kiddie-script-name').on('input',function(e){
var value = $(this).val();
if($(this).data('lastval')!= value){
$(this).data('lastval',value);
clearTimeout(scriptNameTimerID);
scriptNameTimerID = setTimeout(function() {
localStorage.setItem('nucleus-script-kiddie-script-name', value);
},500);
};
});
// Enable storing of script only if the form validates.
$('#script-kiddie-script-tools').on('validated.bs.validator', function (e) {
if($('#script-kiddie-script-tools').has('.has-error').length !== 0) {
$('#script-kiddie-store-script').bootstrapToggle('off');
$('#script-kiddie-store-script').bootstrapToggle('disable');
return;
}
$('#script-kiddie-store-script').bootstrapToggle('enable');
});
$('#script-kiddie-store-script').change(function() {
switch($('#script-kiddie-store-script').prop('checked'))
{
case true:
// Disable script name and UUID.
$('#script-kiddie-script-name').attr('disabled', true);
$('#script-kiddie-script-UUID').attr('disabled', true);
var data = editor.getSession().getValue();
// Store locally on save.
localStorage.setItem('nucleus-script-kiddie-script-body', data);
$('#script-kiddie-give-script').attr('disabled', true);
compile(data, (success) => {
store(data, (success) => {
// Script was stored successfully.
// Enable the give button.
$('#script-kiddie-give-script').attr('disabled', false);
});
});
break;
default:
// Enable script name and UUID.
$('#script-kiddie-script-name').attr('disabled', false);
$('#script-kiddie-script-UUID').attr('disabled', false);
// Disable the give button.
$('#script-kiddie-give-script').attr('disabled', true);
break;
}
});
});
</script>
</div>