Documentation';
static private $version = '1.0.5';
static private $date = '08-05-2014';
static private $licence = 'GPL';
static private $requirements = array(
'Roundcube' => '1.0',
'PHP' => '5.3'
);
private $rcmail;
function init(){
$this->rcmail = rcmail::get_instance();
switch($GLOBALS['codemirror']['mode']){
case 'PHP':
$this->rcmail->output->add_header('');
break;
case 'SQL':
$this->rcmail->output->add_header('');
}
$this->include_stylesheet('lib/CodeMirror-2.3/lib/codemirror.css');
$this->include_script('lib/CodeMirror-2.3/lib/codemirror.js');
$this->include_script('lib/CodeMirror-2.3/lib/util/searchcursor.js');
switch($GLOBALS['codemirror']['mode']){
case 'PHP':
$this->PHP($GLOBALS['codemirror']['elem']);
break;
case 'SQL':
$this->SQL($GLOBALS['codemirror']['elem']);
}
$this->include_stylesheet('css/codemirror-ui.css');
$this->include_script('js/codemirror-ui.js');
}
function PHP($elem){
$this->include_script('lib/CodeMirror-2.3/mode/htmlmixed/htmlmixed.js');
$this->include_script('lib/CodeMirror-2.3/mode/xml/xml.js');
$this->include_script('lib/CodeMirror-2.3/mode/javascript/javascript.js');
$this->include_script('lib/CodeMirror-2.3/mode/css/css.js');
$this->include_script('lib/CodeMirror-2.3/mode/clike/clike.js');
$this->include_script('lib/CodeMirror-2.3/mode/php/php.js');
$this->rcmail->output->add_script('
var textarea = document.getElementById("' . $elem . '");
var uiOptions = {
path : "js/",
searchMode : "popup",
mode: "php",
imagePath : "plugins/codemirror_ui/images/silk",
buttons : ' . $GLOBALS['codemirror']['buttons'] . ',
saveCallback : ' . $GLOBALS['codemirror']['save'] . '
}
var codeMirrorOptions = {
readOnly: ' . ($GLOBALS['codemirror']['readonly'] ? 'true' : 'false') . ',
lineNumbers: true,
matchBrackets: true,
mode: "application/x-httpd-php",
indentUnit: 2,
indentWithTabs: true,
enterMode: "keep",
tabMode: "shift",
tabSize: 2
}
var editor = new CodeMirrorUI(textarea, uiOptions, codeMirrorOptions);
', 'docready'
);
}
function SQL($elem){
$this->include_script('lib/CodeMirror-2.3/mode/htmlmixed/htmlmixed.js');
$this->include_script('lib/CodeMirror-2.3/mode/xml/xml.js');
$this->include_script('lib/CodeMirror-2.3/mode/javascript/javascript.js');
$this->include_script('lib/CodeMirror-2.3/mode/css/css.js');
$this->include_script('lib/CodeMirror-2.3/mode/clike/clike.js');
$this->include_script('lib/CodeMirror-2.3/mode/mysql/mysql.js');
$this->rcmail->output->add_script('
var textarea = document.getElementById("' . $elem . '");
var uiOptions = {
path : "js/",
searchMode : "popup",
mode: "mysql",
imagePath : "plugins/codemirror_ui/images/silk",
buttons : ' . $GLOBALS['codemirror']['buttons'] . ',
saveCallback : ' . $GLOBALS['codemirror']['save'] . '
}
var codeMirrorOptions = {
readOnly: ' . ($GLOBALS['codemirror']['readonly'] ? 'true' : 'false') . ',
lineNumbers: true,
matchBrackets: true,
mode: "text/x-mysql",
indentUnit: 2,
indentWithTabs: true,
enterMode: "keep",
tabMode: "shift",
fixedGutter: true,
tabSize: 2
}
var editor = new CodeMirrorUI(textarea, uiOptions, codeMirrorOptions);
', 'docready'
);
}
static public function about($keys = false){
$requirements = self::$requirements;
foreach(array('required_', 'recommended_') as $prefix){
if(is_array($requirements[$prefix.'plugins'])){
foreach($requirements[$prefix.'plugins'] as $plugin => $method){
if(class_exists($plugin) && method_exists($plugin, 'about')){
/* PHP 5.2.x workaround for $plugin::about() */
$class = new $plugin(false);
$requirements[$prefix.'plugins'][$plugin] = array(
'method' => $method,
'plugin' => $class->about($keys),
);
}
else{
$requirements[$prefix.'plugins'][$plugin] = array(
'method' => $method,
'plugin' => $plugin,
);
}
}
}
}
return array(
'plugin' => self::$plugin,
'version' => self::$version,
'date' => self::$date,
'author' => self::$author,
'comments' => self::$authors_comments,
'licence' => self::$licence,
'requirements' => $requirements,
);
}
}
?>