您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Use the Ace Editor when editing things on Umbraco on Parks Canada intranet
// ==UserScript== // @name Parks Canada Umbraco Ace Editor // @namespace https://greasyfork.org/users/649 // @version 1.0.1 // @description Use the Ace Editor when editing things on Umbraco on Parks Canada intranet // @author Adrien Pyke // @match *://*.apca2.gc.ca/umbraco_client/tinymce3/themes/umbraco/source_editor.htm // @match *://intranet2/umbraco_client/tinymce3/themes/umbraco/source_editor.htm // @grant unsafeWindow // @grant GM_addStyle // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @require https://cdn.jsdelivr.net/gh/kufii/My-UserScripts@22210afba13acf7303fc91590b8265faf3c7eda7/libs/gm_config.js // @require https://cdn.jsdelivr.net/gh/fuzetsu/userscripts@ec863aa92cea78a20431f92e80ac0e93262136df/wait-for-elements/wait-for-elements.js // @require https://unpkg.com/[email protected]/standalone.js // @require https://unpkg.com/[email protected]/parser-html.js // ==/UserScript== /* global prettier, prettierPlugins */ (() => { 'use strict'; const SCRIPT_NAME = 'Parks Canada Umbraco Ace Editor'; const Util = { log(...args) { args.unshift(`%c${SCRIPT_NAME}:`, 'font-weight: bold;color: #233c7b;'); console.log(...args); }, q(query, context = document) { return context.querySelector(query); }, qq(query, context = document) { return Array.from(context.querySelectorAll(query)); }, addScript(src, onload) { const s = document.createElement('script'); s.onload = onload; s.src = src; document.body.appendChild(s); }, addScriptText(code, onload) { const s = document.createElement('script'); s.onload = onload; s.textContent = code; document.body.appendChild(s); }, appendAfter(elem, elemToAppend) { elem.parentNode.insertBefore(elemToAppend, elem.nextElementSibling); } }; const Config = GM_config([ { key: 'theme', label: 'Theme', default: 'monokai', type: 'dropdown', values: [ 'ambiance', 'chaos', 'chrome', 'clouds', 'clouds_midnight', 'cobalt', 'crimson_editor', 'dawn', 'dreamweaver', 'eclipse', 'github', 'gob', 'idle_fingers', 'iplastic', 'katzenmilch', 'kr_theme', 'kuroir', 'merbivore', 'merbivore_soft', 'mono_industrial', 'monokai', 'solarized_dark', 'solarized_light', 'sqlserver', 'terminal', 'textmate', 'tomorrow', 'tomorrow_night', 'tomorrow_night_blue', 'tomorrow_night_bright', 'tomorrow_night_eighties', 'twilight', 'vibrant_ink', 'xcode' ] } ]); waitForElems({ sel: '#htmlSource', stop: true, onmatch(textArea) { textArea.value = prettier.format(textArea.value, { parser: 'html', plugins: prettierPlugins }); const wrapper = document.createElement('div'); wrapper.id = 'ace'; wrapper.textContent = textArea.value; Util.appendAfter(textArea, wrapper); GM_addStyle(` .ace_editor { height: 515px; } #htmlSource { display: none; } `); Util.addScript( 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.14/ace.min.js', () => { const editor = unsafeWindow.ace.edit('ace'); editor.setTheme(`ace/theme/${Config.load().theme}`); editor.getSession().setMode('ace/mode/html'); editor.resize(); unsafeWindow.aceEditor = editor; unsafeWindow.originalTextArea = textArea; Util.addScriptText( 'aceEditor.getSession().on("change", () => originalTextArea.value = aceEditor.getValue())' ); GM_registerMenuCommand(SCRIPT_NAME + ' Settings', () => Config.setup(editor) ); Config.onchange = (key, value) => editor.setTheme(`ace/theme/${value}`); Config.oncancel = cfg => editor.setTheme(`ace/theme/${cfg.theme}`); } ); } }); })();