- // ==UserScript==
- // @name Syntax-Highlight-Style
- // @namespace https://github.com/Amourspirit/Syntax-Highlight-Style
- // @version 1.1.2
- // @description Adds extra code highlighting frormating options ot syntaxhighlight.in
- // @author Paul Moss
- // @match http://syntaxhighlight.in/
- // @license MIT
- // @homepageURL http://amourspirit.github.io/Syntax-Highlight-Style/
- // @update https://github.com/Amourspirit/Syntax-Highlight-Style/raw/master/syntax-highlight-style.user.js
- // @contributionURL http://amourspirit.github.io/Syntax-Highlight-Style/#donate
- // @grant none
- // ==/UserScript==
- /* jshint -W097 */
- 'use strict';
- // #nsregion BIGBYTE
- var BIGBYTE = BIGBYTE || {};
- if (typeof(BIGBYTE.createNS) == 'undefined') {
- BIGBYTE.createNS = function(namespace) {
- var nsparts = namespace.split(".");
- var parent = BIGBYTE;
-
- // we want to be able to include or exclude the root namespace so we strip
- // it if it's in the namespace))
- if (nsparts[0] === "BIGBYTE") {
- nsparts = nsparts.slice(1);
- }
-
- // loop through the parts and create a nested namespace if necessary
- for (var i = 0; i < nsparts.length; i++) {
- var partname = nsparts[i];
- // check if the current parent already has the namespace declared
- // if it isn't, then create it
- if (typeof parent[partname] === "undefined") {
- parent[partname] = {};
- }
- // get a reference to the deepest element in the hierarchy so far
- parent = parent[partname];
- }
- // the parent is now constructed with empty namespaces and can be used.
- // we return the outermost namespace
- return parent;
- };
- }
- if (typeof(BIGBYTE.isjquery) == 'undefined') {
- BIGBYTE.isjquery = function(data) {
- // If data is already a jQuery object
- if (data instanceof jQuery) {
- // Do nothing different
- data = data;
- // Otherwise
- } else {
- // Convert to jQuery object
- data = jQuery(data);
- }
- // Return jQuery object
- return data;
- };
- }
-
- // #endnsregion BIGBYTE
- // #nsregion BIGBYTE.USERSCRIPT.DOCUMENT
-
- var bbDoc = BIGBYTE.createNS("BIGBYTE.USERSCRIPT.DOCUMENT");
- bbDoc.ns = 'BIGBYTE.USERSCRIPT.DOCUMENT';
- // #region LoadScripts
- if (typeof(bbDoc.loadScript) == 'undefined') {
- bbDoc.loadScript = function(scriptItm) {
- var lib = this;
- if (typeof(scriptItm.count) == 'undefined') {
- scriptItm.count = 0;
- }
- if (typeof(scriptItm.loaded) == 'undefined') {
- scriptItm.loaded = false;
- }
- if (typeof(scriptItm.text) == 'undefined') {
- scriptItm.text = ''; // timeout in seconds
- }
- if (typeof(scriptItm.timeout) == 'undefined') {
- scriptItm.timeout = 30; // timeout in seconds
- }
-
- var bbScriptLoadedEvent = new CustomEvent(
- "bbScriptLoaded", {
- detail: {
- message: "Script Loaded",
- time: new Date(),
- scriptItm: scriptItm
- },
- bubbles: true,
- cancelable: false
- }
- );
-
- switch (scriptItm.type) {
- case 'linkedjs':
- var skipTest = false;
- if (typeof(scriptItm.testMethod) == 'undefined' || (scriptItm.testMethod.length == 0)) {
- skipTest = true;
- }
- if (skipTest) {
- // there is no test for this item so we will and assume
- // all is fine/
- scriptItm.loaded = true;
- lib.addJS_Node(scriptItm.text, scriptItm.src);
- // trigger event for loaded
-
- //jQuery(document).trigger("bbScriptLoaded", scriptItm);
- document.dispatchEvent(bbScriptLoadedEvent);
- return;
- }
- scriptItm.count++;
- var maxCount = scriptItm.timeout * 10; // multply by 10 to convert into 10th of seconds
-
- if (scriptItm.count > maxCount) {
- console.error('unable to load script, Aborting: ', scriptItm.src);
- return;
- }
- var testmethod;
- try {
- testmethod = eval(scriptItm.testMethod);
- } catch (e) {
- testmethod = undefined;
- }
- if (typeof(testmethod) == 'undefined') {
- if (!scriptItm.loaded) {
- scriptItm.loaded = true;
- lib.addJS_Node(scriptItm.text, scriptItm.src);
- }
- setTimeout(function() {
- lib.loadScript(scriptItm);
- }, 100);
- } else {
- // script item is loaded trigger an evert
- //jQuery(document).trigger("bbScriptLoaded", scriptItm);
- document.dispatchEvent(bbScriptLoadedEvent);
- }
- break;
- case 'css':
- if (typeof(scriptItm.tag) == 'undefined') {
- scriptItm.tag = 'body'; // timeout in seconds
- }
- lib.addCss_Node(scriptItm.src, scriptItm.tag);
- //jQuery(document).trigger("bbScriptLoaded", scriptItm);
- document.dispatchEvent(bbScriptLoadedEvent);
- break;
- case 'csslink':
- lib.addLink_Node(scriptItm.src);
- //jQuery(document).trigger("bbScriptLoaded", scriptItm);
- document.dispatchEvent(bbScriptLoadedEvent);
- break;
- default:
- // statements_def
- break;
- }
-
-
- }
- }
-
- // #endregion LoadScripts
- // #region BIGBYTE.USERSCRIPT.DOCUMENT Methods
- // gneric document related
- if (typeof(bbDoc.addJS_Node) == 'undefined') {
- bbDoc.addJS_Node = function(text, s_URL, funcToRun, runOnLoad) {
- var D = document;
- var scriptNode = D.createElement('script');
- if (runOnLoad) {
- scriptNode.addEventListener("load", runOnLoad, false);
- }
- scriptNode.type = "text/javascript";
- if (text) scriptNode.textContent = text;
- if (s_URL) scriptNode.src = s_URL;
- if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
-
- var targ = D.getElementsByTagName('head')[0] || D.body || D.documentElement;
- targ.appendChild(scriptNode);
- };
- }
- if (typeof(bbDoc.addJS_NodeToBody) == 'undefined') {
- bbDoc.addJS_NodeToBody = function(text, s_URL, funcToRun, runOnLoad) {
- var D = document;
- var scriptNode = D.createElement('script');
- if (runOnLoad) {
- scriptNode.addEventListener("load", runOnLoad, false);
- }
- scriptNode.type = "text/javascript";
- if (text) scriptNode.textContent = text;
- if (s_URL) scriptNode.src = s_URL;
- if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
-
- var targ = D.getElementsByTagName('body')[0] || D.body || D.documentElement;
- targ.appendChild(scriptNode);
- };
- }
- if (typeof(bbDoc.addCss_Node) == 'undefined') {
- bbDoc.addCss_Node = function(text, element) {
- element = typeof element !== 'undefined' ? element : 'head';
- var D = document;
- var scriptNode = D.createElement('style');
- scriptNode.type = "text/css";
- if (text) scriptNode.textContent = text;
-
- var targ = D.getElementsByTagName(element)[0] || D.body || D.documentElement;
- targ.appendChild(scriptNode);
- };
- }
- if (typeof(bbDoc.addLink_Node) == 'undefined') {
- bbDoc.addLink_Node = function(href, type, rel) {
- type = typeof type !== 'undefined' ? type : "text/css";
- rel = typeof rel !== 'undefined' ? rel : "stylesheet";
- var D = document;
- var scriptNode = D.createElement('link');
- scriptNode.type = type;
- scriptNode.href = href;
- if (rel) scriptNode.rel = rel;
-
- var targ = D.getElementsByTagName('head')[0] || D.body || D.documentElement;
- targ.appendChild(scriptNode);
- };
- }
-
- if (typeof(bbDoc.addHtml_Node) == 'undefined') {
- bbDoc.addHtml_Node = function(html) {
- var D = document;
- var targ = D.getElementsByTagName('body')[0] || D.body || D.documentElement;
- targ.insertAdjacentHTML('beforeend', html);
- };
- }
- // #endregion BIGBYTE.USERSCRIPT.DOCUMENT Methods
-
- // #endnsregion BIGBYTE.USERSCRIPT.DOCUMENT"
-
- // #nsregion BIGBYTE.USERSCRIPT.UTIL
- var bbusu = BIGBYTE.createNS("BIGBYTE.USERSCRIPT.UTIL");
- bbusu.ns = 'BIGBYTE.USERSCRIPT.UTIL';
- // #region Methods
- if(typeof(bbusu.extend) == 'undefined') {
- /**
- * Extends an object to contain new Properties
- * @return {[Object]} the new merged oject
- */
- bbusu.extend = function () {
- for (var i = 1; i < arguments.length; i++)
- for (var key in arguments[i])
- if (arguments[i].hasOwnProperty(key))
- arguments[0][key] = arguments[i][key];
- return arguments[0];
- };
- }
-
- // #endregion Methods
- // #endnsregion BIGBYTE.USERSCRIPT.UTIL
-
- // #nsregion BIGBYTE.USERSCRIPT.CLIPBOARD
- // #region Create NS
- var bbClip = BIGBYTE.createNS("BIGBYTE.USERSCRIPT.CLIPBOARD");
- bbClip.ns = 'BIGBYTE.USERSCRIPT.CLIPBOARD';
- // #endregion Create NS
- // #region Properties
- bbClip.scriptOutputted = false;
- // #endregion Properties
- // #endnsregion BIGBYTE.USERSCRIPT.CLIPBOARD
-
- // #nsregion BIGBYTE.STRING
- // #region Create NS
- var bbString = BIGBYTE.createNS("BIGBYTE.STRING");
- bbString.ns = 'BIGBYTE.STRING';
- // #endregion Create NS
- // #region Init
- if (typeof(bbString.pad) == 'undefined') {
- bbString.pad = function pad(str, max, padChar) {
- padChar = padChar || '0';
- str = str.toString();
- return str.length < max ? this.pad(padChar + str, max, padChar) : str;
- }
- }
- // #endregion Init
- // #endnsregion BIGBYTE.STRING
-
- // #nsregion BIGBYTE.USERSCRIPT.STHL
- // #region Create NS
- var sthl = BIGBYTE.createNS("BIGBYTE.USERSCRIPT.STHL");
- sthl.ns = 'BIGBYTE.USERSCRIPT.STHL';
- // #endregion Create ns
- // #region Button methods
-
- /**
- * Toggles Buttons enabled or disabled
- * @param {[boolean]} enabled If true buttons will be enable; Otherwise disabled
- */
- sthl.toggleButtons = function(enabled, forceRedraw) {
- enabled = (typeof(enabled) == 'undefined') ? false : enabled;
- forceRedraw = (typeof(forceRedraw) == 'undefined') ? false : forceRedraw;
- var $ = jQuery;
- if (enabled) {
- $('#gmconvert').attr("disabled", false);
- $('#gmcopy').attr("disabled", false);
- $('#gmcopytbl').attr("disabled", false);
- $('#gmtable').attr("disabled", false);
- } else {
- $('#gmconvert').attr("disabled", 'disabled');
- $('#gmcopy').attr("disabled", 'disabled');
- $('#gmcopytbl').attr("disabled", 'disabled');
- $('#gmtable').attr("disabled", 'disabled');
- }
- if (forceRedraw) {
- $('#gmconvert').hide().show(0);
- $('#gmcopy').hide().show(0);
- $('#gmcopytbl').hide().show(0);
- $('#gmtable').hide().show(0);
- }
- };
-
- sthl.getConvertedList = function() {
- var $ = jQuery;
- var $sourceCode = $('pre.snippet-formatted.sh_sourceCode');
- $sourceCode.makeCssInlineCode(false);
- var contentHtml = '';
- if ($sourceCode.length) {
- var $wrapper = $('<div />');
- $wrapper.assignStyleFrom($sourceCode).css({
- width: 'auto',
- height: 'auto',
- animation: '',
- clip: '',
- direction: '',
- fill: '',
- filter: '',
- flex: '',
- isolation: '',
- orphans: '',
- position: '',
- r: '',
- resize: '',
- rx: '',
- ry: '',
- speak: '',
- stroke: '',
- top: '',
- transform: '',
- transition: '',
- visibility: '',
- widows: '',
- x: '',
- y: '',
- zoom: '',
- //background: '',
- opacity: '',
- order: '',
- clear: '',
- cx: '',
- cy: '',
- float: '',
- mask: '',
- motion: ''
- });
- // $sourceCode.removeAttrib('class', true);
- $sourceCode.wrapInner($wrapper);
- contentHtml = $sourceCode.spaceReplace(true)[0].outerHTML;
- }
- return contentHtml;
- };
-
- sthl.getConvertedTable = function() {
- var $ = jQuery;
-
- var $sourceCode = $('pre.snippet-formatted.sh_sourceCode');
-
- $sourceCode.find('li').each(function(index, li) {
- // convert li spaces to \u00a0
- $(li).spaceReplace(false); // do not recurse
- });
-
- $sourceCode.makeCssInlineCode(true); // generates for html Table
- var contentHtml = '';
- if ($sourceCode.length) {
- contentHtml = this.toTable($sourceCode)[0].outerHTML;
- }
- return contentHtml;
- };
-
-
- /*
- * Button click to convert ordered list of the code output to inline styled ordered list
- */
- sthl.convertClick = function(btn) {
-
- var $ = jQuery;
- var lib = BIGBYTE.USERSCRIPT.STHL;
- lib.toggleButtons(false, true);
- $.event.trigger({
- type: 'codeConversionStart',
- message: 'convert_list_start',
- time: new Date(),
- source: 'convertClick'
- });
- this.windowScrollPos = $('body').scrollTop();
- $('html, body').animate({
- scrollTop: 0
- }, 'slow');
- $(document).disableScroll('html, body');
-
- var $btn = BIGBYTE.isjquery(btn); // convert to jquery obj
- var libTmce = BIGBYTE.USERSCRIPT.STHL.TMCE;
- if ($btn.data('converted')) {
- $btn.data('converted', 0);
- } else {
- $btn.data('converted', 1);
-
- }
- var contentHtml = this.getConvertedList();
- if (libTmce.fullscreen) {
- tinyMCE.get('gminput').execCommand('mceFullScreen');
- }
- tinyMCE.get('gminput').setContent(contentHtml);
- $('.gmbackdrop, .gmbox').animate({
- 'opacity': '.50'
- }, 300, 'linear');
- $('.gmbox').animate({
- 'opacity': '1.00'
- }, 300, 'linear');
- $('.gmbackdrop, .gmbox').css('display', 'block');
-
- $.event.trigger({
- type: 'codeConversionFinish',
- message: 'convert_list_end',
- time: new Date(),
- source: 'convertClick',
- html: contentHtml
- });
-
- };
-
-
- /*
- * Button click to convert ordered list of the code output to html table
- */
- sthl.convertTable = function(btn) {
- var $ = jQuery;
- $.event.trigger({
- type: 'codeConversionStart',
- message: 'convert_table_start',
- time: new Date(),
- source: 'convertTable'
- });
-
- var libTmce = BIGBYTE.USERSCRIPT.STHL.TMCE;
- this.windowScrollPos = $('body').scrollTop();
- $('html, body').animate({
- scrollTop: 0
- }, 'slow');
- $(document).disableScroll('html, body');
-
- var contentHtml = this.getConvertedTable();
- if (libTmce.fullscreen) {
- tinyMCE.get('gminput').execCommand('mceFullScreen');
- }
- tinyMCE.get('gminput').setContent(contentHtml);
- $('.gmbackdrop, .gmbox').animate({
- 'opacity': '.50'
- }, 300, 'linear');
- $('.gmbox').animate({
- 'opacity': '1.00'
- }, 300, 'linear');
- $('.gmbackdrop, .gmbox').css('display', 'block');
-
- $.event.trigger({
- type: 'codeConversionFinish',
- message: 'convert_table_end',
- time: new Date(),
- source: 'convertTable',
- html: contentHtml
- });
- };
- // #endregion Button methods
- // #region Init
- /**
- * Init for the main script
- */
- sthl.init = function(pluginSrc) {
- var tinyMceVer = BIGBYTE.USERSCRIPT.STHL.TMCE.version;
- //var tinyMceVer = '4.3.2';
- pluginSrc = typeof(pluginSrc) == 'undefined' ? '//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js' : pluginSrc;
-
- // no jquery at this point use pure javascript events
- if (document.addEventListener) { // For all major browsers, except IE 8 and earlier
- document.addEventListener("bbScriptLoaded", BIGBYTE.USERSCRIPT.STHL.onBbScriptLoaded);
- } else if (document.attachEvent) { // For IE 8 and earlier versions
- document.attachEvent("onbbScriptLoaded", BIGBYTE.USERSCRIPT.STHL.onBbScriptLoaded);
- }
-
- if (document.addEventListener) { // For all major browsers, except IE 8 and earlier
- document.addEventListener("allScriptsLoaded", BIGBYTE.USERSCRIPT.STHL.onAllScriptsLoaded);
- } else if (document.attachEvent) { // For IE 8 and earlier versions
- document.attachEvent("onallScriptsLoaded", BIGBYTE.USERSCRIPT.STHL.onAllScriptsLoaded);
- }
-
- // only add jquery if we need it.
- if (typeof(jQuery) == 'undefined') {
- this.addScript('jquery', pluginSrc, 'linkedjs', 'jQuery');
- }
- if ((typeof(jQuery) == 'undefined') || (typeof(jQuery.cookei) == 'undefined')) {
- this.addScript('cookie', '//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js', 'linkedjs', 'jQuery.cookie');
- }
- if (typeof(Clipboard) == 'undefined') {
- this.addScript('clipboard', '//cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.5.5/clipboard.min.js', 'linkedjs', 'Clipboard');
- }
- this.addScript('icons-css', '//cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css', 'csslink');
- // tiny mce
- this.addScript('tinyMceJs', '//cdnjs.cloudflare.com/ajax/libs/tinymce/' + tinyMceVer + '/tinymce.min.js', 'linkedjs', 'tinyMCE');
- this.addScript('tinyMceCss', '//cdnjs.cloudflare.com/ajax/libs/tinymce/' + tinyMceVer + '/skins/lightgray/skin.min.css', 'csslink');
-
- //this.addScript('tinymce_advanced_theme', '//cdnjs.cloudflare.com/ajax/libs/tinymce/' + tinyMceVer + '/themes/advanced/theme.min.js','linkedjs') // no checking required
- this.loadScripts();
- };
- /*
- * Load scripts will load one script only at a time.
- * When the script is loaded the next if any script will be
- * load via the onScripLoadeEvent
- * the onScriptLoaded Event calle this function over and over untll all the scripts are loaded
- */
- sthl.loadScripts = function() {
-
- var count = 0;
- for (var key in this.scripts) {
- count++;
- if (count > 1) {
- return;
- }
- BIGBYTE.USERSCRIPT.DOCUMENT.loadScript(this.scripts[key]);
- }
- };
- /*
- * Array to hold all the scripts that are to be loaded
- */
- sthl.scripts = [];
- /*
- * Adds script item to the BIGBYTE.USERSCRIPT.STHL.scripts array
- * these are scripts tha will be loaded when the BIGBYTE.USERSCRIPT.STHL.init() is fired
- */
- sthl.addScript = function(name, src, type, testMethod, args) {
- var newItm = {
- name: name,
- src: src,
- type: type,
- testMethod: testMethod
- };
- if(typeof(args) === undefined) {
- this.scripts[name] = newItm;
- } else {
- var extended = BIGBYTE.USERSCRIPT.UTIL.extend(newItm, args);
- this.scripts[name] = extended;
- }
- };
-
- /*
- * Function to check and see if there are any scripts left to be loaded
- * @returns boolean, true if all the scripts are loaded; Otherwise false
- */
- sthl.isScriptsLoaded = function() {
- var lib = BIGBYTE.USERSCRIPT.STHL;
- for (var key in lib.scripts) {
- if (!lib.scripts[key].loaded) {
- return false
- }
- }
- return true;
- };
-
-
-
- // #endregion init
- // #region Properties
- sthl.scriptOutputted = false;
- sthl.windowScrollPos = 0;
- sthl.includeLineNumbers = true;
- /**
- * Property that is set to true if the code has had style added to it
- * @type {Boolean}
- */
- sthl.isCodeStyled = false;
-
- // light box related
- sthl.lightBoxCss = '.gmbackdrop,.gmbox{position:absolute;display:none}.gmbackdrop{top:0;left:0;width:100%;height:100%;background:#000;opacity:0;';
- sthl.lightBoxCss += 'filter:alpha(opacity=0);z-index:201}.gmbox{background:#fff;z-index:202;padding:10px;';
- sthl.lightBoxCss += '-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-moz-box-shadow:0 0 5px #444;-webkit-box-shadow:0 0 5px #444;';
- sthl.lightBoxCss += 'box-shadow:0 0 5px #444}.gmclose{float:right;margin-right:6px;cursor:pointer}.mce-panel{border:none}div.gmbox .mce-panel{border:';
- sthl.lightBoxCss += ' 0 solid rgba(0,0,0,.2)}div.mce-tinymce.mce-container.mce-panel{margin-top:2em}div.mce-tinymce.mce-container.mce-panel.mce-fullscreen';
- sthl.lightBoxCss += '{margin-top:0}#gm-edit-btn{font-size:1.6em;color:#ABABAB}#gm-edit-btn:hover{color:#2DBE60}';
- sthl.lightBoxCss += '.gmbox-window{top:50%;left:50%;transform: translate(-50%, -50%);position: absolute;';
- sthl.lightBoxCss += 'width:650px;height:450px;}';
- // #endregion Properties
- // #region Init Methods
- /*
- * internal method to add buttons to the toolbar of the page.
- * method alos hooks up some of the buttons. Method is called on document.ready
- */
- sthl.initToolbar = function($) {
- var lib = this;
- var $btndiv = $('.buttons:first');
- $btndiv.append('<button id="gmconvert" type="button" data-clipboard-text="" data-converted="0" disabled="disabled">Popup List</button>');
- $btndiv.append('<button id="gmtable" type="button" disabled="disabled">Popup Table</button>');
- $btndiv.append('<button id="gmcopy" type="button" disabled="disabled">Copy List</button>');
- $btndiv.append('<button id="gmcopytbl" type="button" disabled="disabled">Copy Table</button>');
-
-
- $('button#gmconvert').click(function() {
- lib.convertClick(this);
- });
- $('#gmtable').click(function() {
- lib.convertTable(this);
- });
- };
- /*
- *
- * Inits the line number to hook page line number checkbox
- * @param $ optional jQuery object
- * @desc called from main init
- */
-
- sthl.initLineNumbers = function($) {
- $ = $ || jQuery;
- //label#checkBox.bfc selected
- //includeLineNumbers
- var lib = this;
- $('input#lineNumber').click(function() {
- if ($(this).parent('label').hasClass('selected')) {
- lib.includeLineNumbers = true;
- } else {
- lib.includeLineNumbers = false;
-
- }
- });
- };
- // #endregion Init Methods
- // #region Methods
- /*
- * resets the lightbox back to hidden state
- */
- sthl.lightBoxReset = function() {
- jQuery('.gmbackdrop, .gmbox').animate({
- 'opacity': '0'
- }, 300, 'linear', function() {
- jQuery('.gmbackdrop, .gmbox').css('display', 'none');
- });
- jQuery('textarea#gminput').val(''); // clean up textarea
- };
-
- /**
- * Converts a list (ul, ol) elements into a table
- * @parm el an element containing the the ul or ol item
- * @parm includeNum optional, if true then line numnbers will be incldued; Otherwise false.
- * default value is the value the page is currently set to with the line numbers checkbox
- */
- sthl.toTable = function(el, includeNum, tableClass) {
- var $ = jQuery;
- var lib = this;
- //debugger;
- tableClass = tableClass || '';
- includeNum = includeNum || this.includeLineNumbers;
-
- var $tbl;
- if (tableClass) {
- $tbl = $('<table />');
- } else {
- $tbl = $('<table class="' + tableClass + '" />');
- }
- var count = 0;
- el.find('li').each(function(index, li) {
- var $li = BIGBYTE.isjquery(li);
- var box = $li.hasClass('box');
- var boxTop = $li.hasClass('box-top');
- var boxMid = $li.hasClass('box-mid');
- var boxBot = $li.hasClass('box-bot');
- var boxBg = $li.hasClass('box-bg');
- count++;
- var $row = $('<tr/>');
- if (includeNum) {
- var $cellNum = $('<td/>').css({
- paddingLeft: '5px',
- width: '35px',
- textAlign: 'right',
- whiteSpace: 'nowrap',
- paddingRight: '5px'
- });
- if (box) {
- $cellNum.css({
- border: $li.css('border'),
- borderColor: $li.css('border-color'),
- borderRight: '0'
- });
- if (boxTop) {
- $cellNum.css({
- borderTop: $li.css('border-top'),
- borderLeft: $li.css('border-left'),
- borderLeftColor: $li.css('border-left-color')
- });
- }
- if (boxMid) {
- $cellNum.css({
- borderLeft: $li.css('border-left'),
- borderLeftColor: $li.css('border-left-color')
- });
- }
- if (boxBot) {
- $cellNum.css({
- borderBottom: $li.css('border-bottom'),
- borderBottomColor: $li.css('border-bottom-color'),
- borderLeft: $li.css('border-left'),
- borderLeftColor: $li.css('border-left-color')
- });
- }
- if (boxBg) {
- $cellNum.css({
- backgroundColor: $li.css('background-color')
- });
- }
- }
- $cellNum.html(BIGBYTE.STRING.pad(count, 2) + '.');
- $row.append($cellNum);
-
- }
- var $cellMain = $('<td/>');
- $cellMain = lib._copyCss($cellMain, li);
- $cellMain.css({
- listStyle: '',
- //wordWrap: 'normal',
- lineHeight: '',
- fontSize: '',
- fontFamily: '',
- 'word-wrap': 'break-word'
- });
- if (includeNum) {
- $cellMain.css({
- width: '100%'
- });
- } else {
- $cellMain.css({
- width: '100%',
- paddingLeft: '10px'
- });
- }
-
- if (box) {
- $cellMain.css({
- border: $li.css('border'),
- borderColor: $li.css('border-color'),
- borderLeft: (includeNum ? '0' : $li.css('border-left'))
- });
- if (boxTop) {
- if (includeNum) {
- $cellMain.css({
- borderTop: $li.css('border-top'),
- borderLeft: '0',
- borderRight: $li.css('border-right'),
- borderRightColor: $li.css('border-Right-color')
- });
- } else {
- $cellMain.css({
- borderTop: $li.css('border-top'),
- borderLeft: $li.css('border-left'),
- borderLeftColor: $li.css('border-left-color'),
- borderRight: $li.css('border-right'),
- borderRightColor: $li.css('border-Right-color')
- });
- }
-
- }
- if (boxMid) {
- if (includeNum) {
- $cellMain.css({
- borderLeft: '0',
- borderRight: $li.css('border-right'),
- borderRightColor: $li.css('border-Right-color')
- });
- } else {
- $cellMain.css({
- borderLeft: $li.css('border-left'),
- borderLeftColor: $li.css('border-left-color'),
- borderRight: $li.css('border-right'),
- borderRightColor: $li.css('border-Right-color')
- });
- }
-
- }
- if (boxBot) {
- if (includeNum) {
- $cellMain.css({
- borderBottom: $li.css('border-bottom'),
- borderBottomColor: $li.css('border-bottom-color'),
- borderLeft: '0',
- borderRight: $li.css('border-right'),
- borderRightColor: $li.css('border-Right-color')
- });
- } else {
- $cellMain.css({
- borderBottom: $li.css('border-bottom'),
- borderBottomColor: $li.css('border-bottom-color'),
- borderLeft: $li.css('border-left'),
- borderLeftColor: $li.css('border-left-color'),
- borderRight: $li.css('border-right'),
- borderRightColor: $li.css('border-Right-color')
- });
- }
- }
- if (boxBg) {
- $cellMain.css({
- backgroundColor: $li.css('background-color')
- });
- }
- }
- $cellMain.html($(this).html());
- $row.append($cellMain);
- $tbl.append($row);
- });
- // set the default css styles
- $tbl = this._copyCss($tbl, el);
- // corrected css styles
- $tbl.css({
- whiteSpace: 'nowrap',
- listStyle: '',
- wordWrap: 'normal',
- 'border-collapse': 'collapse',
- 'table-layout': 'fixed',
- width: '100%'
- });
- return $tbl;
- }
- sthl.createToggleButton = function() {
- var $ = jQuery;
- if ($('btncustomtoggle').length === 0) {
- $('<div id="customtoggle"><button id="btncustomtoggle" type="buton" style="display: none">Toggle</button></div>').insertBefore('#htmlToCopy');
- $('#btncustomtoggle').click(function() {
- tinyMCE.execCommand('mceToggleEditor', true, 'htmlToCopy');
- });
- }
-
- };
- /*
- * internal copies specifice class files from toEl to el.
- */
-
- sthl._copyCss = function(toEl, el) {
- var $toEl = BIGBYTE.isjquery(toEl);
- var $el = BIGBYTE.isjquery(el);
-
- $toEl.css({
- paddingLeft: $el.css('padding-left'),
- listStyle: $el.css('list-style'),
- backgroundColor: $el.css('background-color'),
- lineHeight: $el.css('line-height'),
- borderLeft: $el.css('border-left'),
- color: $el.css('color'),
- fontWeight: $el.css('font-weight'),
- fontStyle: $el.css('font-style'),
- fontSize: $el.css('font-size'),
- fontFamily: $el.css('font-family'),
- textAlign: $el.css('text-align'),
- whiteSpace: $el.css('white-space'),
- wordWrap: $el.css('word-wrap')
- })
- return $toEl;
- };
-
- sthl.lightBoxAddCss = function() {
- var bdoc = BIGBYTE.USERSCRIPT.DOCUMENT;
- bdoc.addCss_Node(this.lightBoxCss, 'body');
- };
-
- sthl.getLightBoxHtml = function(id, title) {
- id = typeof id !== 'undefined' ? id : 'gminput';
- title = typeof title !== 'undefined' ? title : '';
- var h = '<div class="gmbackdrop"></div>';
- h += '<div id="tinybox" class="gmbox gmbox-window"><div class="gmclose"><i class="fi-x" style="color:black"></i></div>';
- h += title;
- h += '<textarea id="' + id + '" rows="18" cols="68"></textarea>';
- h += '</div></div>';
- return h;
- }
-
- sthl.writeLightBox = function(id, title) {
- var html = this.getLightBoxHtml(id, title);
- var bdoc = BIGBYTE.USERSCRIPT.DOCUMENT;
- bdoc.addHtml_Node(html);
- };
-
- /**
- * Init that fires when Clibporad Lib is loaded
- */
- sthl.clipboardInit = function() {
-
- var clipboard = new Clipboard('#gmcopy', {
- text: function(trigger) {
- var $ = jQuery;
- $.event.trigger({
- type: 'codeConversionStart',
- message: 'convert_list_start',
- time: new Date(),
- source: 'gmcopy'
- });
-
- var contentHtml;
- try {
- contentHtml = BIGBYTE.USERSCRIPT.STHL.getConvertedList();
- } catch (e) {
- // statements
- console.log(e);
- }
- $.event.trigger({
- type: 'codeConversionFinish',
- message: 'convert_list_end',
- time: new Date(),
- source: 'gmcopy',
- html: contentHtml
- });
- return contentHtml;
- }
- });
- var clipboardTbl = new Clipboard('#gmcopytbl', {
- text: function(trigger) {
- var $ = jQuery;
- $.event.trigger({
- type: 'codeConversionStart',
- message: 'convert_table_start',
- time: new Date(),
- source: 'gmcopytbl'
- });
- var contentHtml;
- try {
- contentHtml = BIGBYTE.USERSCRIPT.STHL.getConvertedTable();
- } catch (e) {
- // statements
- console.log(e);
- }
-
- $.event.trigger({
- type: 'codeConversionFinish',
- message: 'convert_table_end',
- time: new Date(),
- source: 'gmcopytbl',
- html: contentHtml
- });
- return contentHtml;
-
- }
- });
-
- clipboard.on('success', function(e) {
- console.info('Action:', e.action);
- //console.info('Text:', e.text);
- console.info('Trigger:', e.trigger);
- alert('Data as been copied to the clipboard');
- });
-
- clipboard.on('error', function(e) {
- console.error('Action:', e.action);
- console.error('Trigger:', e.trigger);
- alert('Unable to copy data to the clipboard');
- });
-
- clipboardTbl.on('success', function(e) {
- console.info('Action:', e.action);
- console.info('Trigger:', e.trigger);
- alert('Data as been copied to the clipboard');
- });
-
- clipboardTbl.on('error', function(e) {
- console.error('Action:', e.action);
- console.error('Trigger:', e.trigger);
- alert('Unable to copy data to the clipboard');
- });
- };
-
- /**
- * Calls page like method to relaod the code from the origiona source
- * @return {[boolean]} returns true if the code was reset; Otherwise false
- */
- sthl.reHighlight = function() {
- if ($("#dropZone").val() == "") {
- $(".doneButton").attr("disabled", true);
- return false;
- }
- $("#theWholeEnchilada").html('<pre class="shi_pre"></pre>');
- $("#theWholeEnchilada .shi_pre").text($("#dropZone").val());
- languageSelected = $("#language_selected option:selected").val();
- styleSelected = $("#style_selected option:selected").val();
- lineNumber = $("#lineNumber").is(":checked");
- collapsing = ($("#collapsing").is(":checked") || $("#startCollapsing").is(":checked"));
- startCollapsing = $("#startCollapsing").is(":checked");
- boxStyling = $("#boxStyling").val();
- boxColorStyling = $("#boxColorStyling").val();
- boxFillStyling = $("#boxFillStyling").val();
- $("pre.shi_pre").snippet(languageSelected, {
- style: styleSelected,
- showNum: lineNumber,
- collapse: collapsing,
- startCollapsed: startCollapsing,
- box: boxStyling,
- boxColor: boxColorStyling,
- boxFill: boxFillStyling
- })
- return true;
- };
-
- /**
- * Set the page control value select elements if there are cookie value
- * otherwise save the cookie values
- */
- sthl.setFromCookies = function() {
- if (typeof($.cookie('language_selected_val')) == 'undefined') {
- $.cookie('language_selected_val', $("#language_selected option").filter(":selected").val(), {
- expires: 14
- });
- } else {
- $("#language_selected").val($.cookie('language_selected_val'));
- }
-
- if (typeof($.cookie('style_selected_val')) == 'undefined') {
- $.cookie('style_selected_val', $("#style_selected option").filter(":selected").val(), {
- expires: 14
- });
- } else {
- $("#style_selected").val($.cookie('style_selected_val'));
- }
- };
-
- // #endregion Methods
- // #region ensure Methods
- sthl.ensurePlugins = function($) {
- if (typeof($.fn.enableScroll) == 'undefined') {
- $.extend($.fn, {
- enableScroll: function(selector, height) {
- height = height || 'auto';
- if ((typeof(selector) == 'undefined') || (selector == null)) {
- $(this).css({
- 'overflow': 'auto',
- 'height': height
- });
-
- } else {
- $(this).find(selector).css({
- 'overflow': 'auto',
- 'height': height
- });
- }
- }
- });
- }
- if (typeof($.fn.disableScroll) == 'undefined') {
- $.extend($.fn, {
- disableScroll: function(selector, height) {
- height = height || '100%';
- if ((typeof(selector) == 'undefined') || (selector == null)) {
- $(this).css({
- 'overflow': 'hidden',
- 'height': height
- });
-
- } else {
- $(this).find(selector).css({
- 'overflow': 'hidden',
- 'height': height
- });
- }
- }
- });
- }
- if (typeof($.fn.spaceReplace) == 'undefined') {
- $.extend($.fn, {
- spaceReplace: function(recurse) {
- recurse = typeof(recurse) == 'undefined' ? false : recurse;
-
- if (recurse) {
- return this.find('*').each(function(index, value) {
- try {
- if (typeof(value) == 'undefined') {
- return;
- }
- $(value)._spaceRepaceSingle();
- } catch (e) {
- console.log('spaceReplace error:', e);
- }
-
- });
- } else {
- return this._spaceRepaceSingle();
- }
-
- },
- _spaceRepaceSingle: function() {
- this.contents().filter(function() {
- return this.nodeType == 3; // Text node
- }).each(function() {
- this.data = this.data.replace(/ /g, '\u00a0');
- });
- return this;
- }
- });
- }
- if (typeof($.fn.removeAttrib) == 'undefined') {
- $.extend($.fn, {
- removeAttrib: function(attributeName, recurse) {
- recurse = typeof(recurse) == 'undefined' ? false : recurse;
-
- if (recurse) {
- return $(this).find('*').each(function(index, value) {
- try {
- if (typeof(value) == 'undefined') {
- return;
- }
- $(value).removeAttr(attributeName);
- } catch (e) {
- // statements
- console.log('error:', e);
- }
-
- });
- } else {
- return $(this).removeAttr(attributeName);
- }
- }
- });
- }
- };
-
- /*
- * internal method that creates/loads makeCssInlineCode jQuery plugin
- * this plugin converts specific the css style of the element and child elemets into inline css style
- */
- sthl.ensureMakeCssInlineCodePlugin = function($) {
- if (typeof($.fn.makeCssInlineCode) == 'undefined') {
- $.extend($.fn, {
- makeCssInlineCode: function(forTable) {
- // forTable if true then will generate css a little diffferently for html table
- forTable = typeof(forTable) == 'undefined' ? false : forTable;
-
- this.each(function(idx, el) {
- var $this = $(el);
- var tagName = $this.tagName(true);
- if ($this.attr('class')) {
- // if element has a class then set the styles
- $this.css({
- color: $this.css('color'),
- fontWeight: $this.css('font-weight'),
- fontStyle: $this.css('font-style'),
- //fontSize: $this.css('font-size'),
- //fontFamily: $this.css('font-family'),
- textAlign: $this.css('text-align'),
- //whiteSpace: $this.css('white-space'),
- //wordWrap: $this.css('word-wrap')
- });
- }
- // get tagname in lowercase format;
- switch (tagName) {
- case 'li':
- $this.css({
- paddingLeft: $this.css('padding-left'),
- listStyle: $this.css('list-style'),
- backgroundColor: $this.css('background-color'),
- lineHeight: $this.css('line-height'),
- //borderLeft: $this.css('border-left'),
- borderTop: $this.css('border-top'),
- borderRight: $this.css('border-right'),
- borderBottom: $this.css('border-bottom'),
- borderLeftColor: $this.css('border-left-color'),
- borderTopColor: $this.css('border-top-color'),
- borderRightColor: $this.css('border-right-color'),
- borderBottomColor: $this.css('border-bottom-color'),
- borderLeft: $this.css('border-left'),
- color: $this.css('color'),
- fontWeight: $this.css('font-weight'),
- fontStyle: $this.css('font-style'),
- //fontSize: $this.css('font-size'),
- //fontFamily: $this.css('font-family'),
- textAlign: $this.css('text-align'),
- whiteSpace: $this.css('white-space'),
- wordWrap: $this.css('word-wrap'),
- margin: $this.css('margin'),
- 'list-style-position': $this.css('list-style-position')
-
- });
- break;
- case 'ol': // line numbers
- var padding = $this.css('-webkit-padding-start');
- $this.css({
- 'list-style-type': 'decimal',
- display: 'block',
- '-webkit-margin-before': '1em',
- '-moz-margin-before': '1em',
- '-khtml-margin-before': '1em',
- '-o-margin-before': '1em',
-
- '-webkit-margin-after': '1em',
- '-moz-margin-after': '1em',
- '-khtml-margin-after': '1em',
- '-o-margin-after': '1em',
-
- '-webkit-margin-start': '0px',
- '-moz-margin-start': '0px',
- '-khtml-margin-start': '0px',
- '-o-margin-start': '0px',
-
- '-webkit-margin-end': '0px',
- '-moz-margin-end': '0px',
- '-khtml-margin-end': '0px',
- '-o-margin-end': '0px',
-
- '-moz-padding-start': padding,
- '-khtml-padding-start': padding,
- '-o-padding-start': padding,
- 'padding-start': padding,
- 'padding-left': padding
- });
-
- break;
- case 'ul': // no line numbers
- $this.css({
- 'list-style-type': 'decimal',
- display: 'block',
- '-webkit-margin-before': '1em',
- '-moz-margin-before': '1em',
- '-khtml-margin-before': '1em',
- '-o-margin-before': '1em',
-
- '-webkit-margin-after': '1em',
- '-moz-margin-after': '1em',
- '-khtml-margin-after': '1em',
- '-o-margin-after': '1em',
-
- '-webkit-margin-start': '0px',
- '-moz-margin-start': '0px',
- '-khtml-margin-start': '0px',
- '-o-margin-start': '0px',
- '-webkit-margin-end': '0px',
- '-moz-margin-end': '0px',
- '-khtml-margin-end': '0px',
- '-o-margin-end': '0px',
-
- '-moz-padding-start': '0',
- '-khtml-padding-start': '0',
- '-o-padding-start': '0',
- 'padding-start': '0',
- 'padding-left': '0'
- });
- break;
- case 'span':
- if ((!forTable) && ($this.hasClass('box-sp'))) {
- $this.css({
- display: $this.css('display'),
- width: $this.css('width')
- });
- } else {
- $this.css({
- display: '',
- width: ''
- });
- }
- break;
- default:
- // statements_def
- break;
- }
-
- //var style = el.style;
- //$this.removeAttr('class'); // remove class from element
- $this.children().makeCssInlineCode(forTable);
- });
- }
- });
- }
- };
- /*
- * internal method that creates/loads makeCssInline jQuery plugin
- * this plugin converts all the css style of the element and child elemets into inline css style
- */
- sthl.ensureMakeCssInlinePlugin = function($) {
- if (typeof($.fn.makeCssInline) == 'undefined') {
- $.extend($.fn, {
- makeCssInline: function(recurse) {
- recurse = typeof(recurse) == 'undefined' ? false : recurse;
- if (recurse) {
- return this.find('*').each(function(index, value) {
- try {
- if (typeof(value) == 'undefined') {
- return;
- }
- $(value)._makeCssInlineSingle();
- } catch (e) {
- console.log('makeCssInline error:', e);
- }
-
- });
- } else {
- return this.each(function(index, value) {
- $(value)._makeCssInlineSingle();
- })
- }
- },
- _makeCssInlineSingle: function() {
-
- var el = this[0];
-
- var style = el.style;
- var properties = [];
- for (var property in style) {
- if (this.css(property)) {
- properties.push(property + ':' + this.css(property));
- }
- }
-
- el.style.cssText = properties.join(';');
- return this;
- }
- });
- }
-
- if (typeof($.fn.assignStyleFrom) == 'undefined') {
- /**
- * Assigns style of one jQuery Object to current object
- * @param {[jQuery]} el) A jQuery object or dom element
- * @return {[jQuery]} jQuery object with the new style assigned
- */
- $.extend($.fn, {
- assignStyleFrom: function(el) {
- if (typeof(el) == 'undefined') {
- return this;
- }
- var $el;
- if (el instanceof jQuery) {
- $el = el;
- } else {
- $el = jQuery(el);
- }
- if ($el.length === 0) {
- return this;
- }
- var style = $el[0].style;
- var properties = [];
- for (var property in style) {
- if ($el.css(property)) {
- properties.push(property + ':' + $el.css(property));
- }
- }
- this[0].style.cssText = properties.join(';');
- return this;
- }
- });
- }
- };
-
- // #endregion enusre Methods
- // #region Events
- /*
- * Event Handler that is fired when a script is loaded
- * This event fires each time a script is loaded.
- */
- sthl.onBbScriptLoaded = function(e) {
- var lib = BIGBYTE.USERSCRIPT.STHL;
- // delete the added script
-
- delete lib.scripts[e.detail.scriptItm.name];
- var done = lib.isScriptsLoaded();
- if (done) {
- var allScriptsLoaded = new CustomEvent(
- "allScriptsLoaded", {
- detail: {
- message: "All Scripts Loaded",
- time: new Date(),
- },
- bubbles: true,
- cancelable: false
- }
- );
- document.dispatchEvent(allScriptsLoaded);
- //jQuery(document).trigger("allScriptsLoaded");
- } else {
- // add the next script
- lib.loadScripts();
- }
- }
-
- /*
- * Event Handler that fires when all scripts are loaded
- * this is main loading point for the script.
- */
- sthl.onAllScriptsLoaded = function(e) {
- console.log('all scripts have been loaded.');
- jQuery(function($, undefined) {
- var lib = BIGBYTE.USERSCRIPT.STHL;
-
- if (typeof($.fn.tagName) == 'undefined') {
- // in older version of jquery tagname was retturned in uppercase but now is in lowercase
- $.fn.tagName = function(toLower) {
- var tn = this.prop("tagName");
- if (toLower) {
- tn = tn.toLowerCase();
- }
- return tn;
- };
- }
-
- // hide the intro section of the webpage
- $('#intro').hide();
-
- $(document).on("tinymceInit", lib.onTinymceInit);
- $(document).on("tinymceCancel", lib.onTinymceCancel);
- $(document).on("codeConversionStart", lib.onCodeConversionStart);
- $(document).on("codeConversionFinish", lib.onCodeConversionFinish);
- // $(document).on("clipboardLoaded", lib.clipboardInit);
- lib.clipboardInit();
- $('button.startOver').on('click', lib.onStartOverClick);
- $('button.doneButton').unbind('click').on('click', lib.onDoneButtonClick);
-
- // load the values from cookies and set page controls
- lib.setFromCookies();
-
- // events for page change
- $('#dropZone').on('change', {
- source: 'dropZone',
- type: 'textarea'
- }, lib.onPageMainChanged);
- $('select#language_selected').on("change", {
- source: 'language_selected',
- type: 'dropdown'
- }, lib.onPageMainChanged);
- $('select#style_selected').on('change', {
- source: 'style_selected',
- type: 'dropdown'
- }, lib.onPageMainChanged);
- $('input#lineNumber').on('change', {
- source: 'lineNumber',
- type: 'checkbox'
- }, lib.onPageMainChanged);
- $('input#boxColorStyling').on('change', {
- source: 'boxColorStyling',
- type: 'input'
- }, lib.onPageMainChanged);
- $('input#boxFillStyling').on('change', {
- source: 'boxFillStyling',
- type: 'input'
- }, lib.onPageMainChanged);
- $('button.startOver').on('click', {
- source: 'button.startOver',
- type: 'button'
- }, lib.onPageReset);
-
- $(document).on('tinymceFullScreen', lib.onTinyMceFulllscreen);
-
- $('body').append('<input id="gmhidden" type="hidden" value="" />');
-
- lib.ensureMakeCssInlinePlugin($);
- lib.ensureMakeCssInlineCodePlugin($);
- lib.ensurePlugins($);
- lib.initToolbar($);
- lib.lightBoxAddCss();
- lib.writeLightBox();
- lib.createToggleButton(); // create the toggle button to toggle tinymce
- lib.TMCE.init();
-
- sthl.initLineNumbers($);
-
- $('.gmclose').click(function() {
- $.event.trigger({
- type: "tinymceCancel",
- message: 'cancel',
- time: new Date(),
- tinyMceId: 'gminput'
- });
- });
-
-
- });
- };
- /**
- * Event that fires when the page code elements have changed
- */
- sthl.onPageMainChanged = function(e) {
- var lib = BIGBYTE.USERSCRIPT.STHL;
- var $ = jQuery;
- if ($("#dropZone").val() == "") {
- lib.toggleButtons(false);
- } else {
- lib.toggleButtons(true);
- }
-
- switch (e.data.source) {
- case 'language_selected': // dropeown language has been changed
- $.cookie('language_selected_val', $("#language_selected option").filter(":selected").val(), {
- expires: 14
- });
- break;
- case 'style_selected':
- $.cookie('style_selected_val', $("#style_selected option").filter(":selected").val(), {
- expires: 14
- });
- break;
- default:
- // statements_def
- break;
- }
- };
-
- /**
- * Event that fire when the page reset takes place
- * @param {[objece]} e event args
- */
- sthl.onPageReset = function(e) {
- var lib = BIGBYTE.USERSCRIPT.STHL;
- lib.toggleButtons(false);
- lib.isCodeStyled = false;
- // set elements from cookies
- lib.setFromCookies();
- };
-
- sthl.onDoneButtonClick = function(e) {
-
- if ($("#dropZone").val() == "") {
- return
- }
- var lib = BIGBYTE.USERSCRIPT.STHL;
- // highlight the code again if it has been styled
- if (lib.isCodeStyled == true) {
-
- lib.reHighlight();
- lib.isCodeStyled == false;
- }
-
- if ($("#step4:visible")) {
- $("#step4").slideToggle()
- }
- $("#step5").slideToggle();
- $(this).parents(".wrapper").slideToggle();
- $("#theWholeEnchilada").css("height", "0");
- $("#htmlToCopy").val($("#theWholeEnchilada").html());
- document.getElementById($("#style_selected").val()).style.display = "block"
-
- // add tiny mce toggle option on top of the
- // formated source code window
- var nsTmce = BIGBYTE.USERSCRIPT.STHL.TMCE;
- jQuery('#btncustomtoggle').show();
- nsTmce.initHtmlTocopy();
- tinyMCE.execCommand('mceToggleEditor', true, 'htmlToCopy');
-
- };
- sthl.onStartOverClick = function(e) {
- var $ = jQuery;
- var lib = BIGBYTE.USERSCRIPT.STHL;
- tinyMCE.execCommand('mceRemoveEditor', true, 'htmlToCopy');
- $('btncustomtoggle').hide();
- // fixes issue with theWholeEnchilada have a height of auto after reset
- // this fix is only needed due to this script making a chnage somewhere
- // along the way
- $('#theWholeEnchilada').css({
- height: 'auto'
- });
- lib.isCodeStyled = false;
-
- };
- sthl.onCodeConversionStart = function(e) {
- var lib = BIGBYTE.USERSCRIPT.STHL;
- if (lib.reHighlight()) {
- //console.log('code is rewritten');
- } else {
- //console.log('unable to rewrite code');
- }
- };
- sthl.onCodeConversionFinish = function(e) {
- var lib = BIGBYTE.USERSCRIPT.STHL;
- lib.toggleButtons(true);
- // set the property that indicates
- // if the colorized code has had syyles added to it
- lib.isCodeStyled = true;
- };
-
-
- /**
- * Event that fire when TinyMce is initiated
- */
- sthl.onTinymceInit = function(e) {
- //console.log('Tiny Mce Init was triggered');
- };
- /**
- * Event that fire when TinyMce save is clicked
- */
- sthl.onTinymceSave = function(e) {
- var $ = jQuery;
- if (e.tinyMceId == 'gminput') {
- //console.log('Tiny Mce save was triggered');
- BIGBYTE.USERSCRIPT.STHL.lightBoxReset();
- var libTmce = BIGBYTE.USERSCRIPT.STHL.TMCE;
- if ($('body').hasClass('mce-fullscreen')) {
- $('body').removeClass('mce-fullscreen');
- }
- $(document).enableScroll('html, body');
- // $('body').animate({ scrollTop: this.windowScrollPos}, 'slow');
- $('body').scrollTop(this.windowScrollPos);
- }
-
- };
- /**
- * Event that fire when TinyMce close is clicked
- */
- sthl.onTinymceCancel = function(e) {
- var $ = jQuery;
- if (e.tinyMceId == 'gminput') {
- BIGBYTE.USERSCRIPT.STHL.lightBoxReset();
- tinymce.get('gminput').setContent(''); // clean up tinymce
- var libTmce = BIGBYTE.USERSCRIPT.STHL.TMCE;
- if ($('body').hasClass('mce-fullscreen')) {
- $('body').removeClass('mce-fullscreen');
- }
- $(document).enableScroll('html, body');
- $('body').scrollTop(this.windowScrollPos);
- }
-
- };
- sthl.onTinyMceFulllscreen = function(e) {
- var $ = jQuery;
- if (e.tinyMceId == 'gminput') {
- if (e.state) {
- if ($('#tinybox').hasClass('gmbox-window')) {
- $('#tinybox').removeClass('gmbox-window');
- }
- } else {
- if (!$('#tinybox').hasClass('gmbox-window')) {
- $('#tinybox').addClass('gmbox-window');
- }
- }
- }
- };
- // #endregion Events
- // #endnsregion
- // #nsregion BIGBYTE.USERSCRIPT.STHL.TMCE
- // #region Create NS
- var tmce = BIGBYTE.createNS("BIGBYTE.USERSCRIPT.STHL.TMCE");
- tmce.ns = 'BIGBYTE.USERSCRIPT.STHL.TMCE';
- // #endregion Create ns
- // #region Properties
- tmce.scriptOutputted = false;
- tmce.fullscreen = false;
- tmce.loopcount = 0;
- tmce.version = '4.3.4';
- // #endregion Properties
- // #region init
- if (typeof(tmce.init) == 'undefined') {
- tmce.init = function() {
- var ver = this.version;
- var id = 'gminput';
- tinyMCE.init({
- selector: 'textarea#' + id,
- visual: false, // turn off visual aids by default
- //entity_encoding: 'named',
- //entities: '160,nbsp',
- init_instance_callback: function() {
- jQuery('.mce-i-mysave').addClass('fi-save').css({
- color: 'black'
- });
- // add x icon to button
- jQuery('.mce-i-myexit').addClass('fi-x').css({
- color: 'black'
- });
- jQuery.event.trigger({
- type: "tinymceInit",
- message: 'init',
- time: new Date(),
- tinyMceId: id
- });
- },
- height: 260,
- // extended_valid_elements : "span[!class]",
- inline: false,
- browser_spellcheck: true,
- plugins: "",
- menubar: "edit insert format view tools table",
- toolbar1: 'mysave myexit insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link',
- toolbar2: 'fullscreen print preview media | forecolor backcolor | insertdatetime table searchreplace code',
- external_plugins: {
- 'fullscreen': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/fullscreen/plugin.min.js',
- 'textcolor': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/textcolor/plugin.min.js',
- 'nonbreaking': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/nonbreaking/plugin.min.js',
- 'insertdatetime': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/insertdatetime/plugin.min.js',
- 'code': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/code/plugin.min.js',
- 'hr': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/hr/plugin.min.js',
- 'searchreplace': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/searchreplace/plugin.min.js',
- 'table': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/table/plugin.min.js'
- },
- //valid_elements: 'ol ul',
- //extended_valid_elements: 'ol[|class|style] ul[class|style]',
- keep_styles: false,
- setup: function(ed) {
- // Add a custom button
- ed.on('FullscreenStateChanged', function(e) {
- this.fullscreen = e.state;
- jQuery.event.trigger({
- type: "tinymceFullScreen",
- message: 'fullscreen toogle',
- time: new Date(),
- state: e.state,
- tinyMceId: id
-
- });
-
- });
- ed.addButton('myexit', {
- title: 'Close',
- onclick: function() {
- jQuery.event.trigger({
- type: "tinymceCancel",
- message: 'cancel',
- time: new Date(),
- tinyMceId: id
- });
- }
- });
-
- }
- });
-
- };
- }
- if (typeof(tmce.initHtmlTocopy) == 'undefined') {
- tmce.initHtmlTocopy = function() {
- var ver = this.version;
- var id = 'htmlToCopy'
- tinyMCE.init({
- selector: 'textarea#' + id,
- visual: false, // turn off visual aids by default
- init_instance_callback: function() {
- jQuery.event.trigger({
- type: "tinymceInit",
- message: 'initHtmlTocopy',
- time: new Date(),
- tinyMceId: id
- });
- },
- height: 260,
- // extended_valid_elements : "span[!class]",
- inline: false,
- browser_spellcheck: true,
- plugins: "",
- menubar: "edit insert format view tools table",
- toolbar1: 'myexit insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link',
- toolbar2: 'fullscreen print preview media | forecolor backcolor | insertdatetime table searchreplace code',
- external_plugins: {
- 'fullscreen': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/fullscreen/plugin.min.js',
- 'textcolor': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/textcolor/plugin.min.js',
- 'nonbreaking': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/nonbreaking/plugin.min.js',
- 'insertdatetime': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/insertdatetime/plugin.min.js',
- 'code': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/code/plugin.min.js',
- 'hr': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/hr/plugin.min.js',
- 'searchreplace': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/searchreplace/plugin.min.js',
- 'table': 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/' + ver + '/plugins/table/plugin.min.js'
- },
- //theme : "advanced",
- theme_advanced_toolbar_location: "top",
- theme_advanced_toolbar_align: "left",
- theme_advanced_statusbar_location: "bottom",
- theme_advanced_resizing: true,
- content_css: 'shi/css/shi_default.min.css',
- setup: function(ed) {
- // Add a custom button
- ed.on('FullscreenStateChanged', function(e) {
-
- jQuery.event.trigger({
- type: "tinymceFullScreen",
- message: 'fullscreen toogle',
- time: new Date(),
- state: e.state,
- tinyMceId: id
- });
-
- });
- }
- //theme_advanced_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Row=tableRow1"
-
- });
- };
- }
-
- // #endregion init
- // #endnsregion BIGBYTE.USERSCRIPT.STHL.TMCE
-
- // init the lib objects.
- sthl.init();