Added templates and static files for editor
This commit is contained in:
		
							
								
								
									
										2
									
								
								ref-test/app/editor/static/js/jquery-3.6.0.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								ref-test/app/editor/static/js/jquery-3.6.0.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										233
									
								
								ref-test/app/editor/static/js/script.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								ref-test/app/editor/static/js/script.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,233 @@
 | 
			
		||||
// Menu Highlight Scripts
 | 
			
		||||
const menuItems = document.getElementsByClassName('nav-link');
 | 
			
		||||
for(let i = 0; i < menuItems.length; i++) {
 | 
			
		||||
    if(menuItems[i].pathname == window.location.pathname) {
 | 
			
		||||
        menuItems[i].classList.add('active');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
const dropdownItems = document.getElementsByClassName('dropdown-item');
 | 
			
		||||
for(let i = 0; i< dropdownItems.length; i++) {
 | 
			
		||||
    if(dropdownItems[i].pathname == window.location.pathname) {
 | 
			
		||||
        dropdownItems[i].classList.add('active');
 | 
			
		||||
        $( "#" + dropdownItems[i].id ).closest( '.dropdown' ).find('.dropdown-toggle').addClass('active');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// General Post Method Form Processing Script
 | 
			
		||||
$('form.form-post').submit(function(event) {
 | 
			
		||||
    
 | 
			
		||||
    var $form = $(this);
 | 
			
		||||
    var data = $form.serialize();
 | 
			
		||||
    var url = $(this).prop('action');
 | 
			
		||||
    var rel_success = $(this).data('rel-success');
 | 
			
		||||
 | 
			
		||||
    $.ajax({
 | 
			
		||||
        url: url,
 | 
			
		||||
        type: 'POST',
 | 
			
		||||
        data: data,
 | 
			
		||||
        dataType: 'json',
 | 
			
		||||
        success: function(response) {
 | 
			
		||||
            if (response.redirect_to) {
 | 
			
		||||
                window.location.href = response.redirect_to;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                window.location.href = rel_success;
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        error: function(response) {
 | 
			
		||||
            error_response(response);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Form Upload Questions - Special case, needs to handle files.
 | 
			
		||||
$('form[name=form-upload-questions]').submit(function(event) {
 | 
			
		||||
    
 | 
			
		||||
    var $form = $(this);
 | 
			
		||||
    var data = new FormData($form[0]);
 | 
			
		||||
    var file = $('input[name=data_file]')[0].files[0]
 | 
			
		||||
    data.append('file', file)
 | 
			
		||||
 | 
			
		||||
    $.ajax({
 | 
			
		||||
        url: window.location.pathname,
 | 
			
		||||
        type: 'POST',
 | 
			
		||||
        data: data,
 | 
			
		||||
        processData: false,
 | 
			
		||||
        contentType: false,
 | 
			
		||||
        success: function(response) {
 | 
			
		||||
            window.location.reload();
 | 
			
		||||
        },
 | 
			
		||||
        error: function(response) {
 | 
			
		||||
            error_response(response);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Edit and Delete Test Button Handlers
 | 
			
		||||
$('.test-action').click(function(event) {
 | 
			
		||||
    
 | 
			
		||||
    let id = $(this).data('id');
 | 
			
		||||
    let action = $(this).data('action');
 | 
			
		||||
 | 
			
		||||
    if (action == 'delete' || action == 'start' || action == 'end') {
 | 
			
		||||
        $.ajax({
 | 
			
		||||
            url: `/admin/tests/edit/`,
 | 
			
		||||
            type: 'POST',
 | 
			
		||||
            data: JSON.stringify({'id': id, 'action': action}), // TODO Change how CRUD operations work
 | 
			
		||||
            contentType: 'application/json',
 | 
			
		||||
            success: function(response) {
 | 
			
		||||
                window.location.href = '/admin/tests/';
 | 
			
		||||
            },
 | 
			
		||||
            error: function(response){
 | 
			
		||||
                error_response(response);
 | 
			
		||||
            },
 | 
			
		||||
        });
 | 
			
		||||
    } else if (action == 'edit') {
 | 
			
		||||
        window.location.href = `/admin/test/${id}/`
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Edit Dataset Button Handlers
 | 
			
		||||
$('.edit-question-dataset').click(function(event) {
 | 
			
		||||
    
 | 
			
		||||
    var filename = $(this).data('filename');
 | 
			
		||||
    var action = $(this).data('action');
 | 
			
		||||
    var disabled = $(this).hasClass('disabled');
 | 
			
		||||
 | 
			
		||||
    if ( !disabled ) {
 | 
			
		||||
        $.ajax({
 | 
			
		||||
            url: `/admin/settings/questions/${action}/`,
 | 
			
		||||
            type: 'POST',
 | 
			
		||||
            data: JSON.stringify({'filename': filename}),
 | 
			
		||||
            contentType: 'application/json',
 | 
			
		||||
            success: function(response) {
 | 
			
		||||
                window.location.reload();
 | 
			
		||||
            },
 | 
			
		||||
            error: function(response){
 | 
			
		||||
                error_response(response);
 | 
			
		||||
            },
 | 
			
		||||
        });
 | 
			
		||||
    };
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
function error_response(response) {
 | 
			
		||||
 | 
			
		||||
    const $alert = $("#alert-box");
 | 
			
		||||
    $alert.html('');
 | 
			
		||||
 | 
			
		||||
    if (typeof response.responseJSON.error === 'string' || response.responseJSON.error instanceof String) {
 | 
			
		||||
        $alert.html(`
 | 
			
		||||
        <div class="alert alert-danger alert-dismissible fade show" role="alert">
 | 
			
		||||
            <i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
 | 
			
		||||
            ${response.responseJSON.error}
 | 
			
		||||
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
			
		||||
        </div>
 | 
			
		||||
        `);
 | 
			
		||||
    } else if (response.responseJSON.error instanceof Array) {
 | 
			
		||||
        var output = ''
 | 
			
		||||
        for (var i = 0; i < response.responseJSON.error.length; i ++) {
 | 
			
		||||
            output += `
 | 
			
		||||
            <div class="alert alert-danger alert-dismissible fade show" role="alert">
 | 
			
		||||
                <i class="bi bi-exclamation-triangle-fill" title="Danger"></i>
 | 
			
		||||
                ${response.responseJSON.error[i]}
 | 
			
		||||
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
 | 
			
		||||
            </div>
 | 
			
		||||
            `;
 | 
			
		||||
            $alert.html(output);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    $alert.focus()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Dismiss Cookie Alert
 | 
			
		||||
$('#dismiss-cookie-alert').click(function(event){
 | 
			
		||||
 | 
			
		||||
    $.ajax({
 | 
			
		||||
        url: '/cookies/',
 | 
			
		||||
        type: 'POST',
 | 
			
		||||
        data: {
 | 
			
		||||
            time: Date.now()
 | 
			
		||||
        },
 | 
			
		||||
        dataType: 'json',
 | 
			
		||||
        success: function(response){
 | 
			
		||||
            console.log(response);
 | 
			
		||||
        },
 | 
			
		||||
        error: function(response){
 | 
			
		||||
            console.log(response);
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// Script for Result Actions
 | 
			
		||||
$('.result-action-buttons').click(function(event){
 | 
			
		||||
 | 
			
		||||
    var id = $(this).data('id');
 | 
			
		||||
 | 
			
		||||
    if ($(this).data('result-action') == 'generate') {
 | 
			
		||||
        $.ajax({
 | 
			
		||||
            url: '/admin/certificate/',
 | 
			
		||||
            type: 'POST',
 | 
			
		||||
            data: JSON.stringify({'id': id}),
 | 
			
		||||
            contentType: 'application/json',
 | 
			
		||||
            dataType: 'html',
 | 
			
		||||
            success: function(response) {
 | 
			
		||||
                var display_window = window.open();
 | 
			
		||||
                display_window.document.write(response);
 | 
			
		||||
            },
 | 
			
		||||
            error: function(response){
 | 
			
		||||
                error_response(response);
 | 
			
		||||
            },
 | 
			
		||||
        });
 | 
			
		||||
    } else {
 | 
			
		||||
        var action = $(this).data('result-action')
 | 
			
		||||
        $.ajax({
 | 
			
		||||
            url: window.location.href,
 | 
			
		||||
            type: 'POST',
 | 
			
		||||
            data: JSON.stringify({'id': id, 'action': action}),
 | 
			
		||||
            contentType: 'application/json',
 | 
			
		||||
            success: function(response) {
 | 
			
		||||
                if (action == 'delete') {
 | 
			
		||||
                    window.location.href = '/admin/results/';
 | 
			
		||||
                } else window.location.reload();
 | 
			
		||||
            },
 | 
			
		||||
            error: function(response){
 | 
			
		||||
                error_response(response);
 | 
			
		||||
            },
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Script for Deleting Time Adjustment
 | 
			
		||||
$('.adjustment-delete').click(function(event){
 | 
			
		||||
 | 
			
		||||
    var user_code = $(this).data('user_code');
 | 
			
		||||
    var location = window.location.href;
 | 
			
		||||
    location = location.replace('#', '')
 | 
			
		||||
 | 
			
		||||
    $.ajax({
 | 
			
		||||
        url: location + 'delete-adjustment/',
 | 
			
		||||
        type: 'POST',
 | 
			
		||||
        data: JSON.stringify({'user_code': user_code}),
 | 
			
		||||
        contentType: 'application/json',
 | 
			
		||||
        success: function(response) {
 | 
			
		||||
            window.location.reload();
 | 
			
		||||
        },
 | 
			
		||||
        error: function(response){
 | 
			
		||||
            error_response(response);
 | 
			
		||||
        },
 | 
			
		||||
    });
 | 
			
		||||
    
 | 
			
		||||
    event.preventDefault();
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user