Файловый менеджер - Редактировать - /home/lmsyaran/public_html/khadem/editors.tar
Назад
codemirror/codemirror.php 0000644 00000024473 15116776115 0011613 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.codemirror * * @copyright (C) 2009 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ // No direct access defined('_JEXEC') or die; /** * CodeMirror Editor Plugin. * * @since 1.6 */ class PlgEditorCodemirror extends JPlugin { /** * Affects constructor behavior. If true, language files will be loaded automatically. * * @var boolean * @since 3.1.4 */ protected $autoloadLanguage = true; /** * Mapping of syntax to CodeMirror modes. * * @var array */ protected $modeAlias = array(); /** * Initialises the Editor. * * @return void */ public function onInit() { static $done = false; // Do this only once. if ($done) { return; } $done = true; // Most likely need this later $doc = JFactory::getDocument(); // Codemirror shall have its own group of plugins to modify and extend its behavior JPluginHelper::importPlugin('editors_codemirror'); $dispatcher = JEventDispatcher::getInstance(); // At this point, params can be modified by a plugin before going to the layout renderer. $dispatcher->trigger('onCodeMirrorBeforeInit', array(&$this->params)); $displayData = (object) array('params' => $this->params); // We need to do output buffering here because layouts may actually 'echo' things which we do not want. ob_start(); JLayoutHelper::render('editors.codemirror.init', $displayData, __DIR__ . '/layouts'); ob_end_clean(); $font = $this->params->get('fontFamily', '0'); $fontInfo = $this->getFontInfo($font); if (isset($fontInfo)) { if (isset($fontInfo->url)) { $doc->addStyleSheet($fontInfo->url); } if (isset($fontInfo->css)) { $displayData->fontFamily = $fontInfo->css . '!important'; } } // We need to do output buffering here because layouts may actually 'echo' things which we do not want. ob_start(); JLayoutHelper::render('editors.codemirror.styles', $displayData, __DIR__ . '/layouts'); ob_end_clean(); $dispatcher->trigger('onCodeMirrorAfterInit', array(&$this->params)); } /** * Copy editor content to form field. * * @param string $id The id of the editor field. * * @return string Javascript * * @deprecated 4.0 Code executes directly on submit */ public function onSave($id) { return sprintf('document.getElementById(%1$s).value = Joomla.editors.instances[%1$s].getValue();', json_encode((string) $id)); } /** * Get the editor content. * * @param string $id The id of the editor field. * * @return string Javascript * * @deprecated 4.0 Use directly the returned code */ public function onGetContent($id) { return sprintf('Joomla.editors.instances[%1$s].getValue();', json_encode((string) $id)); } /** * Set the editor content. * * @param string $id The id of the editor field. * @param string $content The content to set. * * @return string Javascript * * @deprecated 4.0 Use directly the returned code */ public function onSetContent($id, $content) { return sprintf('Joomla.editors.instances[%1$s].setValue(%2$s);', json_encode((string) $id), json_encode((string) $content)); } /** * Adds the editor specific insert method. * * @return void * * @deprecated 4.0 Code is loaded in the init script */ public function onGetInsertMethod() { static $done = false; // Do this only once. if ($done) { return true; } $done = true; JFactory::getDocument()->addScriptDeclaration(" ;function jInsertEditorText(text, editor) { Joomla.editors.instances[editor].replaceSelection(text); } "); return true; } /** * Display the editor area. * * @param string $name The control name. * @param string $content The contents of the text area. * @param string $width The width of the text area (px or %). * @param string $height The height of the text area (px or %). * @param int $col The number of columns for the textarea. * @param int $row The number of rows for the textarea. * @param boolean $buttons True and the editor buttons will be displayed. * @param string $id An optional ID for the textarea (note: since 1.6). If not supplied the name is used. * @param string $asset Not used. * @param object $author Not used. * @param array $params Associative array of editor parameters. * * @return string HTML */ public function onDisplay( $name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array()) { // True if a CodeMirror already has autofocus. Prevent multiple autofocuses. static $autofocused; $id = empty($id) ? $name : $id; // Must pass the field id to the buttons in this editor. $buttons = $this->displayButtons($id, $buttons, $asset, $author); // Only add "px" to width and height if they are not given as a percentage. $width .= is_numeric($width) ? 'px' : ''; $height .= is_numeric($height) ? 'px' : ''; // Options for the CodeMirror constructor. $options = new stdClass; // Is field readonly? if (!empty($params['readonly'])) { $options->readOnly = 'nocursor'; } // Should we focus on the editor on load? if (!$autofocused) { $options->autofocus = isset($params['autofocus']) ? (bool) $params['autofocus'] : false; $autofocused = $options->autofocus; } $options->lineWrapping = (boolean) $this->params->get('lineWrapping', 1); // Add styling to the active line. $options->styleActiveLine = (boolean) $this->params->get('activeLine', 1); // Do we highlight selection matches? if ($this->params->get('selectionMatches', 1)) { $options->highlightSelectionMatches = array( 'showToken' => true, 'annotateScrollbar' => true, ); } // Do we use line numbering? if ($options->lineNumbers = (boolean) $this->params->get('lineNumbers', 1)) { $options->gutters[] = 'CodeMirror-linenumbers'; } // Do we use code folding? if ($options->foldGutter = (boolean) $this->params->get('codeFolding', 1)) { $options->gutters[] = 'CodeMirror-foldgutter'; } // Do we use a marker gutter? if ($options->markerGutter = (boolean) $this->params->get('markerGutter', $this->params->get('marker-gutter', 1))) { $options->gutters[] = 'CodeMirror-markergutter'; } // Load the syntax mode. $syntax = !empty($params['syntax']) ? $params['syntax'] : $this->params->get('syntax', 'html'); $options->mode = isset($this->modeAlias[$syntax]) ? $this->modeAlias[$syntax] : $syntax; // Load the theme if specified. if ($theme = $this->params->get('theme')) { $options->theme = $theme; JHtml::_('stylesheet', $this->params->get('basePath', 'media/editors/codemirror/') . 'theme/' . $theme . '.css', array('version' => 'auto')); } // Special options for tagged modes (xml/html). if (in_array($options->mode, array('xml', 'html', 'php'))) { // Autogenerate closing tags (html/xml only). $options->autoCloseTags = (boolean) $this->params->get('autoCloseTags', 1); // Highlight the matching tag when the cursor is in a tag (html/xml only). $options->matchTags = (boolean) $this->params->get('matchTags', 1); } // Special options for non-tagged modes. if (!in_array($options->mode, array('xml', 'html'))) { // Autogenerate closing brackets. $options->autoCloseBrackets = (boolean) $this->params->get('autoCloseBrackets', 1); // Highlight the matching bracket. $options->matchBrackets = (boolean) $this->params->get('matchBrackets', 1); } $options->scrollbarStyle = $this->params->get('scrollbarStyle', 'native'); // KeyMap settings. $options->keyMap = $this->params->get('keyMap', false); // Support for older settings. if ($options->keyMap === false) { $options->keyMap = $this->params->get('vimKeyBinding', 0) ? 'vim' : 'default'; } if ($options->keyMap && $options->keyMap != 'default') { $this->loadKeyMap($options->keyMap); } $displayData = (object) array( 'options' => $options, 'params' => $this->params, 'name' => $name, 'id' => $id, 'cols' => $col, 'rows' => $row, 'content' => $content, 'buttons' => $buttons ); $dispatcher = JEventDispatcher::getInstance(); // At this point, displayData can be modified by a plugin before going to the layout renderer. $results = $dispatcher->trigger('onCodeMirrorBeforeDisplay', array(&$displayData)); $results[] = JLayoutHelper::render('editors.codemirror.element', $displayData, __DIR__ . '/layouts', array('debug' => JDEBUG)); foreach ($dispatcher->trigger('onCodeMirrorAfterDisplay', array(&$displayData)) as $result) { $results[] = $result; } return implode("\n", $results); } /** * Displays the editor buttons. * * @param string $name Button name. * @param mixed $buttons [array with button objects | boolean true to display buttons] * @param mixed $asset Unused. * @param mixed $author Unused. * * @return string HTML */ protected function displayButtons($name, $buttons, $asset, $author) { $return = ''; $args = array( 'name' => $name, 'event' => 'onGetInsertMethod' ); $results = (array) $this->update($args); if ($results) { foreach ($results as $result) { if (is_string($result) && trim($result)) { $return .= $result; } } } if (is_array($buttons) || (is_bool($buttons) && $buttons)) { $buttons = $this->_subject->getButtons($name, $buttons, $asset, $author); $return .= JLayoutHelper::render('joomla.editors.buttons', $buttons); } return $return; } /** * Gets font info from the json data file * * @param string $font A key from the $fonts array. * * @return object */ protected function getFontInfo($font) { static $fonts; if (!$fonts) { $fonts = json_decode(file_get_contents(__DIR__ . '/fonts.json'), true); } return isset($fonts[$font]) ? (object) $fonts[$font] : null; } /** * Loads a keyMap file * * @param string $keyMap The name of a keyMap file to load. * * @return void */ protected function loadKeyMap($keyMap) { $basePath = $this->params->get('basePath', 'media/editors/codemirror/'); $ext = JDEBUG ? '.js' : '.min.js'; JHtml::_('script', $basePath . 'keymap/' . $keyMap . $ext, array('version' => 'auto')); } } codemirror/codemirror.xml 0000644 00000024674 15116776115 0011627 0 ustar 00 <?xml version="1.0" encoding="utf-8"?> <extension version="3.2" type="plugin" group="editors" method="upgrade"> <name>plg_editors_codemirror</name> <version>5.60.0</version> <creationDate>28 March 2011</creationDate> <author>Marijn Haverbeke</author> <authorEmail>marijnh@gmail.com</authorEmail> <authorUrl>https://codemirror.net/</authorUrl> <copyright>Copyright (C) 2014 - 2021 by Marijn Haverbeke <marijnh@gmail.com> and others</copyright> <license>MIT license: https://codemirror.net/LICENSE</license> <description>PLG_CODEMIRROR_XML_DESCRIPTION</description> <files> <filename plugin="codemirror">codemirror.php</filename> <filename>styles.css</filename> <filename>styles.min.css</filename> <filename>fonts.json</filename> <filename>fonts.php</filename> </files> <languages> <language tag="en-GB">en-GB.plg_editors_codemirror.ini</language> <language tag="en-GB">en-GB.plg_editors_codemirror.sys.ini</language> </languages> <config> <fields name="params"> <fieldset name="basic"> <field name="lineNumbers" type="radio" label="PLG_CODEMIRROR_FIELD_LINENUMBERS_LABEL" description="PLG_CODEMIRROR_FIELD_LINENUMBERS_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="codeFolding" type="radio" label="PLG_CODEMIRROR_FIELD_CODEFOLDING_LABEL" description="PLG_CODEMIRROR_FIELD_CODEFOLDING_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="markerGutter" type="radio" label="PLG_CODEMIRROR_FIELD_MARKERGUTTER_LABEL" description="PLG_CODEMIRROR_FIELD_MARKERGUTTER_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="lineWrapping" type="radio" label="PLG_CODEMIRROR_FIELD_LINEWRAPPING_LABEL" description="PLG_CODEMIRROR_FIELD_LINEWRAPPING_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="activeLine" type="radio" label="PLG_CODEMIRROR_FIELD_ACTIVELINE_LABEL" description="PLG_CODEMIRROR_FIELD_ACTIVELINE_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="selectionMatches" type="radio" label="PLG_CODEMIRROR_FIELD_SELECTIONMATCHES_LABEL" description="PLG_CODEMIRROR_FIELD_SELECTIONMATCHES_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="matchTags" type="radio" label="PLG_CODEMIRROR_FIELD_MATCHTAGS_LABEL" description="PLG_CODEMIRROR_FIELD_MATCHTAGS_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="matchBrackets" type="radio" label="PLG_CODEMIRROR_FIELD_MATCHBRACKETS_LABEL" description="PLG_CODEMIRROR_FIELD_MATCHBRACKETS_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="autoCloseTags" type="radio" label="PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_LABEL" description="PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="autoCloseBrackets" type="radio" label="PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_LABEL" description="PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_DESC" class="btn-group btn-group-yesno" default="1" filter="integer" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="keyMap" type="list" label="PLG_CODEMIRROR_FIELD_KEYMAP_LABEL" description="PLG_CODEMIRROR_FIELD_KEYMAP_DESC" default="" > <option value="">JDEFAULT</option> <option value="emacs">PLG_CODEMIRROR_FIELD_KEYMAP_EMACS</option> <option value="sublime">PLG_CODEMIRROR_FIELD_KEYMAP_SUBLIME</option> <option value="vim">PLG_CODEMIRROR_FIELD_KEYMAP_VIM</option> </field> <field name="fullScreen" type="list" label="PLG_CODEMIRROR_FIELD_FULLSCREEN_LABEL" description="PLG_CODEMIRROR_FIELD_FULLSCREEN_DESC" default="F10" > <option value="F1">F1</option> <option value="F2">F2</option> <option value="F3">F3</option> <option value="F4">F4</option> <option value="F5">F5</option> <option value="F6">F6</option> <option value="F7">F7</option> <option value="F8">F8</option> <option value="F9">F9</option> <option value="F10">F10</option> <option value="F11">F11</option> <option value="F12">F12</option> </field> <field name="fullScreenMod" type="checkboxes" label="PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_LABEL" description="PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_DESC" > <option value="Shift">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_SHIFT</option> <option value="Cmd">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CMD</option> <option value="Ctrl">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CTRL</option> <option value="Alt">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_ALT</option> </field> <field name="basePath" type="hidden" default="media/editors/codemirror/" /> <field name="modePath" type="hidden" default="media/editors/codemirror/mode/%N/%N" /> </fieldset> <fieldset name="appearance" label="PLG_CODEMIRROR_FIELDSET_APPEARANCE_OPTIONS_LABEL" addfieldpath="plugins/editors/codemirror"> <field name="theme" type="filelist" label="PLG_CODEMIRROR_FIELD_THEME_LABEL" description="PLG_CODEMIRROR_FIELD_THEME_DESC" default="" filter="\.css$" stripext="true" hide_none="true" hide_default="false" directory="media/editors/codemirror/theme" /> <field name="activeLineColor" type="color" label="PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_LABEL" description="PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_DESC" default="#a4c2eb" filter="color" /> <field name="highlightMatchColor" type="color" label="PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_LABEL" description="PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_DESC" default="#fa542f" filter="color" /> <field name="fontFamily" type="fonts" label="PLG_CODEMIRROR_FIELD_FONT_FAMILY_LABEL" description="PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC" default="0" > <option value="0">PLG_CODEMIRROR_FIELD_VALUE_FONT_FAMILY_DEFAULT</option> </field> <field name="fontSize" type="integer" label="PLG_CODEMIRROR_FIELD_FONT_SIZE_LABEL" description="PLG_CODEMIRROR_FIELD_FONT_SIZE_DESC" first="6" last="16" step="1" default="13" filter="integer" /> <field name="lineHeight" type="list" label="PLG_CODEMIRROR_FIELD_LINE_HEIGHT_LABEL" description="PLG_CODEMIRROR_FIELD_LINE_HEIGHT_DESC" default="1.2" filter="float" > <option value="1">1</option> <option value="1.1">1.1</option> <option value="1.2">1.2</option> <option value="1.3">1.3</option> <option value="1.4">1.4</option> <option value="1.5">1.5</option> <option value="1.6">1.6</option> <option value="1.7">1.7</option> <option value="1.8">1.8</option> <option value="1.9">1.9</option> <option value="2">2</option> </field> <field name="scrollbarStyle" type="radio" label="PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_LABEL" description="PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DESC" class="btn-group btn-group-yesno" default="native" > <option value="native">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DEFAULT</option> <option value="simple">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_SIMPLE</option> <option value="overlay">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_OVERLAY</option> </field> <field name="preview" type="editor" label="PLG_CODEMIRROR_FIELD_PREVIEW_LABEL" description="PLG_CODEMIRROR_FIELD_PREVIEW_DESC" editor="codemirror" filter="unset" buttons="false" > <default> <![CDATA[ <script type="text/javascript"> jQuery(function ($) { $('.hello').html('Hello World'); }); </script> <style type="text/css"> h1 { background-clip: border-box; background-color: #cacaff; background-image: linear-gradient(45deg, transparent 0px, transparent 30px, #ababff 30px, #ababff 60px, transparent 60px); background-repeat: repeat-x; background-size: 90px 100%; border: 1px solid #8989ff; border-radius: 10px; color: #333; padding: 0 15px; } </style> <div> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam a ornare lectus, quis semper urna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus interdum metus id elit rutrum sollicitudin. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam in fermentum risus, id facilisis nulla. Phasellus gravida erat sed ullamcorper accumsan. Donec blandit sem eget sem congue, a varius sapien semper.</p> <p>Integer euismod tempor convallis. Nullam porttitor et ex ac fringilla. Quisque facilisis est ac erat condimentum malesuada. Aenean commodo quam odio, tincidunt ultricies mauris suscipit et.</p> <ul> <li>Vivamus ultrices ligula a odio lacinia pellentesque.</li> <li>Curabitur iaculis arcu pharetra, mollis turpis id, commodo erat.</li> <li>Etiam consequat enim quis faucibus interdum.</li> <li>Morbi in ipsum pulvinar, eleifend lorem sit amet, euismod magna.</li> <li>Donec consectetur lacus vitae eros euismod porta.</li> </ul> </div> ]]> </default> </field> </fieldset> </fields> </config> </extension> codemirror/fonts.json 0000644 00000006055 15116776115 0010755 0 ustar 00 { "anonymous_pro": { "name": "Anonymous Pro", "url": "https://fonts.googleapis.com/css?family=Anonymous+Pro", "css": "'Anonymous Pro', monospace" }, "cousine": { "name": "Cousine", "url": "https://fonts.googleapis.com/css?family=Cousine", "css": "Cousine, monospace" }, "cutive_mono": { "name": "Cutive Mono", "url": "https://fonts.googleapis.com/css?family=Cutive+Mono", "css": "'Cutive Mono', monospace" }, "droid_sans_mono": { "name": "Droid Sans Mono", "url": "https://fonts.googleapis.com/css?family=Droid+Sans+Mono", "css": "'Droid Sans Mono', monospace" }, "fira_mono": { "name": "Fira Mono", "url": "https://fonts.googleapis.com/css?family=Fira+Mono", "css": "'Fira Mono', monospace" }, "ibm_plex_mono": { "name": "IBM Plex Mono", "url": "https://fonts.googleapis.com/css?family=IBM+Plex+Mono", "css": "'IBM Plex Mono', monospace;" }, "inconsolata": { "name": "Inconsolata", "url": "https://fonts.googleapis.com/css?family=Inconsolata", "css": "Inconsolata, monospace" }, "lekton": { "name": "Lekton", "url": "https://fonts.googleapis.com/css?family=Lekton", "css": "Lekton, monospace" }, "nanum_gothic_coding": { "name": "Nanum Gothic Coding", "url": "https://fonts.googleapis.com/css?family=Nanum+Gothic+Coding", "css": "'Nanum Gothic Coding', monospace" }, "nova_mono": { "name": "Nova Mono", "url": "https://fonts.googleapis.com/css?family=Nova+Mono", "css": "'Nova Mono', monospace" }, "overpass_mono": { "name": "Overpass Mono", "url": "https://fonts.googleapis.com/css?family=Overpass+Mono", "css": "'Overpass Mono', monospace" }, "oxygen_mono": { "name": "Oxygen Mono", "url": "https://fonts.googleapis.com/css?family=Oxygen+Mono", "css": "'Oxygen Mono', monospace" }, "press_start_2p": { "name": "Press Start 2P", "url": "https://fonts.googleapis.com/css?family=Press+Start+2P", "css": "'Press Start 2P', monospace" }, "pt_mono": { "name": "PT Mono", "url": "https://fonts.googleapis.com/css?family=PT+Mono", "css": "'PT Mono', monospace" }, "roboto_mono": { "name": "Roboto Mono", "url": "https://fonts.googleapis.com/css?family=Roboto+Mono", "css": "'Roboto Mono', monospace" }, "rubik_mono_one": { "name": "Rubik Mono One", "url": "https://fonts.googleapis.com/css?family=Rubik+Mono+One", "css": "'Rubik Mono One', monospace" }, "share_tech_mono": { "name": "Share Tech Mono", "url": "https://fonts.googleapis.com/css?family=Share+Tech+Mono", "css": "'Share Tech Mono', monospace" }, "source_code_pro": { "name": "Source Code Pro", "url": "https://fonts.googleapis.com/css?family=Source+Code+Pro", "css": "'Source Code Pro', monospace" }, "space_mono": { "name": "Space Mono", "url": "https://fonts.googleapis.com/css?family=Space+Mono", "css": "'Space Mono', monospace" }, "ubuntu_mono": { "name": "Ubuntu Mono", "url": "https://fonts.googleapis.com/css?family=Ubuntu+Mono", "css": "'Ubuntu Mono', monospace" }, "vt323": { "name": "VT323", "url": "https://fonts.googleapis.com/css?family=VT323", "css": "'VT323', monospace" } } codemirror/fonts.php 0000644 00000002104 15116776115 0010562 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.codemirror * * @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ // No direct access defined('_JEXEC') or die; JFormHelper::loadFieldClass('list'); /** * Supports an HTML select list of fonts * * @package Joomla.Plugin * @subpackage Editors.codemirror * @since 3.4 */ class JFormFieldFonts extends JFormFieldList { /** * The form field type. * * @var string * @since 3.4 */ protected $type = 'Fonts'; /** * Method to get the list of fonts field options. * * @return array The field option objects. * * @since 3.4 */ protected function getOptions() { $fonts = json_decode(file_get_contents(__DIR__ . '/fonts.json')); $options = array(); foreach ($fonts as $key => $info) { $options[] = JHtml::_('select.option', $key, $info->name); } // Merge any additional options in the XML definition. return array_merge(parent::getOptions(), $options); } } codemirror/layouts/editors/codemirror/element.php 0000644 00000002052 15116776115 0016402 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.codemirror * * @copyright (C) 2015 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ // No direct access defined('_JEXEC') or die; $options = $displayData->options; $params = $displayData->params; $name = $displayData->name; $id = $displayData->id; $cols = $displayData->cols; $rows = $displayData->rows; $content = $displayData->content; $buttons = $displayData->buttons; $modifier = $params->get('fullScreenMod', array()) ? implode(' + ', $params->get('fullScreenMod', array())) . ' + ' : ''; ?> <p class="label"> <?php echo JText::sprintf('PLG_CODEMIRROR_TOGGLE_FULL_SCREEN', $modifier, $params->get('fullScreen', 'F10')); ?> </p> <?php echo '<textarea class="codemirror-source" name="', $name, '" id="', $id, '" cols="', $cols, '" rows="', $rows, '" data-options="', htmlspecialchars(json_encode($options)), '">', $content, '</textarea>'; ?> <?php echo $buttons; ?> codemirror/layouts/editors/codemirror/init.php 0000644 00000007243 15116776115 0015723 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.codemirror * * @copyright (C) 2015 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ // No direct access defined('_JEXEC') or die; $params = $displayData->params; $basePath = $params->get('basePath', 'media/editors/codemirror/'); $modePath = $params->get('modePath', 'media/editors/codemirror/mode/%N/%N'); $extJS = JDEBUG ? '.js' : '.min.js'; $extCSS = JDEBUG ? '.css' : '.min.css'; JHtml::_('script', $basePath . 'lib/codemirror' . $extJS, array('version' => 'auto')); JHtml::_('script', $basePath . 'lib/addons' . $extJS, array('version' => 'auto')); JHtml::_('stylesheet', $basePath . 'lib/codemirror' . $extCSS, array('version' => 'auto')); JHtml::_('stylesheet', $basePath . 'lib/addons' . $extCSS, array('version' => 'auto')); $fskeys = $params->get('fullScreenMod', array()); $fskeys[] = $params->get('fullScreen', 'F10'); $fullScreenCombo = implode('-', $fskeys); $fsCombo = json_encode($fullScreenCombo); $modPath = json_encode(JUri::root(true) . '/' . $modePath . $extJS); JFactory::getDocument()->addScriptDeclaration( <<<JS ;(function (cm, $) { cm.commands.toggleFullScreen = function (cm) { cm.setOption('fullScreen', !cm.getOption('fullScreen')); }; cm.commands.closeFullScreen = function (cm) { cm.getOption('fullScreen') && cm.setOption('fullScreen', false); }; cm.keyMap.default['Ctrl-Q'] = 'toggleFullScreen'; cm.keyMap.default[$fsCombo] = 'toggleFullScreen'; cm.keyMap.default['Esc'] = 'closeFullScreen'; // For mode autoloading. cm.modeURL = $modPath; // Fire this function any time an editor is created. cm.defineInitHook(function (editor) { // Try to set up the mode var mode = cm.findModeByMIME(editor.options.mode || '') || cm.findModeByName(editor.options.mode || '') || cm.findModeByExtension(editor.options.mode || ''); cm.autoLoadMode(editor, mode ? mode.mode : editor.options.mode); if (mode && mode.mime) { editor.setOption('mode', mode.mime); } // Handle gutter clicks (place or remove a marker). editor.on('gutterClick', function (ed, n, gutter) { if (gutter != 'CodeMirror-markergutter') { return; } var info = ed.lineInfo(n), hasMarker = !!info.gutterMarkers && !!info.gutterMarkers['CodeMirror-markergutter']; ed.setGutterMarker(n, 'CodeMirror-markergutter', hasMarker ? null : makeMarker()); }); // jQuery's ready function. $(function () { // Some browsers do something weird with the fieldset which doesn't work well with CodeMirror. Fix it. $(editor.getWrapperElement()).parent('fieldset').css('min-width', 0); // Listen for Bootstrap's 'shown' event. If this editor was in a hidden element when created, it may need to be refreshed. $(document.body).on('shown shown.bs.tab shown.bs.modal', function () { editor.refresh(); }); }); }); function makeMarker() { var marker = document.createElement('div'); marker.className = 'CodeMirror-markergutter-mark'; return marker; } // Initialize any CodeMirrors on page load and when a subform is added $(function ($) { initCodeMirror(); $('body').on('subform-row-add', initCodeMirror); }); function initCodeMirror(event, container) { container = container || document; $(container).find('textarea.codemirror-source').each(function () { var input = $(this).removeClass('codemirror-source'); var id = input.prop('id'); Joomla.editors.instances[id] = cm.fromTextArea(this, input.data('options')); }); } }(CodeMirror, jQuery)); JS ); codemirror/layouts/editors/codemirror/styles.php 0000644 00000004502 15116776115 0016276 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.codemirror * * @copyright (C) 2015 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ // No direct access defined('_JEXEC') or die; $params = $displayData->params; $fontFamily = isset($displayData->fontFamily) ? $displayData->fontFamily : 'monospace'; $fontSize = $params->get('fontSize', 13) . 'px;'; $lineHeight = $params->get('lineHeight', 1.2) . 'em;'; // Set the active line color. $color = $params->get('activeLineColor', '#a4c2eb'); $r = hexdec($color[1] . $color[2]); $g = hexdec($color[3] . $color[4]); $b = hexdec($color[5] . $color[6]); $activeLineColor = 'rgba(' . $r . ', ' . $g . ', ' . $b . ', .5)'; // Set the color for matched tags. $color = $params->get('highlightMatchColor', '#fa542f'); $r = hexdec($color[1] . $color[2]); $g = hexdec($color[3] . $color[4]); $b = hexdec($color[5] . $color[6]); $highlightMatchColor = 'rgba(' . $r . ', ' . $g . ', ' . $b . ', .5)'; JFactory::getDocument()->addStyleDeclaration( <<<CSS .CodeMirror { font-family: $fontFamily; font-size: $fontSize; line-height: $lineHeight; border: 1px solid #ccc; } /* In order to hid the Joomla menu */ .CodeMirror-fullscreen { z-index: 1040; } /* Make the fold marker a little more visible/nice */ .CodeMirror-foldmarker { background: rgb(255, 128, 0); background: rgba(255, 128, 0, .5); box-shadow: inset 0 0 2px rgba(255, 255, 255, .5); font-family: serif; font-size: 90%; border-radius: 1em; padding: 0 1em; vertical-align: middle; color: white; text-shadow: none; } .CodeMirror-foldgutter, .CodeMirror-markergutter { width: 1.2em; text-align: center; } .CodeMirror-markergutter { cursor: pointer; } .CodeMirror-markergutter-mark { cursor: pointer; text-align: center; } .CodeMirror-markergutter-mark:after { content: "\25CF"; } .CodeMirror-activeline-background { background: $activeLineColor; } .CodeMirror-matchingtag { background: $highlightMatchColor; } .cm-matchhighlight {background-color: $highlightMatchColor; } .CodeMirror-selection-highlight-scrollbar {background-color: $highlightMatchColor; } CSS ); none/none.php 0000644 00000007565 15116776115 0007202 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.none * * @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Plain Textarea Editor Plugin * * @since 1.5 */ class PlgEditorNone extends JPlugin { /** * Method to handle the onInitEditor event. * - Initialises the Editor * * @return void * * @since 1.5 */ public function onInit() { JHtml::_('script', 'editors/none/none.min.js', array('version' => 'auto', 'relative' => true)); } /** * Copy editor content to form field. * * Not applicable in this editor. * * @param string $editor the editor id * * @return void * * @deprecated 4.0 Use directly the returned code */ public function onSave($editor) { } /** * Get the editor content. * * @param string $id The id of the editor field. * * @return string * * @deprecated 4.0 Use directly the returned code */ public function onGetContent($id) { return 'Joomla.editors.instances[' . json_encode($id) . '].getValue();'; } /** * Set the editor content. * * @param string $id The id of the editor field. * @param string $html The content to set. * * @return string * * @deprecated 4.0 Use directly the returned code */ public function onSetContent($id, $html) { return 'Joomla.editors.instances[' . json_encode($id) . '].setValue(' . json_encode($html) . ');'; } /** * Inserts html code into the editor * * @param string $id The id of the editor field * * @return void * * @deprecated 4.0 */ public function onGetInsertMethod($id) { } /** * Display the editor area. * * @param string $name The control name. * @param string $content The contents of the text area. * @param string $width The width of the text area (px or %). * @param string $height The height of the text area (px or %). * @param integer $col The number of columns for the textarea. * @param integer $row The number of rows for the textarea. * @param boolean $buttons True and the editor buttons will be displayed. * @param string $id An optional ID for the textarea (note: since 1.6). If not supplied the name is used. * @param string $asset The object asset * @param object $author The author. * @param array $params Associative array of editor parameters. * * @return string */ public function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array()) { if (empty($id)) { $id = $name; } // Only add "px" to width and height if they are not given as a percentage if (is_numeric($width)) { $width .= 'px'; } if (is_numeric($height)) { $height .= 'px'; } $readonly = !empty($params['readonly']) ? ' readonly disabled' : ''; $editor = '<div class="js-editor-none">' . '<textarea name="' . $name . '" id="' . $id . '" cols="' . $col . '" rows="' . $row . '" style="width: ' . $width . '; height: ' . $height . ';"' . $readonly . '>' . $content . '</textarea>' . $this->_displayButtons($id, $buttons, $asset, $author) . '</div>'; return $editor; } /** * Displays the editor buttons. * * @param string $name The control name. * @param mixed $buttons [array with button objects | boolean true to display buttons] * @param string $asset The object asset * @param object $author The author. * * @return void|string HTML */ public function _displayButtons($name, $buttons, $asset, $author) { if (is_array($buttons) || (is_bool($buttons) && $buttons)) { $buttons = $this->_subject->getButtons($name, $buttons, $asset, $author); return JLayoutHelper::render('joomla.editors.buttons', $buttons); } } } none/none.xml 0000644 00000001370 15116776115 0007177 0 ustar 00 <?xml version="1.0" encoding="utf-8"?> <extension version="3.1" type="plugin" group="editors" method="upgrade"> <name>plg_editors_none</name> <version>3.0.0</version> <creationDate>September 2005</creationDate> <author>Joomla! Project</author> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <copyright>(C) 2005 Open Source Matters, Inc.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <description>PLG_NONE_XML_DESCRIPTION</description> <files> <filename plugin="none">none.php</filename> </files> <languages> <language tag="en-GB">en-GB.plg_editors_none.ini</language> <language tag="en-GB">en-GB.plg_editors_none.sys.ini</language> </languages> </extension> tinymce/field/skins.php 0000644 00000002740 15116776115 0011154 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.tinymce * * @copyright (C) 2014 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.form.helper'); JFormHelper::loadFieldClass('list'); /** * Generates the list of options for available skins. * * @package Joomla.Plugin * @subpackage Editors.tinymce * @since 3.4 */ class JFormFieldSkins extends JFormFieldList { protected $type = 'skins'; /** * Method to get the skins options. * * @return array The skins option objects. * * @since 3.4 */ public function getOptions() { $options = array(); $directories = glob(JPATH_ROOT . '/media/editors/tinymce/skins' . '/*', GLOB_ONLYDIR); for ($i = 0, $iMax = count($directories); $i < $iMax; ++$i) { $dir = basename($directories[$i]); $options[] = JHtml::_('select.option', $i, $dir); } $options = array_merge(parent::getOptions(), $options); return $options; } /** * Method to get the field input markup for the list of skins. * * @return string The field input markup. * * @since 3.4 */ protected function getInput() { $html = array(); // Get the field options. $options = (array) $this->getOptions(); // Create a regular list. $html[] = JHtml::_('select.genericlist', $options, $this->name, '', 'value', 'text', $this->value, $this->id); return implode($html); } } tinymce/field/tinymcebuilder.php 0000644 00000011055 15116776115 0013043 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.tinymce * * @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; /** * Form Field class for the TinyMCE editor. * * @package Joomla.Plugin * @subpackage Editors.tinymce * @since 3.7.0 */ class JFormFieldTinymceBuilder extends JFormField { /** * The form field type. * * @var string * @since 3.7.0 */ protected $type = 'tinymcebuilder'; /** * Name of the layout being used to render the field * * @var string * @since 3.7.0 */ protected $layout = 'plugins.editors.tinymce.field.tinymcebuilder'; /** * The prepared layout data * * @var array * @since 3.7.0 */ protected $layoutData = array(); /** * Method to get the data to be passed to the layout for rendering. * * @return array * * @since 3.7.0 */ protected function getLayoutData() { if (!empty($this->layoutData)) { return $this->layoutData; } $data = parent::getLayoutData(); $paramsAll = (object) $this->form->getValue('params'); $setsAmount = empty($paramsAll->sets_amount) ? 3 : $paramsAll->sets_amount; if (empty($data['value'])) { $data['value'] = array(); } // Get the plugin require_once JPATH_PLUGINS . '/editors/tinymce/tinymce.php'; $menus = array( 'edit' => array('label' => 'Edit'), 'insert' => array('label' => 'Insert'), 'view' => array('label' => 'View'), 'format' => array('label' => 'Format'), 'table' => array('label' => 'Table'), 'tools' => array('label' => 'Tools'), ); $data['menus'] = $menus; $data['menubarSource'] = array_keys($menus); $data['buttons'] = PlgEditorTinymce::getKnownButtons(); $data['buttonsSource'] = array_keys($data['buttons']); $data['toolbarPreset'] = PlgEditorTinymce::getToolbarPreset(); $data['setsAmount'] = $setsAmount; // Get array of sets names for ($i = 0; $i < $setsAmount; $i++) { $data['setsNames'][$i] = JText::sprintf('PLG_TINY_SET_TITLE', $i); } // Prepare the forms for each set $setsForms = array(); $formsource = JPATH_PLUGINS . '/editors/tinymce/form/setoptions.xml'; // Preload an old params for B/C $setParams = new stdClass; if (!empty($paramsAll->html_width) && empty($paramsAll->configuration['setoptions'])) { $plugin = JPluginHelper::getPlugin('editors', 'tinymce'); JFactory::getApplication()->enqueueMessage(JText::sprintf('PLG_TINY_LEGACY_WARNING', '#'), 'warning'); if (is_object($plugin) && !empty($plugin->params)) { $setParams = (object) json_decode($plugin->params); } } // Collect already used groups $groupsInUse = array(); // Prepare the Set forms, for the set options foreach (array_keys($data['setsNames']) as $num) { $formname = 'set.form.' . $num; $control = $this->name . '[setoptions][' . $num . ']'; $setsForms[$num] = JForm::getInstance($formname, $formsource, array('control' => $control)); // Check whether we already have saved values or it first time or even old params if (empty($this->value['setoptions'][$num])) { $formValues = $setParams; /* * Predefine group: * Set 0: for Administrator, Editor, Super Users (4,7,8) * Set 1: for Registered, Manager (2,6), all else are public */ $formValues->access = !$num ? array(4,7,8) : ($num === 1 ? array(2,6) : array()); // Assign Public to the new Set, but only when it not in use already if (empty($formValues->access) && !in_array(1, $groupsInUse)) { $formValues->access = array(1); } } else { $formValues = (object) $this->value['setoptions'][$num]; } // Collect already used groups if (!empty($formValues->access)) { $groupsInUse = array_merge($groupsInUse, $formValues->access); } // Bind the values $setsForms[$num]->bind($formValues); } krsort($data['setsNames']); $data['setsForms'] = $setsForms; // Check for TinyMCE language file $language = JFactory::getLanguage(); $languageFile1 = 'media/editors/tinymce/langs/' . $language->getTag() . '.js'; $languageFile2 = 'media/editors/tinymce/langs/' . substr($language->getTag(), 0, strpos($language->getTag(), '-')) . '.js'; $data['languageFile'] = ''; if (file_exists(JPATH_ROOT . '/' . $languageFile1)) { $data['languageFile'] = $languageFile1; } elseif (file_exists(JPATH_ROOT . '/' . $languageFile2)) { $data['languageFile'] = $languageFile2; } $this->layoutData = $data; return $data; } } tinymce/field/uploaddirs.php 0000644 00000004550 15116776115 0012174 0 ustar 00 <?php /** * @package Joomla.Plugin * @subpackage Editors.tinymce * * @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; jimport('joomla.form.helper'); JFormHelper::loadFieldClass('folderlist'); /** * Generates the list of directories available for drag and drop upload. * * @package Joomla.Plugin * @subpackage Editors.tinymce * @since 3.7.0 */ class JFormFieldUploaddirs extends JFormFieldFolderList { protected $type = 'uploaddirs'; /** * Method to attach a JForm object to the field. * * @param SimpleXMLElement $element The SimpleXMLElement object representing the `<field>` tag for the form field object. * @param mixed $value The form field value to validate. * @param string $group The field name group control value. This acts as an array container for the field. * For example if the field has name="foo" and the group value is set to "bar" then the * full field name would end up being "bar[foo]". * * @return boolean True on success. * * @see JFormField::setup() * @since 3.7.0 */ public function setup(SimpleXMLElement $element, $value, $group = null) { $return = parent::setup($element, $value, $group); // Get the path in which to search for file options. $this->directory = JComponentHelper::getParams('com_media')->get('image_path'); $this->recursive = true; $this->hideDefault = true; return $return; } /** * Method to get the directories options. * * @return array The dirs option objects. * * @since 3.7.0 */ public function getOptions() { return parent::getOptions(); } /** * Method to get the field input markup for the list of directories. * * @return string The field input markup. * * @since 3.7.0 */ protected function getInput() { $html = array(); // Get the field options. $options = (array) $this->getOptions(); // Reset the non selected value to null if ($options[0]->value === '-1') { $options[0]->value = ''; } // Create a regular list. $html[] = JHtml::_('select.genericlist', $options, $this->name, '', 'value', 'text', $this->value, $this->id); return implode($html); } } tinymce/form/setoptions.xml 0000644 00000017641 15116776115 0012133 0 ustar 00 <?xml version="1.0" encoding="utf-8"?> <form> <field name="access" type="usergrouplist" label="PLG_TINY_FIELD_SETACCESS_LABEL" description="PLG_TINY_FIELD_SETACCESS_DESC" multiple="true" class="access-select" labelclass="label label-success" /> <field name="skins" type="note" label="PLG_TINY_FIELD_SKIN_INFO_LABEL" description="PLG_TINY_FIELD_SKIN_INFO_DESC" /> <field name="skin" type="skins" label="PLG_TINY_FIELD_SKIN_LABEL" description="PLG_TINY_FIELD_SKIN_DESC" /> <field name="skin_admin" type="skins" label="PLG_TINY_FIELD_SKIN_ADMIN_LABEL" description="PLG_TINY_FIELD_SKIN_ADMIN_DESC" /> <field name="mobile" type="radio" label="PLG_TINY_FIELD_MOBILE_LABEL" description="PLG_TINY_FIELD_MOBILE_DESC" class="btn-group btn-group-yesno" default="0" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="drag_drop" type="radio" label="PLG_TINY_FIELD_DRAG_DROP_LABEL" description="PLG_TINY_FIELD_DRAG_DROP_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="path" type="uploaddirs" label="PLG_TINY_FIELD_CUSTOM_PATH_LABEL" description="PLG_TINY_FIELD_CUSTOM_PATH_DESC" class="input-xxlarge" showon="drag_drop:1" /> <field name="entity_encoding" type="list" label="PLG_TINY_FIELD_ENCODING_LABEL" description="PLG_TINY_FIELD_ENCODING_DESC" default="raw" > <option value="named">PLG_TINY_FIELD_VALUE_NAMED</option> <option value="numeric">PLG_TINY_FIELD_VALUE_NUMERIC</option> <option value="raw">PLG_TINY_FIELD_VALUE_RAW</option> </field> <field name="lang_mode" type="radio" label="PLG_TINY_FIELD_LANGSELECT_LABEL" description="PLG_TINY_FIELD_LANGSELECT_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="lang_code" type="filelist" label="PLG_TINY_FIELD_LANGCODE_LABEL" description="PLG_TINY_FIELD_LANGCODE_DESC" class="inputbox" stripext="1" directory="media/editors/tinymce/langs/" hide_none="1" default="en" hide_default="1" filter="\.js$" size="10" showon="lang_mode:0" /> <field name="text_direction" type="list" label="PLG_TINY_FIELD_DIRECTION_LABEL" description="PLG_TINY_FIELD_DIRECTION_DESC" default="ltr" > <option value="ltr">PLG_TINY_FIELD_VALUE_LTR</option> <option value="rtl">PLG_TINY_FIELD_VALUE_RTL</option> </field> <field name="content_css" type="radio" label="PLG_TINY_FIELD_CSS_LABEL" description="PLG_TINY_FIELD_CSS_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="content_css_custom" type="text" label="PLG_TINY_FIELD_CUSTOM_CSS_LABEL" description="PLG_TINY_FIELD_CUSTOM_CSS_DESC" class="input-xxlarge" /> <field name="relative_urls" type="list" label="PLG_TINY_FIELD_URLS_LABEL" description="PLG_TINY_FIELD_URLS_DESC" default="1" > <option value="0">PLG_TINY_FIELD_VALUE_ABSOLUTE</option> <option value="1">PLG_TINY_FIELD_VALUE_RELATIVE</option> </field> <field name="newlines" type="list" label="PLG_TINY_FIELD_NEWLINES_LABEL" description="PLG_TINY_FIELD_NEWLINES_DESC" default="0" > <option value="1">PLG_TINY_FIELD_VALUE_BR</option> <option value="0">PLG_TINY_FIELD_VALUE_P</option> </field> <field name="use_config_textfilters" type="radio" label="PLG_TINY_CONFIG_TEXTFILTER_ACL_LABEL" description="PLG_TINY_CONFIG_TEXTFILTER_ACL_DESC" class="btn-group btn-group-yesno" default="0" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="invalid_elements" type="text" label="PLG_TINY_FIELD_PROHIBITED_LABEL" description="PLG_TINY_FIELD_PROHIBITED_DESC" showon="use_config_textfilters:0" default="script,applet,iframe" class="input-xxlarge" /> <field name="valid_elements" type="text" label="PLG_TINY_FIELD_VALIDELEMENTS_LABEL" description="PLG_TINY_FIELD_VALIDELEMENTS_DESC" showon="use_config_textfilters:0" class="input-xxlarge" /> <field name="extended_elements" type="text" label="PLG_TINY_FIELD_ELEMENTS_LABEL" description="PLG_TINY_FIELD_ELEMENTS_DESC" showon="use_config_textfilters:0" class="input-xxlarge" /> <!-- Extra plugins --> <field name="resizing" type="radio" label="PLG_TINY_FIELD_RESIZING_LABEL" description="PLG_TINY_FIELD_RESIZING_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="resize_horizontal" type="radio" label="PLG_TINY_FIELD_RESIZE_HORIZONTAL_LABEL" description="PLG_TINY_FIELD_RESIZE_HORIZONTAL_DESC" class="btn-group btn-group-yesno" default="1" showon="resizing:1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="element_path" type="radio" label="PLG_TINY_FIELD_PATH_LABEL" description="PLG_TINY_FIELD_PATH_DESC" class="btn-group btn-group-yesno" default="0" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="wordcount" type="radio" label="PLG_TINY_FIELD_WORDCOUNT_LABEL" description="PLG_TINY_FIELD_WORDCOUNT_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="image_advtab" type="radio" label="PLG_TINY_FIELD_ADVIMAGE_LABEL" description="PLG_TINY_FIELD_ADVIMAGE_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="advlist" type="radio" label="PLG_TINY_FIELD_ADVLIST_LABEL" description="PLG_TINY_FIELD_ADVLIST_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="contextmenu" type="radio" label="PLG_TINY_FIELD_CONTEXTMENU_LABEL" description="PLG_TINY_FIELD_CONTEXTMENU_DESC" class="btn-group btn-group-yesno" default="1" > <option value="1">JON</option> <option value="0">JOFF</option> </field> <field name="custom_plugin" type="text" label="PLG_TINY_FIELD_CUSTOMPLUGIN_LABEL" description="PLG_TINY_FIELD_CUSTOMPLUGIN_DESC" class="input-xxlarge" /> <field name="custom_button" type="text" label="PLG_TINY_FIELD_CUSTOMBUTTON_LABEL" description="PLG_TINY_FIELD_CUSTOMBUTTON_DESC" class="input-xxlarge" /> </form>