{"generator":"Code Snippets v3.1.0","date_created":"2022-05-31 11:46","snippets":[{"name":"MA Oxygen Edit Stylesheets","desc":"Edit Oxygen Stylesheets outside Builder\n\nVersion 1.0.9, 2022-05-31\n\u00a9 2020-2022, Matthias Altmann\n\nInfo:\nen:\u00a0<a href=\"https:\/\/www.altmann.de\/en\/blog-en\/code-snippet-edit-oxygen-stylesheets-outside-builder\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.altmann.de\/en\/blog-en\/code-snippet-edit-oxygen-stylesheets-outside-builder\/<\/a>\nde:\u00a0<a href=\"https:\/\/www.altmann.de\/blog\/code-snippet-oxygen-stylesheets-ausserhalb-des-builders-bearbeiten\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.altmann.de\/blog\/code-snippet-oxygen-stylesheets-ausserhalb-des-builders-bearbeiten\/<\/a>","scope":"admin","code":"\/*\nPlugin Name:  MA Oxygen Edit Stylesheets\nDescription:  Direct access to Oxygen Stylesheet Editor\nAuthor:       <a href=\"https:\/\/www.altmann.de\/\">Matthias Altmann<\/a>\nVersion:      1.0.9\nPlugin URI:   https:\/\/www.altmann.de\/en\/blog-en\/code-snippet-edit-oxygen-stylesheets-outside-builder\/\nDescription:  en: https:\/\/www.altmann.de\/en\/blog-en\/code-snippet-edit-oxygen-stylesheets-outside-builder\/\n              de: https:\/\/www.altmann.de\/blog\/code-snippet-oxygen-stylesheets-ausserhalb-des-builders-bearbeiten\/\nCopyright:    \u00a9 2020-2022, Matthias Altmann\n\nVersion History:\nDate\t\tVersion\t\tDescription\n---------------------------------------------------------------------------------------------------------------------\n2022-05-31\t1.0.9\t\tFix: \n\t\t\t\t\t\t- Corrected folder\/stylesheet hierarchy\n\t\t\t\t\t\tChanges:\n\t\t\t\t\t\t- Renamed snippet from \"Oxygen: Edit Oxygen Stylesheets Outside Builder\" to \"MA Oxygen Edit Stylesheets\" \n\t\t\t\t\t\t- Removed configuration and all code for debugging.\n\t\t\t\t\t\tTested: \n\t\t\t\t\t\t- PHP 7.4, WordPress 6.0, Oxygen 3.9\n\t\t\t\t\t\t- PHP 8.0, WordPress 6.0, Oxygen 4.0\n2022-02-11\t\t\t\tTested:\n\t\t\t\t\t\t- PHP 8.0, WordPress 5.9, Oxygen 4.0 beta 1\n\t\t\t\t\t\tChanges:\n\t\t\t\t\t\t- Added hint to select a stylesheet to edit\n\t\t\t\t\t\t- Added notice if no global stylesheets defined\n2021-07-26\t1.0.8\t\tBug fix: Restored compatibility with WP 5.8 (wp_add_inline_script() did not work anymore as expected)\n\t\t\t\t\t\t(Thanks to Andr\u00e9 Babiak for reporting!)\n2021-04-13\t1.0.7\t\tBug fix: Postponed Oxygen check to init action to also support plugin mode.\n2021-03-21\t1.0.6\t\tBug fix: Check Oxygen plugin state before adding admin menu or accessing global colors\n\t\t\t\t\t\t(Thanks to Adrien Robert for reporting!)\n2021-02-20\t1.0.5\t\tTweak: Full height editor (Safari, finally?), scrollable stylesheets list\n2021-01-08\t1.0.4\t\tTweak: Full height editor \n2021-01-07\t1.0.3\t\tBug fix: Corrected changed flag logic \n2021-01-06\t1.0.2\t\tBug fix: Correct handling of quotes that get backslashed during transfer\n\t\t\t\t\t\tTweak: Implemented confirmation dialog for switching stylesheets when current one has been changed\n2020-12-30\t1.0.1\t\tBug fix: Fresh Oxygen site threw error since no stylesheets defined\n2020-12-19\t1.0.0\t\tInitial Release \n2020-12-17\t\t\t\tDevelopment start\n*\/\n\nclass MA_Oxygen_Edit_Stylesheets {\n\n\tconst TITLE     \t= 'MA Oxygen Edit Stylesheets';\n\tconst SLUG\t    \t= 'ma_oxygen_edit_stylesheets';\n\tconst VERSION   \t= '1.0.9';\n\t\n\t\/\/ Configuration\n\tprivate static $timing\t\t\t\t= false; \/\/ caution! may produce a lot of output\n\tprivate static $status_interval \t= 5000; \/\/ interval (ms) to refresh  \"builder open\" and \"stylesheet changed\" status\n\t\n\t\/\/ Internal data\n\tprivate static $oxygen_universal_message = ''; \/\/ temp storage for succes\/error message from oxygen\n\n\t\/\/-------------------------------------------------------------------------------------------------------------------\n\tstatic function init() {\n\t\t$st = microtime(true);\n\t\tadd_action('admin_menu', array( __CLASS__, 'admin_menu' ), 20 );\n\t\tadd_action('wp_ajax_'.self::SLUG.'_status', [__CLASS__, 'status' ]);\n\t\t$et = microtime(true);\n\t\tif (WP_DEBUG && self::$timing) {error_log(sprintf('%s::%s() Timing: %.5f sec.', self::TITLE, __FUNCTION__, $et-$st));}\n\t}\n\n\t\/\/-------------------------------------------------------------------------------------------------------------------\n\tstatic function admin_menu() {\n\t\t\/\/ check Oxygen plugin state and user access\n\t\tif (!function_exists('oxygen_vsb_current_user_can_full_access') || !oxygen_vsb_current_user_can_full_access()) {return;}\n\n\t\t\/\/ Add submenu page to the Oxygen menu.\n\t\tadd_submenu_page(\t'ct_dashboard_page', \t\t\t\t\t\t\/\/ parent slug of \"Oxygen\"\n\t\t\t\t\t\t\t_x('Edit Stylesheets','admin page title','ma_oxygen_edit_stylesheets'), \t\/\/ page title\n\t\t\t\t\t\t\t_x('Edit Stylesheets','admin menu title','ma_oxygen_edit_stylesheets'), \t\/\/ menu title\n\t\t\t\t\t\t\t'manage_options',\t\t\t\t\t\t\t\/\/ capabilitiy\n\t\t\t\t\t\t\tself::SLUG.'_page',\t\t\t\t\t\t\t\/\/ menu slug\n\t\t\t\t\t\t\t[__CLASS__,'edit_stylesheets']\t\t\t\t\/\/ method\n\t\t);\n\t}\n\t\/\/-------------------------------------------------------------------------------------------------------------------\n\t\/\/ Ajax handler to check 1) Oxygen Builder active, 2) Stylesheets changed in database\n\tstatic function status() {\n\t\t$st = microtime(true);\n\t\t\/\/ get parameters\n\t\t$ssid = isset($_REQUEST['ssid']) ? $_REQUEST['ssid'] : null;\n\t\t$hash = isset($_REQUEST['hash']) ? $_REQUEST['hash'] : null;\n\t\t\/\/ prepare data object to be returned\n\t\t$retval = (object)[\n\t\t\t'ct_builder_active' \t=> false,\n\t\t\t'ct_stylesheet_changed'\t=> false,\n\t\t];\n\t\t\/\/ check if Oxygen Builder is active\n\t\t$retval->ct_builder_active = get_transient('oxygen_post_edit_lock');\n\t\t\/\/ if we currently have a stylesheet selected...\n\t\tif ($ssid && $hash) {\n\t\t\t\/\/ ... check if this stylesheet has changed\n\t\t\t$stylesheets = get_option('ct_style_sheets');\n\t\t\t$new_hash = null;\n\t\t\t\/\/ loop through stylesheets to find current one\n\t\t\tforeach ($stylesheets as $stylesheet) {\n\t\t\t\tif ($stylesheet['id']==$ssid) {\n\t\t\t\t\t$sscode = base64_decode($stylesheet['css']);\n\t\t\t\t\t$new_hash = sha1($sscode);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t$retval->ct_stylesheet_changed = ($hash !== $new_hash);\n\t\t}\n\n\t\t$et = microtime(true);\n\t\tif (WP_DEBUG && self::$timing) {error_log(sprintf('%s::%s() => %s Timing: %.5f sec.', self::TITLE, __FUNCTION__, json_encode($retval), $et-$st));}\n\n\t\t\/\/ return JSON encoded data object\n\t\techo json_encode($retval);\n\t\twp_die();\n\t}\n\t\/\/-------------------------------------------------------------------------------------------------------------------\n\tstatic function edit_stylesheets() {\n\t\t$st = microtime(true);\n\n\t\t\/\/ check Oxygen plugin state and user access\n\t\tif (!function_exists('oxygen_vsb_current_user_can_full_access') || !oxygen_vsb_current_user_can_full_access()) {return;}\n\n\t\t\/\/ check if action = save \n\t\tif (isset($_REQUEST['action']) && ($_REQUEST['action'] == 'save-css') && isset($_REQUEST['ssid']) && isset($_REQUEST['code'])) {\n\t\t\t\/\/ save\n\t\t\t$ssid = $_REQUEST['ssid'];\n\t\t\t$code = $_REQUEST['code'];\n\t\t\tif (!isset($_REQUEST['save-css-nonce']) || !wp_verify_nonce($_REQUEST['save-css-nonce'], 'save-css-'.$ssid)) {\n\t\t\t\techo '<div class=\"notice notice-error\"><p>Invalid request (Nonce error)<\/p><\/div>';\n\t\t\t} else {\n\t\t\t\t\/\/ read current stylesheets\n\t\t\t\t$stylesheets = get_option('ct_style_sheets');\n\t\t\t\tif (!is_array($stylesheets)) $stylesheets = [];\n\t\t\t\tforeach ($stylesheets as &$stylesheet) {\n\t\t\t\t\tif ($stylesheet['id']==$ssid) {\n\t\t\t\t\t\t\/\/ remove backslashes from quotes that might be added during transfer \n\t\t\t\t\t\t$code = stripslashes($code);\n\t\t\t\t\t\t\/\/ override css code\n\t\t\t\t\t\t$stylesheet['css'] = base64_encode($code);\n\t\t\t\t\t\tupdate_option('ct_style_sheets',$stylesheets);\n\t\t\t\t\t\t\/\/ regenerate universal cache and show Oxygen's result message\n\t\t\t\t\t\t$result = oxygen_vsb_cache_universal_css();\n\t\t\t\t\t\tif ($result) \t{self::$oxygen_universal_message = __('Universal CSS cache generated successfully.','oxygen');}\n\t\t\t\t\t\telse \t\t\t{self::$oxygen_universal_message = __('Universal CSS cache not generated.','oxygen');}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tadd_action('admin_notices',function(){\n\t\t\t\t\techo '<div id=\"notice-saved\" class=\"notice notice-success is-dismissible\"><p>Saved successfully. Oxygen '.self::$oxygen_universal_message.'<\/p><\/div>'.\n\t\t\t\t\t\t\t'<script>setTimeout(function(){jQuery(\"#notice-saved\").fadeOut(\"slow\");},5000);<\/script>';\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t\n\n\t\t\/\/ stylesheet selection, current stylesheet code\n\t\t$ssid = @$_REQUEST['ssid'] ?? null;\n\t\t$ssdata = null;\n\t\t$sscode = '';\n\t\t$sshash = '';\n\n\t\t$stylesheets = get_option('ct_style_sheets');\n\t\t\/\/ @since 1.0.9\n\t\tif (!is_array($stylesheets)) $stylesheets = [];\n\t\t\/\/ build stylesheet hierarchy (may be out of order)\n\t\t$hierarchy = [\n\t\t\t\t'0' => ['id'=>0, 'parent'=>null, 'folder'=>1, 'name'=>'Uncategorized'],\n\t\t];\n\t\t\/\/ 1) find folders\n\t\tforeach ($stylesheets as $stylesheet) {\n\t\t\tif (array_key_exists('folder',$stylesheet)) {\n\t\t\t\t$hierarchy[$stylesheet['id']] = $stylesheet;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\t\/\/ 2) find stylesheets\n\t\tforeach ($stylesheets as $stylesheet) {\n\t\t\tif (array_key_exists('parent',$stylesheet)) {\n\t\t\t\t$parent = $stylesheet['parent'];\n\t\t\t\tif (array_key_exists($parent,$hierarchy)) {\n\t\t\t\t\tif (!array_key_exists('stylesheets',$hierarchy[$parent])) $hierarchy[$parent]['stylesheets'] = [];\n\t\t\t\t}\n\t\t\t\t$hierarchy[$parent]['stylesheets'][] = $stylesheet;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\n\t\tif (!count($hierarchy)) {\n\t\t\t\/\/ TODO: emit message?\t\t\t\n\t\t}\n\n\t\t\/\/ list enabled folders and stylesheets\n\t\t$tree = '<div class=\"ss-list\">';\n\t\tforeach (['Enabled','Disabled'] as $endis) {\n\t\t\t$tree .= sprintf('<h3>%s<\/h3><ul class=\"ss-tree\">', $endis);\n\t\t\tforeach ($hierarchy as $folder) {\n\n\t\t\t\tif (($endis == 'Enabled') \t&& (array_key_exists('status',$folder) && $folder['status']==0)) continue;\n\t\t\t\tif (($endis == 'Disabled') \t&& (!array_key_exists('status',$folder) || $folder['status']!=0)) continue;\n\t\t\t\t\n\t\t\t\t$tree .= sprintf('<li><span>%s<\/span><ul>', $folder['name']);\n\t\t\t\tif (array_key_exists('stylesheets',$folder)) {\n\t\t\t\t\tforeach ($folder['stylesheets'] as $stylesheet) {\n\t\t\t\t\t\t$tree .= sprintf('<li %s><a onclick=\"ma_oxygen_edit_stylesheets_switch(%d)\">%s<\/a><\/li>',$stylesheet['id']==$ssid?'class=\"active\"':'', $stylesheet['id'], $stylesheet['name']);\n\t\t\t\t\t\tif ($stylesheet['id']==$ssid) {\n\t\t\t\t\t\t\t$ssdata = $stylesheet;\n\t\t\t\t\t\t\t$sscode = base64_decode($stylesheet['css']);\n\t\t\t\t\t\t\t$sshash = sha1($sscode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$tree .= '<\/ul><\/li>';\n\t\t\t}\n\t\t\t$tree .= '<\/ul>';\n\t\t}\n\t\t$tree .= '<\/div>';\n\t\t?>\n\t\t<script>\n\t\tvar $can_change = false; \/\/\n\t\tvar $has_changed = false; \/\/ gets true if css code has been edited\n\t\tfunction sscode_changed() {\n\t\t\t$has_changed = true;\n\t\t\t\/\/if ($can_change) {jQuery('#but-css-save').removeAttr('disabled');}\n\t\t}\n\t\tfunction ma_oxygen_edit_stylesheets_switch($id) {\n\t\t\tif (!$has_changed || confirm('Stylesheet has been changed. Switch to another stylesheet anyways?')) {\n\t\t\t\tjQuery('.edit-screen__content').first().html('<div class=\"edit-screen__title\">Loading...<\/div>');\n\t\t\t\tsetTimeout(function(){document.location.href='?page=<?php echo self::SLUG.'_page'; ?>&ssid='+$id;}, 50);\n\t\t\t}\n\t\t}\n\n\t\tfunction ma_oxygen_edit_stylesheets_status() {\n\t\t\tvar $ajax_data = {\n\t\t\t\t'action': '<?php echo self::SLUG.'_status'; ?>', \/\/ name of the AJAX function\n\t\t\t\t'ssid': '<?php echo $ssid; ?>',\n\t\t\t\t'hash': '<?php echo $sshash; ?>',\n\t\t\t};\n\t\t\tjQuery.ajax({\n\t\t\t\turl: ajaxurl, \/\/ this will point to admin-ajax.php\n\t\t\t\ttype: 'POST',\n\t\t\t\tdata: $ajax_data, \n\t\t\t\tsuccess: function ($response) {\n\t\t\t\t\t$response = JSON.parse($response);\n\t\t\t\t\t\/\/console.log('ma_oxygen_edit_stylesheets_status',$response);\n\t\t\t\t\t$notice = [];\n\t\t\t\t\tif ($response.ct_builder_active) {\n\t\t\t\t\t\tjQuery('#notice-builder-open').show();\n\t\t\t\t\t\t$can_change = false;\n\t\t\t\t\t\tjQuery('#but-css-save').attr('disabled','disabled');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery('#notice-builder-open').hide();\n\t\t\t\t\t\t$can_change = true;\n\t\t\t\t\t\tjQuery('#but-css-save').removeAttr('disabled');\n\t\t\t\t\t}\n\t\t\t\t\tif ($response.ct_stylesheet_changed) {\n\t\t\t\t\t\tjQuery('#notice-stylesheet-changed').show();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tjQuery('#notice-stylesheet-changed').hide();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tsetTimeout(ma_oxygen_edit_stylesheets_status,<?php echo self::$status_interval; ?>);\n\t\t}\n\t\t<\/script>\n\t\t<style id=\"ma_edit_stylesheet\">\n\t\t#wpbody-content * {box-sizing:border-box;}\n\t\t#wpbody-content {position:relative;height:calc(100vh - 32px - 40px);max-width:100%;padding-bottom:0;margin-right:20px;}\n\t\t#wpbody-content > .wrap {width:100%;height:100%;display:flex;flex-direction:column;margin:0;}\n\t\t#edit-screen {margin-top:2em;flex-grow:1;display:flex;flex-direction:row;max-height:100%;}\n\t\t@media (max-width:900px) {#edit-screen {display:flex;flex-direction:column;}}\n\t\t\/* left column *\/\n\t\t.edit-screen__control {display:flex;flex-direction:column;}\n\t\t.ss-list {margin:0 20px 0 0;width:300px;flex-grow:1;overflow-y:auto;}\n\t\t.ss-tree {}\n\t\t.ss-tree li {margin:0 0margin-bottom:5px;}\n\t\t.ss-tree li span {display:block;padding:5px;font-weight:bold;background-color:darkgray;border-radius:3px;margin-bottom:5px;}\n\t\t.ss-tree ul {margin-left:20px;}\n\t\t.ss-tree ul li {}\n\t\t.ss-tree ul li a {display:inline-block;width:calc(100% - 10px);padding:5px;border-radius:3px;background-color:lightgray;color:black;cursor:pointer;}\n\t\t.ss-tree ul li.active a {background-color:lightblue;color:black;}\n\t\t\/* right column *\/\n\t\t.edit-screen__content {flex-grow:1;display:flex;flex-direction:column;}\n\t\t.edit-screen__content #code {display:none;}\n\t\t.edit-screen__title {font-size:18px;margin-bottom:10px;}\n\n\t\t.ma_oxygen_edit_stylesheets_code {border: 1px solid lightgray;flex-grow:1;margin-bottom:20px;margin-right:20px;display:flex;flex-direction:column;}\n\t\t.ma_oxygen_edit_stylesheets_code form {flex-grow:1;display:flex;flex-direction:column;}\n\t\t.ma_oxygen_edit_stylesheets_code .CodeMirror {flex-grow:1;display:flex;flex-direction:column;}\n\t\t.ma_oxygen_edit_stylesheets_code .CodeMirror-scroll {flex-grow:1;}\n\t\t\n\t\t<\/style>\n\t\t<div class=\"wrap\">\n\t\t\t<h1><?php echo esc_html(get_admin_page_title()); ?><\/h1>\n\t\t\t<?php do_action( 'admin_notices' ); ?>\n\t\t\t<div id=\"notice-builder-open\" class=\"notice notice-error\" style=\"display:<?php echo get_transient('oxygen_post_edit_lock')?'block':'none'?>;\">\n\t\t\t\t<p><?php _ex('Oxygen Builder is open in another browser tab. CSS changes not allowed.','builder open warning','ma_oxygen_edit_stylesheets'); ?><\/p>\n\t\t\t<\/div>\n\t\t\t<div id=\"notice-stylesheet-changed\" class=\"notice notice-warning\" style=\"display:none\">\n\t\t\t\t<p><?php _ex('This stylesheet has been changed in database. Please <a href=\"\" onclick=\"location.reload()\">reload<\/a>!','stylesheet changed warning','ma_oxygen_edit_stylesheets'); ?><\/p>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t<div id=\"edit-screen\">\n\t\t\t\t<div class=\"edit-screen__control\">\n\t\t\t\t\t<div class=\"edit-screen__title\">Stylesheets:<\/div>\n\t\t\t\t\t<?php if (!is_array($stylesheets) || !count($stylesheets)) : ?>\n\t\t\t\t\t\t<p>No global stylesheets defined in Oxygen.<\/p>\n\t\t\t\t\t<?php else :?>\n\t\t\t\t\t\t<?php echo $tree; ?>\n\t\t\t\t\t<?php endif; ?>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"edit-screen__content\" >\n\t\t\t\t\t<?php if (!$ssid) : ?>\n\t\t\t\t\t\t<?php if (is_array($stylesheets) && count($stylesheets)) : ?>\n\t\t\t\t\t\t\t<p style=\"margin-top:4em;text-align:center;\">\u25c0\ufe0e Please select a stylesheet.<\/p>\n\t\t\t\t\t\t<?php else :?>\n\t\t\t\t\t\t\t<p>No stylesheets defined in Oxygen.<\/p>\n\t\t\t\t\t\t<?php endif; ?>\n\t\t\t\t\t<?php else : ?>\n\t\t\t\t\t\t<div class=\"edit-screen__title\">Current Stylesheet: <?php echo (isset($ssdata['name']) ? $ssdata['name'] : ''); ?><\/div>\n\t\t\t\t\t\t<div class=\"ma_oxygen_edit_stylesheets_code\">\n\t\t\t\t\t\t\t<form method=\"post\">\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"action\" value=\"save-css\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"id\" value=\"<?php echo $ssid ; ?>\"\/>\n\t\t\t\t\t\t\t\t<?php wp_nonce_field('save-css-'.$ssid,'save-css-nonce'); ?>\n\t\t\t\t\t\t\t\t<textarea id=\"code\" name=\"code\"><?php echo $sscode; ?><\/textarea>\n\t\t\t\t\t\t\t\t<p style=\"text-align:center;\"><button id=\"but-css-save\" type=\"submit\" class=\"button button-primary\" disabled >Save<\/button><\/p>\n\t\t\t\t\t\t\t<\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<?php endif; ?>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t\t<script>ma_oxygen_edit_stylesheets_status();<\/script>\n\t\t<?php $editor = wp_enqueue_code_editor(['type'=>'text\/css']); ?>\n\t\t<script>\n\t\tjQuery( function($) {\n\t\t\tif ( $('#code').length ) {\n\t\t\t\tlet editor = wp.codeEditor.initialize('code', <?php wp_json_encode( $editor ) ?>);\n\t\t\t\teditor.codemirror.on('change',function(codemirror) {sscode_changed();});\n\t\t\t}\n\t\t} );\n\t\t<\/script>\n\t\t<?php\n\t\t$et = microtime(true);\n\t\tif (WP_DEBUG && self::$timing) {error_log(sprintf('%s::%s() Timing: %.5f sec.',self::TITLE,__FUNCTION__,$et-$st));}\n\t}\n}\n\/\/ only initialize if Oxygen plugin is initialized\nadd_action('init',function(){\n\tif (defined('CT_VERSION')) {\n\t\tMA_Oxygen_Edit_Stylesheets::init();\n\t}\n});\n\n\n","priority":"10"}]}