📄 chameleon_js.php
字号:
<?phpheader("Content-type: text/plain; charset=utf-8");$chameleon_theme_root = explode('/', $_SERVER['PHP_SELF']);array_pop($chameleon_theme_root);array_pop($chameleon_theme_root);$chameleon_theme_root = implode('/', $chameleon_theme_root);?>if (!window.Node) { var Node = { ELEMENT_NODE: 1, ATTRIBUTE_NODE: 2, TEXT_NODE: 3, CDATA_SECTION_NODE: 4, ENTITY_REFERENCE_NODE: 5, ENTITY_NODE: 6, PROCESSING_INSTRUCTIONS_NODE: 7, COMMENT_NODE: 8, DOCUMENT_NODE: 9, DOCUMENT_TYPE_NODE: 10, DOCUMENT_FRAGMENT_NODE: 11, NOTATION_NODE: 12 };}String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, '');};(function() { var struct = []; var hotspotMode = null; var Config = { THEME_ROOT: '<?php echo $chameleon_theme_root; ?>', REMOTE_URI: '<?php echo substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')); ?>/css.php<?php echo (isset($_GET['id'])) ? '?id='.(int) $_GET['id'] : '?dummy=1'; ?>', FONTS_LIST: ['verdana, arial, helvetica, sans-serif', '"trebuchet ms", verdana, sans-serif', 'georgia, "trebuchet ms", times, serif', 'Other'], FONT_WEIGHTS: ['normal', 'bold'], FONT_STYLES: ['normal', 'italic'], TEXT_DECORATION: ['none', 'underline', 'overline', 'line-through'], TEXT_ALIGN: ['left', 'right', 'center', 'justify'], REPEAT_LIST: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'], POSITION_LIST: ['left top', 'left center', 'left bottom', 'center top', 'center center', 'center bottom', 'right top', 'right center', 'right bottom'], BORDER_LIST: ['solid', 'dotted', 'dashed', 'none'], UNITS: ['px', 'pt', 'em', '%'], PROPS_LIST: ['color', 'background-color', 'background-image', 'background-attachment', 'background-position', 'font-family', 'font-size', 'font-weight', 'font-style', 'line-height', 'margin', 'padding', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width', 'border-top-style', 'border-right-style', 'border-bottom-style', 'border-left-style', 'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color'] }; var Util = { __registry: {}, __uniqueId: 0, createElement: function(tag, id) { if (!id) var id = 'chameleon-element-' + ++Util.__uniqueId; var obj = document.createElement(tag); obj.setAttribute('id', id); return obj; }, removeElement: function(obj) { if (!obj || !obj.parentNode) return false; var kids = obj.getElementsByTagName('*'); if (!kids.length && typeof obj.all != 'undefined') { kids = obj.all; } var n = kids.length; while (n--) { if (kids[n].id && Util.__registry[kids[n].id]) { Util.__removeAllEvents(kids[n]); } } if (Util.__registry[obj.id]) { Util.__removeAllEvents(obj); } obj.parentNode.removeChild(obj); }, clearElement: function(obj) { while (obj.hasChildNodes()) { obj.removeChild(obj.firstChild); } }, addEvent: function(obj, ev, fn) { if (!Util.__addToRegistry(obj, ev, fn)) return; if (obj.addEventListener) { obj.addEventListener(ev, fn, false); } else if (obj.attachEvent) { obj['e' + ev + fn] = fn; obj[ev + fn] = function() { obj['e' + ev + fn](window.event); }; obj.attachEvent('on' + ev, obj[ev + fn]); } }, removeEvent: function(obj, ev, fn) { if (!Util.__removeFromRegistry(obj, ev, fn)) return; if (obj.removeEventListener) { obj.removeEventListener(ev, fn, false); } else if (obj.detachEvent) { obj.detachEvent('on' + ev, obj[ev + fn]); obj[ev + fn] = null; } }, __getEventId: function(obj) { if (obj == document) return 'chameleon-doc'; if (obj == window) return 'chameleon-win'; if (obj.id) return obj.id; return false; }, __findEvent: function(id, ev, fn) { var i = Util.__registry[id][ev].length; while (i--) { if (Util.__registry[id][ev][i] == fn) { return i; } } return -1; }, __addToRegistry: function(obj, ev, fn) { var id = Util.__getEventId(obj); if (!id) return false; if (!Util.__registry[id]) { Util.__registry[id] = {}; } if (!Util.__registry[id][ev]) { Util.__registry[id][ev] = []; } if (Util.__findEvent(id, ev, fn) == -1) { Util.__registry[id][ev].push(fn); return true; } return false; }, __removeFromRegistry: function(obj, ev, fn) { var id = Util.__getEventId(obj); if (!id) return false; var pos = Util.__findEvent(id, ev, fn); if (pos != -1) { Util.__registry[id][ev].splice(pos, 1); return true; } return false; }, __removeAllEvents: function(obj) { for (var event in Util.__registry[obj.id]) { var n = Util.__registry[obj.id][event].length; while (n--) { Util.removeEvent(obj, event, Util.__registry[obj.id][event][n]); } } }, cleanUp: function() { struct = null; UI.closeAllBoxes(); } }; var Pos = { getElement: function(obj) { var x = 0; var y = 0; if (obj.offsetParent) { while (obj.offsetParent) { x += obj.offsetLeft; y += obj.offsetTop; obj = obj.offsetParent; } } return {x: x, y: y}; }, getMouse: function(e) { var x = 0; var y = 0; if (e.pageX || e.pageY) { x = e.pageX; y = e.pageY; } else if (e.clientX || e.clientY) { x = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); y = e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); } return {x: x, y: y}; } }; var CSS = { __localCSS: {}, __remoteCSS: {}, __localSaveRequired: false, __remoteSaveRequired: false, requireRemoteSave: function() { CSS.__remoteSaveRequired = true; }, clearTheme: function() { /*var links = document.getElementsByTagName('link'); var n = links.length; while (n--) { if (links[n].href && links[n].href.indexOf('<?php echo $chameleon_theme_root . "/styles.php"; ?>') != -1) { links[n].parentNode.removeChild(links[n]); break; } }*/ }, loadRemote: function(doSetup) { if (!Sarissa.IS_ENABLED_XMLHTTP) { return false; } var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if (xmlhttp.responseText.indexOf('CHAMELEON_ERROR') != -1) { alert('There was an error loading from the server:\n' + xmlhttp.responseText.replace(/CHAMELEON_ERROR /, '') + '.'); return; } CSS.__remoteCSS = CSS.toObject(xmlhttp.responseText); CSS.__localCSS = CSS.__clone(CSS.__remoteCSS); CSS.preview(); if (doSetup) { setup(); } xmlhttp = null; } }; xmlhttp.open('GET', Config.REMOTE_URI + '&nc=' + new Date().getTime(), true); xmlhttp.send(null); return true; }, updateTemp: function(e, reset) { if (!CSS.__localSaveRequired && !reset) { UI.statusMsg('There are no changes that need saving!', 'chameleon-notice'); return; } if (!reset) { UI.statusMsg('Updating temporary styles on the server...', 'chameleon-working'); } else { UI.statusMsg('Deleting temporary styles from the server...', 'chameleon-working'); } var css = CSS.toString(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if (xmlhttp.responseText.indexOf('CHAMELEON_ERROR') != -1) { UI.statusMsg('There was an error saving to the server:\n' + xmlhttp.responseText.replace(/CHAMELEON_ERROR /, '') + '.', 'chameleon-error'); } else { CSS.__localSaveRequired = false; if (!reset) { UI.statusMsg('Temporary styles have been updated.', 'chameleon-ok'); } else { UI.statusMsg('Temporary styles have been cleared.', 'chameleon-ok'); } } xmlhttp = null; } }; xmlhttp.open('POST', Config.REMOTE_URI + '&temp=1', true); xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send('css=' + css); }, updateRemote: function() { if (!CSS.__remoteSaveRequired) { UI.statusMsg('There are no changes that need saving!', 'chameleon-notice'); return; } var css = CSS.toString(CSS.__localCSS); UI.statusMsg('Updating styles on the server...', 'chameleon-working'); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if (xmlhttp.responseText.indexOf('CHAMELEON_ERROR') != -1) { UI.statusMsg('There was an error saving to the server:\n' + xmlhttp.responseText.replace(/CHAMELEON_ERROR /, '') + '.', 'chameleon-error'); } else { CSS.__remoteCSS = CSS.toObject(css); CSS.__localSaveRequired = false; CSS.__remoteSaveRequired = false; UI.statusMsg('Styles have been saved to the server.', 'chameleon-ok'); } xmlhttp = null; } }; xmlhttp.open('POST', Config.REMOTE_URI, true); xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send('css=' + css); }, hardReset: function(e, noPrompt) { if (noPrompt || confirm('Are you sure? This will erase all styles that have not been permanently saved to the server.')) { CSS.__localCSS = {}; CSS.updateTemp(null, true); CSS.__localCSS = CSS.__clone(CSS.__remoteCSS); CSS.__localSaveRequired = false; CSS.__remoteSaveRequired = false; CSS.preview(); } },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -