private function qsafe($text, $addComma = false) { $text = sprintf('"%s"', HTMLentities(addslashes($text))); if ($addComma) { $text .= ', '; } return $text; }
public function action_admin_header($theme) { $vars = Controller::get_handler_vars(); $js_xid2def = ''; if ($theme->page == 'plugins' && isset($vars['configure']) && $this->plugin_id == $vars['configure']) { Stack::add('admin_stylesheet', array($this->get_url() . '/macros.css', 'screen'), 'macros', array('admin')); $macros = DB::get_results('SELECT * FROM ' . DB::table('macro') . ' ORDER BY name ASC'); $js_xid2def .= "\n \$(document).ready(function(){\n" . " mDefs = [];\n" . " mDefs[0] = ['', false, false, 0, '', ''];\n"; foreach ($macros as $macro) { $xid = $macro->xid; $nargs = $macro->nargs; $enabled = $macro->enabled; $name = HTMLentities("'" . $macro->name . "'"); $desc = HTMLentities("'" . $macro->description . "'"); $def = HTMLentities("'" . $macro->definition . "'"); $container = $macro->container ? 'true' : 'false'; $eval = $macro->eval ? 'true' : 'false'; $js_xid2def .= " mDefs[{$xid}] = [" . $name . ', ' . $enabled . ', ' . $container . ', ' . $eval . ', ' . $nargs . ', ' . $desc . ', ' . $def . "];\n"; } $js_xid2def .= " \$('#mName select')" . ".change(function(){\n" . " mNum = \$(this).val();\n" . " \$('#mEnabled input[type=\"checkbox\"]')" . ".attr('checked', mDefs[mNum][1]);\n" . " \$('#mDefinition input').val(\$('<input value=\"' + mDefs[mNum][6] + '\"/>').val());\n" . " \$('#mContainer input[type=\"checkbox\"]')" . ".attr('checked', mDefs[mNum][2]);\n" . " \$('#mEval input[type=\"checkbox\"]')" . ".attr('checked', mDefs[mNum][3]);\n" . " \$('#mNargs input[type=\"text\"]')" . ".val(\$('<input value=\"' + mDefs[mNum][4] + '\"/>').val());\n" . " \$('#mDescription input[type=\"text\"]')" . ".val(\$('<input value=\"' + mDefs[mNum][5] + '\"/>').val());\n" . " \$('#mDefinition input[type=\"text\"]')" . ".val(\$('<input value=\"' + mDefs[mNum][6] + '\"/o>').val())});\n" . " })\n"; Stack::add('admin_header_javascript', $js_xid2def, 'macros', 'admin'); } }