corrade-nucleus-nucleons – Blame information for rev 28

Subversion Repositories:
Rev:
Rev Author Line No. Line
28 office 1 <div id="script-kiddie">
2 office 2 <!-- Script Kiddie style. -->
3 <link href="/script-kiddie/css/style.css" rel="stylesheet" type="text/css">
4  
5 <!-- Bootstrap Toggle -->
20 office 6 <link href="/script-kiddie/node_modules/bootstrap-toggle/css/bootstrap-toggle.min.css" rel="stylesheet" type="text/css">
2 office 7  
8 <!-- Dialog Modal -->
28 office 9 <div id="script-kiddie-avatar-select" class="modal fade bs-example-modal-lg" role="dialog">
2 office 10 <div class="modal-dialog modal-lg">
11 <!-- Modal content-->
12  
13 <div class="modal-content">
14 <div class="modal-header">
15 <button type="button" class="close" data-dismiss="modal">&times;</button>
16  
28 office 17 <h1 class="modal-title">Avatar Selection</h1>
2 office 18 </div>
19  
28 office 20 <form class="form-inline" data-toggle="validator" onSubmit="event.preventDefault();">
21 <div class="modal-body">
6 office 22 <p>Please enter the avatar firstname and lastname to send the script to.</p>
23 <div class="form-group has-feedback">
28 office 24 <label for="script-kiddie-avatar-firstname">First Name</label>
25 <input id="script-kiddie-avatar-firstname" type="text" class="form-control" aria-describedby="basic-addon1" required>
26 <label for="script-kiddie-avatar-lastname">Last Name</label>
27 <input id="script-kiddie-avatar-lastname" type="text" class="form-control" aria-describedby="basic-addon1" required>
2 office 28 </div>
29 </div>
30 <div class="modal-footer">
31 <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
28 office 32 <button id="script-kiddie-send-script" type="submit" class="btn btn-primary">Confirm</button>
2 office 33 </div>
6 office 34 </form>
2 office 35 </div>
36 </div>
37 </div>
38  
28 office 39 <div class="panel panel-default draggable movable">
2 office 40 <div class="panel-heading">
28 office 41 <button type="button" class="close" data-target="#script-kiddie" data-dismiss="alert"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
42 <form id="script-kiddie-script-tools" data-toggle="validator" onSubmit="event.preventDefault();">
6 office 43 <div class="form-group">
28 office 44 <button id="script-kiddie-compile-script" class="btn btn-default check-image checkButton" type="button" title="Compile script.">Compile</button>
45 <button id="script-kiddie-tidy-script" class="btn btn-default" type="button" title="Tidy source-code.">Cleanup</button>
6 office 46  
2 office 47 </div>
48 <div class="form-group has-feedback">
49 <div class="input-group">
50 <span class="input-group-btn">
28 office 51 <input id="script-kiddie-store-script" type="checkbox" data-toggle="toggle" data-on="Store" data-off="No Store" data-onstyle="success" disabled="disabled">
2 office 52 </span>
28 office 53 <input id="script-kiddie-script-name" type="text" class="form-control" placeholder="Script Name" aria-describedby="basic-addon1" required>
2 office 54 <span class="input-group-addon">-</span>
28 office 55 <input id="script-kiddie-script-UUID" type="text" class="form-control" aria-describedby="basic-addon2" size="36">
6 office 56 <span class="input-group-btn">
28 office 57 <button id="script-kiddie-give-script" class="btn btn-default" type="button" title="Give script." disabled="disabled">Give</button>
6 office 58 </span>
2 office 59 </div>
60 </div>
61 </form>
62 </div>
28 office 63 <div class="panel-body">
64 <div id="script-kiddie-editor" style="height: 500px;">default
2 office 65 {
66 state_entry()
67 {
68 llSay(0, "Hello, Avatar!");
69 }
70  
71 touch_start(integer total_number)
72 {
73 llSay(0, "Touched.");
74 }
75 }
76 </div>
28 office 77 <div>
78 <textarea id="script-kiddie-message" class="form-control" rows="5" style="min-width: 100%; max-width: 100%; font-family: monospace; display: none;" readonly></textarea>
2 office 79 </div>
80 </div>
81 </div>
82  
83 <!-- Bootstrap Javascript -->
20 office 84 <script src="/node_modules/bootstrap/dist/js/bootstrap.min.js" type="text/javascript"></script>
2 office 85 <!-- Bootstrap Validator -->
20 office 86 <script src="/node_modules/bootstrap-validator/dist/validator.min.js" type="text/javascript"></script>
2 office 87 <!-- Bootstrap Toggle -->
20 office 88 <script src="/script-kiddie/node_modules/bootstrap-toggle/js/bootstrap-toggle.min.js" type="text/javascript"></script>
2 office 89 <!-- ACE -->
20 office 90 <script src="/script-kiddie/node_modules/ace-builds/src-min-noconflict/ace.js" type="text/javascript"></script>
91 <script src="/script-kiddie/node_modules/ace-builds/src-min-noconflict/ext-language_tools.js" type="text/javascript"></script>
2 office 92 <!-- Beautify.JS -->
20 office 93 <script src="/script-kiddie/node_modules/js-beautify/js/lib/beautify.js" type="text/javascript"></script>
2 office 94 <!-- Velocity -->
20 office 95 <script src="/script-kiddie/node_modules/velocity-animate/velocity.min.js" type="text/javascript"></script>
2 office 96 <script>
97 $(document).ready(() => {
98 // Auto-complete.
99 ace.require("ace/ext/language_tools");
100  
101 // Create the editor.
28 office 102 var editor = ace.edit("script-kiddie-editor");
2 office 103 editor.setTheme("ace/theme/twilight");
104 editor.getSession().setMode("ace/mode/lsl");
105 editor.setOptions({
106 enableBasicAutocompletion: true,
107 enableSnippets: false,
108 enableLiveAutocompletion: true
109 });
110  
111 // Get the script from the storage.
6 office 112 var storeScriptText = localStorage.getItem('nucleus-script-kiddie-script-body');
113 if (typeof storeScriptText == "string")
2 office 114 editor.getSession().setValue(storeScriptText);
115  
6 office 116 function compile(lsl, callback) {
2 office 117 // Set the editor to read-only.
118 editor.setReadOnly(true);
119  
120 // Set the button image.
28 office 121 $('#script-kiddie-compile-script').removeClass("check-image");
122 $('#script-kiddie-compile-script').removeClass("checkButton");
2 office 123  
28 office 124 $('#script-kiddie-compile-script').removeClass("cross-image");
125 $('#script-kiddie-compile-script').removeClass("crossButton");
2 office 126  
28 office 127 $('#script-kiddie-compile-script').addClass("activity-image");
128 $('#script-kiddie-compile-script').addClass("activityButton");
2 office 129  
130 $.ajax({
131 type: 'POST',
132 url: '/',
133 data: {
134 command: 'compilescript',
135 data: lsl
136 },
137 dataType: 'json'
138 }).done(function(response) {
6 office 139 var success = response.success === "True";
2 office 140 // Set the editor to read-enabled.
141 editor.setReadOnly(false);
142  
6 office 143 if(success) {
2 office 144 // Set the button image.
28 office 145 $('#script-kiddie-compile-script').removeClass("activity-image");
146 $('#script-kiddie-compile-script').removeClass("activityButton");
2 office 147  
28 office 148 $('#script-kiddie-compile-script').addClass("check-image");
149 $('#script-kiddie-compile-script').addClass("checkButton");
2 office 150  
28 office 151 $("#script-kiddie-message").velocity("slideUp", {
2 office 152 duration: 1000
153 });
6 office 154 callback(success);
2 office 155 return;
156 }
157  
158 // Move panel to top.
28 office 159 $('#script-kiddie-error-panel').css('z-index', getTopWindowIndex() + 1);
160 $('#script-kiddie-error-panel').css('position', 'relative');
2 office 161  
162 // Set the button image.
28 office 163 $('#script-kiddie-compile-script').removeClass("activity-image");
164 $('#script-kiddie-compile-script').removeClass("activityButton");
2 office 165  
28 office 166 $('#script-kiddie-compile-script').addClass("cross-image");
167 $('#script-kiddie-compile-script').addClass("crossButton");
2 office 168  
28 office 169 $("#script-kiddie-message").velocity("slideDown", {
2 office 170 duration: 1000
171 });
172  
28 office 173 $('#script-kiddie-message').val(wasCSVToArray(response.data).join(''));
6 office 174 callback(success);
2 office 175 });
176 }
177  
6 office 178 function store(lsl, callback) {
2 office 179 $.ajax({
180 type: 'POST',
181 url: '/',
182 data: {
6 office 183 command: 'updatescript',
184 create: true,
185 type: 'agent',
186 entity: 'text',
28 office 187 item: $('#script-kiddie-script-UUID').val(),
188 target: $('#script-kiddie-script-name').val(),
6 office 189 data: lsl
2 office 190 },
191 dataType: 'json'
192 }).done(function(response) {
6 office 193 var success = response.success === "True";
194 if(success) {
195 // Get the response data and item UUID.
2 office 196 var data = wasCSVToArray(response.data);
197 var UUID = data[data.indexOf('item') + 1];
198  
199 // Set the inventory UUID of the saved script.
28 office 200 $('#script-kiddie-script-UUID').val(UUID);
2 office 201  
202 localStorage.setItem('nucleus-script-kiddie-script-UUID', UUID);
203 }
6 office 204 callback(success);
2 office 205 });
206 }
207  
208 // Add compiling with Ctrl-S
209 editor.commands.addCommand({
210 name: 'Compile',
211 bindKey: {
212 win: 'Ctrl-S',
213 mac: 'Command-S'
214 },
215 exec: editor => {
216 var data = editor.getSession().getValue();
6 office 217 // Store locally on save.
218 localStorage.setItem('nucleus-script-kiddie-script-body', data);
219  
220 compile(data, (success) => {
221 // Script did not compile so do not store.
222 if(!success)
223 return;
224  
225 // Storing is not enabled so return.
28 office 226 if($('#script-kiddie-store-script').prop('checked') !== true)
6 office 227 return;
228  
229 store(data, (success) => {
230 // Script was stored successfully.
231 //alert("Script stored succssfully.");
232 });
233 });
234  
2 office 235 },
236 readOnly: false // false if this command should not apply in readOnly mode
237 });
238  
239 // Add click listener for compile button.
28 office 240 $('#script-kiddie-compile-script').on('click', function (e) {
241 if($('#script-kiddie-compile-script').hasClass("activity-image"))
2 office 242 return;
243  
244 var data = editor.getSession().getValue();
20 office 245 compile(data, (success) => {});
28 office 246 if($('#script-kiddie-store-script').prop('checked') === true)
2 office 247 store(data);
248 });
249  
250 // Add click listener for tidy button.
28 office 251 $('#script-kiddie-tidy-script').on('click', function (e) {
252 if($('#script-kiddie-compile-script').hasClass("activity-image"))
2 office 253 return;
254  
255 // Code cleanup parameters.
256 editor.setValue(
257 js_beautify(
258 editor.getSession().getValue(),
259 {
260 "indent_size": 4,
261 "indent_char": " ",
262 "indent_with_tabs": false,
263 "eol": "\n",
264 "end_with_newline": true,
265 "indent_level": 0,
266 "preserve_newlines": true,
267 "max_preserve_newlines": 10,
268 "space_in_paren": false,
269 "space_in_empty_paren": false,
270 "jslint_happy": false,
271 "space_after_anon_function": false,
272 "brace_style": "expand",
273 "break_chained_methods": false,
274 "keep_array_indentation": false,
275 "unescape_strings": false,
276 "wrap_line_length": 0,
277 "e4x": false,
278 "comma_first": false,
279 "operator_position": "before-newline"
280 }
281 )
282 );
283 });
284  
6 office 285 function give(firstname, lastname, callback) {
286 $.ajax({
287 type: 'POST',
288 url: '/',
289 data: {
290 command: 'give',
291 entity: 'avatar',
28 office 292 item: $('#script-kiddie-script-UUID').val(),
6 office 293 firstname: firstname,
294 lastname: lastname,
295 permissions: 'c--mvt------------c--mvtc--mvt'
296 },
297 dataType: 'json'
298 }).done(function(response) {
299 callback(response);
300 });
301 }
302  
303 // Add click listener for give button.
28 office 304 $('#script-kiddie-give-script').on('click', function (e) {
305 if($('#script-kiddie-compile-script').hasClass("activity-image"))
6 office 306 return;
307  
308 // Show the popup.
28 office 309 $('#script-kiddie-avatar-select').modal('show');
6 office 310 });
311  
312 // Add click listener to modal confirmation.
28 office 313 $('#script-kiddie-send-script').on('click', function(e) {
6 office 314 // Hide the popup.
28 office 315 $('#script-kiddie-avatar-select').modal('hide');
6 office 316  
317 // Disable give button.
28 office 318 $('#script-kiddie-give-script').attr('disabled', true);
319 give($('#script-kiddie-avatar-firstname').val(), $('#script-kiddie-avatar-lastname').val(), (response) => {
6 office 320 // Enable give button.
28 office 321 $('#script-kiddie-give-script').attr('disabled', false);
6 office 322 });
323 })
324  
2 office 325 // Save script on change.
326 editor.getSession().on('change', function(e) {
6 office 327 localStorage.setItem('nucleus-script-kiddie-script-body', editor.getSession().getValue());
2 office 328 });
329  
330 // Get the item name from the storage.
331 var storeScriptUUID = localStorage.getItem('nucleus-script-kiddie-script-UUID');
332 if (typeof storeScriptUUID == "string")
28 office 333 $('#script-kiddie-script-UUID').val(storeScriptUUID);
2 office 334  
335 // Get the item name from the storage.
336 var storeScriptName = localStorage.getItem('nucleus-script-kiddie-script-name');
337 if (typeof storeScriptName == "string")
28 office 338 $('#script-kiddie-script-name').val(storeScriptName);
2 office 339  
340 // Store script name on modification.
341 var scriptNameTimerID;
28 office 342 $('#script-kiddie-script-name').on('input',function(e){
2 office 343 var value = $(this).val();
344 if($(this).data('lastval')!= value){
345  
6 office 346 $(this).data('lastval',value);
2 office 347 clearTimeout(scriptNameTimerID);
348  
349 scriptNameTimerID = setTimeout(function() {
350 localStorage.setItem('nucleus-script-kiddie-script-name', value);
351 },500);
352 };
353 });
354  
355 // Enable storing of script only if the form validates.
28 office 356 $('#script-kiddie-script-tools').on('validated.bs.validator', function (e) {
357 if($('#script-kiddie-script-tools').has('.has-error').length !== 0) {
358 $('#script-kiddie-store-script').bootstrapToggle('off');
359 $('#script-kiddie-store-script').bootstrapToggle('disable');
2 office 360 return;
361 }
28 office 362 $('#script-kiddie-store-script').bootstrapToggle('enable');
2 office 363 });
364  
28 office 365 $('#script-kiddie-store-script').change(function() {
366 switch($('#script-kiddie-store-script').prop('checked'))
6 office 367 {
368 case true:
369 // Disable script name and UUID.
28 office 370 $('#script-kiddie-script-name').attr('disabled', true);
371 $('#script-kiddie-script-UUID').attr('disabled', true);
6 office 372  
373 var data = editor.getSession().getValue();
374 // Store locally on save.
375 localStorage.setItem('nucleus-script-kiddie-script-body', data);
376  
28 office 377 $('#script-kiddie-give-script').attr('disabled', true);
6 office 378 compile(data, (success) => {
379 store(data, (success) => {
380 // Script was stored successfully.
381 // Enable the give button.
28 office 382 $('#script-kiddie-give-script').attr('disabled', false);
6 office 383 });
384 });
385 break;
386 default:
387 // Enable script name and UUID.
28 office 388 $('#script-kiddie-script-name').attr('disabled', false);
389 $('#script-kiddie-script-UUID').attr('disabled', false);
6 office 390  
391 // Disable the give button.
28 office 392 $('#script-kiddie-give-script').attr('disabled', true);
6 office 393 break;
394 }
395 });
2 office 396  
397 });
398 </script>
28 office 399 </div>