tidusx18
11/8/2017 - 6:58 PM

Canvas Scripts

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();
}