Skip to content

Instantly share code, notes, and snippets.

@tidusx18
Last active May 26, 2019 21:00
Show Gist options
  • Save tidusx18/aa8c52cd121da2dd7edaa1639604872d to your computer and use it in GitHub Desktop.
Save tidusx18/aa8c52cd121da2dd7edaa1639604872d to your computer and use it in GitHub Desktop.
Short and misc scripts for canvas.
var moduleItem = document.querySelectorAll('.external_url');
for(let item of moduleItem) {
let editLink = item.querySelector('.edit_item_link');
editLink.click();
let newWindowCheckbox = document.querySelector('#content_tag_new_tab');
newWindowCheckbox.checked = true;
let submitButton = document.querySelector('.button_type_submit');
submitButton.click();
}
function deleteAssignment(id) {
let endPoint = `${window.location.href}/${id}`;
let csrf_token = document.cookie.split('csrf_token=')[1];
let _method = 'DELETE';
let queryURL = `${endPoint}?_method=${_method}&authenticity_token=${csrf_token}`;
let request = new XMLHttpRequest();
request.open(_method, queryURL);
request.setRequestHeader('Accept', 'application/json, text/javascript, application/json+canvas-string-ids, */*; q=0.01');
request.setRequestHeader('Accept-Language', 'en-US,en;q=0.9');
request.setRequestHeader('Cache-Control', 'no-cache');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.setRequestHeader('Pragma', 'no-cache');
request.setRequestHeader('x-Requested-With', 'XMLHttpRequest');
request.send()
}
assignments = document.querySelectorAll('.assignment > div');
assignments.forEach( function(assignment) {
let itemId = assignment.id.replace('assignment_', '');
// let moduleName = module.querySelector('.module_name a').innerText;
// let matchText = 'SOME MODULE NAME';
// if(itemName.toLowerCase().includes(matchText)) {
// console.log('Deleting: ', itemName);
// deleteModuleItem(itemId);
// }
deleteAssignment(itemId);
});
function delete(id) {
let endPoint = `${window.location.href}/${id}`;
let csrf_token = document.cookie.split('csrf_token=')[1];
let _method = 'DELETE';
let queryURL = `${endPoint}?_method=${_method}&authenticity_token=${csrf_token}`;
let request = new XMLHttpRequest();
request.open(_method, queryURL);
request.setRequestHeader('Accept', 'application/json, text/javascript, application/json+canvas-string-ids, */*; q=0.01');
request.setRequestHeader('Accept-Language', 'en-US,en;q=0.9');
request.setRequestHeader('Cache-Control', 'no-cache');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.setRequestHeader('Pragma', 'no-cache');
request.setRequestHeader('x-Requested-With', 'XMLHttpRequest');
request.send()
}
discussions = document.querySelectorAll('.discussion > div');
discussions.forEach( function(discussion) {
let itemId = discussion.id.replace('_discussion_content', '');
// let moduleName = module.querySelector('.module_name a').innerText;
// let matchText = 'SOME MODULE NAME';
// if(itemName.toLowerCase().includes(matchText)) {
// console.log('Deleting: ', itemName);
// deleteModuleItem(itemId);
// }
delete(itemId);
});
function deleteModuleItem(moduleId) {
let endPoint = `${window.location.href}/${moduleId}`;
let csrf_token = document.cookie.split('csrf_token=')[1];
let _method = 'DELETE';
let queryURL = `${endPoint}?_method=${_method}&authenticity_token=${csrf_token}`;
let request = new XMLHttpRequest();
request.open(_method, queryURL);
request.setRequestHeader('Accept', 'application/json, text/javascript, application/json+canvas-string-ids, */*; q=0.01');
request.setRequestHeader('Accept-Language', 'en-US,en;q=0.9');
request.setRequestHeader('Cache-Control', 'no-cache');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.setRequestHeader('Pragma', 'no-cache');
request.setRequestHeader('x-Requested-With', 'XMLHttpRequest');
request.send()
}
modules = document.querySelectorAll('.context_module');
modules.forEach( function(module) {
let itemId = module.id.replace('context_module_', '');
// let moduleName = module.querySelector('.module_name a').innerText;
// let matchText = 'SOME MODULE NAME';
// if(itemName.toLowerCase().includes(matchText)) {
// console.log('Deleting: ', itemName);
// deleteModuleItem(itemId);
// }
deleteModuleItem(itemId);
});
let pages = document.querySelectorAll('.batch-delete');
let deleteButton = document.querySelectorAll('.btn-danger');
for(let page of pages) {
page.click();
}
deleteButton.click();
function deleteQuiz(id) {
let endPoint = `${window.location.href}/${id}`;
let csrf_token = document.cookie.split('csrf_token=')[1];
let _method = 'DELETE';
let queryURL = `${endPoint}?_method=${_method}&authenticity_token=${csrf_token}`;
let request = new XMLHttpRequest();
request.open(_method, queryURL);
request.setRequestHeader('Accept', 'application/json, text/javascript, application/json+canvas-string-ids, */*; q=0.01');
request.setRequestHeader('Accept-Language', 'en-US,en;q=0.9');
request.setRequestHeader('Cache-Control', 'no-cache');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.setRequestHeader('Pragma', 'no-cache');
request.setRequestHeader('x-Requested-With', 'XMLHttpRequest');
request.send()
}
quizzes = document.querySelectorAll('.quiz > div');
quizzes.forEach( function(quiz) {
let itemId = quiz.id.replace('summary_quiz_', '');
// let moduleName = module.querySelector('.module_name a').innerText;
// let matchText = 'SOME MODULE NAME';
// if(itemName.toLowerCase().includes(matchText)) {
// console.log('Deleting: ', itemName);
// deleteModuleItem(itemId);
// }
deleteQuiz(itemId);
});
function deleteModuleItem(moduleId) {
let endPoint = `${window.location.href}/items/${moduleId}`;
let csrf_token = document.cookie.split('csrf_token=')[1];
let _method = 'DELETE';
let queryURL = `${endPoint}?_method=${_method}&authenticity_token=${csrf_token}`;
let request = new XMLHttpRequest();
request.open(_method, queryURL);
request.setRequestHeader('Accept', 'application/json, text/javascript, application/json+canvas-string-ids, */*; q=0.01');
request.setRequestHeader('Accept-Language', 'en-US,en;q=0.9');
request.setRequestHeader('Cache-Control', 'no-cache');
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
request.setRequestHeader('Pragma', 'no-cache');
request.setRequestHeader('x-Requested-With', 'XMLHttpRequest');
request.send()
}
moduleItems = document.querySelectorAll('.context_module_item');
moduleItems.forEach( function(item) {
let itemId = item.id.replace('context_module_item_', '');
let itemName = item.querySelector('.item_name a').innerText;
let matchText = 'click here to access';
if(itemName.toLowerCase().includes(matchText)) {
console.log('Deleting: ', itemName);
deleteModuleItem(itemId);
}
});
// ==UserScript==
// @name Canvas Submit/Save Hotkey (Ctrl + s)
// @namespace https://github.com/tidusx18
// @version 0.0.1
// @description Overrides browser default action for "Ctrl + s" hotkey to submit/save the current form/page in Canvas.
// @match https://fiu.instructure.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function submitPage(e) {
var selectors = [
'button[type="submit"]', // General 'Save' buttons
'\.button_type_submit', // Module Item Edit
'\.add_item_button', // Add Module Item
'\.create_assignment', // Edit Assignment Item
'\.submit' // Pages
];
if (e.keyCode === 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
e.preventDefault();
for(let selector of selectors) {
let selected = document.querySelector(selector);
if(selected) {
console.log('Button Clicked: ', selected);
selected.click();
} else {
console.log('No matching Submit button found for: ', selector);
}
}
}
}
document.addEventListener("keydown", function(event) {
submitPage(event);
}, false);
window.addEventListener('load', function(event) {
if(tinymce) {
tinymce.on('AddEditor', function(e) {
console.log('(Save/Submit Hotkey) - TinyMCE Editor Added with ID: ', e.editor.id);
// Set listenser on editor
e.editor.on('keydown', function(event) {
submitPage(event);
});
});
}
});
})();
const token = 'Bearer 1181~CbSHvhl5xMbVK3WLia8u8uo0ASCXEw7uZYYrnt9HrJMqwG9YymJkuepefHGEFCYb';
const baseURL = 'https://fiu.instructure.com/api/v1/courses';
const method = 'GET';
const headers = {
// Some Headers
Authorization: token
};
fetch(`${baseURL}/274/modules`, {
method: method,
headers: headers
})
.then( (response) => {
return response.json();
})
.then( (data) => {
console.log(data);
data.forEach( (item) => {
fetch(`${baseURL}/274/modules/${item.id}`, {
method: 'PUT',
headers: headers,
body: new URLSearchParams('module[published]', 'true')
})
})
});
tinymce = document.querySelector('iframe#wiki_page_body_ifr').contentDocument.querySelector('#tinymce')
links = tinymce.querySelectorAll('a')
for(link of links) {
title = link.title;
link.setAttribute('alt', title);
}
tinymce = document.querySelector('iframe#wiki_page_body_ifr').contentDocument.querySelector('#tinymce')
images = tinymce.querySelectorAll('img')
for(image of images) {
title = image.title;
image.setAttribute('alt', title)
}
links = document.querySelectorAll('.icon-unpublish')
for(let link of links) { link.click() }
modules = document.getElementsByClassName('expand_module_link')
for(let module of modules){
module.click();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment