添加到 trunk
+YUCHENG HU+ git-svn-id: https://svn.code.sf.net/p/hawebs/svn@201 a2543c7e-f6e9-4f8a-8bff-1ffc34733512
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
/**
|
||||
* @version $Id: example.php 10381 2008-06-01 03:35:53Z pasamio $
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
|
||||
* @license GNU/GPL, see LICENSE.php
|
||||
* Joomla! is free software. This version may have been modified pursuant
|
||||
* to the GNU General Public License, and as distributed it includes or
|
||||
* is derivative of works licensed under the GNU General Public License or
|
||||
* other free or open source software licenses.
|
||||
* See COPYRIGHT.php for copyright notices and details.
|
||||
*/
|
||||
|
||||
// Check to ensure this file is included in Joomla!
|
||||
defined( '_JEXEC' ) or die( 'Restricted access' );
|
||||
|
||||
jimport( 'joomla.plugin.plugin' );
|
||||
|
||||
/**
|
||||
* Example Authentication Plugin
|
||||
*
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @since 1.5
|
||||
*/
|
||||
class plgAuthenticationExample extends JPlugin
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* For php4 compatability we must not use the __constructor as a constructor for plugins
|
||||
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
|
||||
* This causes problems with cross-referencing necessary for the observer design pattern.
|
||||
*
|
||||
* @param object $subject The object to observe
|
||||
* @param array $config An array that holds the plugin configuration
|
||||
* @since 1.5
|
||||
*/
|
||||
function plgAuthenticationExample(& $subject, $config)
|
||||
{
|
||||
parent::__construct($subject, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method should handle any authentication and report back to the subject
|
||||
*
|
||||
* @access public
|
||||
* @param array $credentials Array holding the user credentials
|
||||
* @param array $options Array of extra options
|
||||
* @param object $response Authentication response object
|
||||
* @return boolean
|
||||
* @since 1.5
|
||||
*/
|
||||
function onAuthenticate( $credentials, $options, &$response )
|
||||
{
|
||||
/*
|
||||
* Here you would do whatever you need for an authentication routine with the credentials
|
||||
*
|
||||
* In this example the mixed variable $return would be set to false
|
||||
* if the authentication routine fails or an integer userid of the authenticated
|
||||
* user if the routine passes
|
||||
*/
|
||||
$success = true;
|
||||
|
||||
if ($success)
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_SUCCESS;
|
||||
$response->error_message = '';
|
||||
// You may also define other variables:
|
||||
/*
|
||||
$yourUser = YourClass::getUser( $credentials );
|
||||
$response->email = $yourUser->email;
|
||||
$response->fullname = $yourUser->name;
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Could not authenticate';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<install version="1.5" type="plugin" group="authentication">
|
||||
<name>Authentication - Example</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>November 2005</creationDate>
|
||||
<copyright>Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.</copyright>
|
||||
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
|
||||
<authorEmail>[email protected]</authorEmail>
|
||||
<authorUrl>www.joomla.org</authorUrl>
|
||||
<version>1.5</version>
|
||||
<description>An example of an authentication plugin</description>
|
||||
<files>
|
||||
<filename plugin="example">example.php</filename>
|
||||
</files>
|
||||
<params/>
|
||||
</install>
|
||||
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
/**
|
||||
* @version $Id: gmail.php 11236 2008-11-02 02:44:35Z ian $
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
|
||||
* @license GNU/GPL, see LICENSE.php
|
||||
* Joomla! is free software. This version may have been modified pursuant
|
||||
* to the GNU General Public License, and as distributed it includes or
|
||||
* is derivative of works licensed under the GNU General Public License or
|
||||
* other free or open source software licenses.
|
||||
* See COPYRIGHT.php for copyright notices and details.
|
||||
*/
|
||||
|
||||
// Check to ensure this file is included in Joomla!
|
||||
defined('_JEXEC') or die( 'Restricted access' );
|
||||
|
||||
jimport( 'joomla.plugin.plugin' );
|
||||
|
||||
/**
|
||||
* GMail Authentication Plugin
|
||||
*
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @since 1.5
|
||||
*/
|
||||
class plgAuthenticationGMail extends JPlugin
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* For php4 compatability we must not use the __constructor as a constructor for plugins
|
||||
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
|
||||
* This causes problems with cross-referencing necessary for the observer design pattern.
|
||||
*
|
||||
* @param object $subject The object to observe
|
||||
* @param array $config An array that holds the plugin configuration
|
||||
* @since 1.5
|
||||
*/
|
||||
function plgAuthenticationGMail(& $subject, $config) {
|
||||
parent::__construct($subject, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method should handle any authentication and report back to the subject
|
||||
*
|
||||
* @access public
|
||||
* @param array $credentials Array holding the user credentials
|
||||
* @param array $options Array of extra options
|
||||
* @param object $response Authentication response object
|
||||
* @return boolean
|
||||
* @since 1.5
|
||||
*/
|
||||
function onAuthenticate( $credentials, $options, &$response )
|
||||
{
|
||||
$message = '';
|
||||
$success = 0;
|
||||
if(function_exists('curl_init'))
|
||||
{
|
||||
if(strlen($credentials['username']) && strlen($credentials['password']))
|
||||
{
|
||||
$curl = curl_init('https://mail.google.com/mail/feed/atom');
|
||||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
|
||||
//curl_setopt($curl, CURLOPT_HEADER, 1);
|
||||
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
|
||||
curl_setopt($curl, CURLOPT_USERPWD, $credentials['username'].':'.$credentials['password']);
|
||||
$result = curl_exec($curl);
|
||||
$code = curl_getinfo ($curl, CURLINFO_HTTP_CODE);
|
||||
|
||||
switch($code)
|
||||
{
|
||||
case 200:
|
||||
$message = 'Access Granted';
|
||||
$success = 1;
|
||||
break;
|
||||
case 401:
|
||||
$message = 'Access Denied';
|
||||
break;
|
||||
default:
|
||||
$message = 'Result unknown, access denied.';
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$message = 'Username or password blank';
|
||||
}
|
||||
}
|
||||
else {
|
||||
$message = 'curl isn\'t installed';
|
||||
}
|
||||
|
||||
if ($success)
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_SUCCESS;
|
||||
$response->error_message = '';
|
||||
$response->email = $credentials['username'];
|
||||
$response->fullname = $credentials['username'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Failed to authenticate: ' . $message;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<install version="1.5" type="plugin" group="auth">
|
||||
<name>Authentication - GMail</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>February 2006</creationDate>
|
||||
<copyright>Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.</copyright>
|
||||
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
|
||||
<authorEmail>[email protected]</authorEmail>
|
||||
<authorUrl>www.joomla.org</authorUrl>
|
||||
<version>1.5</version>
|
||||
<description>Handles user authentication with a GMail account</description>
|
||||
<files>
|
||||
<filename plugin="gmail">gmail.php</filename>
|
||||
</files>
|
||||
<params />
|
||||
</install>
|
||||
@@ -0,0 +1 @@
|
||||
<html><body bgcolor="#FFFFFF"></body></html>
|
||||
@@ -0,0 +1,105 @@
|
||||
<?php
|
||||
/**
|
||||
* @version $Id: joomla.php 10709 2008-08-21 09:58:52Z eddieajau $
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
|
||||
* @license GNU/GPL, see LICENSE.php
|
||||
* Joomla! is free software. This version may have been modified pursuant
|
||||
* to the GNU General Public License, and as distributed it includes or
|
||||
* is derivative of works licensed under the GNU General Public License or
|
||||
* other free or open source software licenses.
|
||||
* See COPYRIGHT.php for copyright notices and details.
|
||||
*/
|
||||
|
||||
// Check to ensure this file is included in Joomla!
|
||||
defined('_JEXEC') or die( 'Restricted access' );
|
||||
|
||||
jimport( 'joomla.plugin.plugin' );
|
||||
|
||||
/**
|
||||
* Joomla Authentication plugin
|
||||
*
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @since 1.5
|
||||
*/
|
||||
class plgAuthenticationJoomla extends JPlugin
|
||||
{
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* For php4 compatability we must not use the __constructor as a constructor for plugins
|
||||
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
|
||||
* This causes problems with cross-referencing necessary for the observer design pattern.
|
||||
*
|
||||
* @param object $subject The object to observe
|
||||
* @param array $config An array that holds the plugin configuration
|
||||
* @since 1.5
|
||||
*/
|
||||
function plgAuthenticationJoomla(& $subject, $config) {
|
||||
parent::__construct($subject, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method should handle any authentication and report back to the subject
|
||||
*
|
||||
* @access public
|
||||
* @param array $credentials Array holding the user credentials
|
||||
* @param array $options Array of extra options
|
||||
* @param object $response Authentication response object
|
||||
* @return boolean
|
||||
* @since 1.5
|
||||
*/
|
||||
function onAuthenticate( $credentials, $options, &$response )
|
||||
{
|
||||
jimport('joomla.user.helper');
|
||||
|
||||
// Joomla does not like blank passwords
|
||||
if (empty($credentials['password']))
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Empty password not allowed';
|
||||
return false;
|
||||
}
|
||||
|
||||
// Initialize variables
|
||||
$conditions = '';
|
||||
|
||||
// Get a database object
|
||||
$db =& JFactory::getDBO();
|
||||
|
||||
$query = 'SELECT `id`, `password`, `gid`'
|
||||
. ' FROM `#__users`'
|
||||
. ' WHERE username=' . $db->Quote( $credentials['username'] )
|
||||
;
|
||||
$db->setQuery( $query );
|
||||
$result = $db->loadObject();
|
||||
|
||||
|
||||
if($result)
|
||||
{
|
||||
$parts = explode( ':', $result->password );
|
||||
$crypt = $parts[0];
|
||||
$salt = @$parts[1];
|
||||
$testcrypt = JUserHelper::getCryptedPassword($credentials['password'], $salt);
|
||||
|
||||
if ($crypt == $testcrypt) {
|
||||
$user = JUser::getInstance($result->id); // Bring this in line with the rest of the system
|
||||
$response->email = $user->email;
|
||||
$response->fullname = $user->name;
|
||||
$response->status = JAUTHENTICATE_STATUS_SUCCESS;
|
||||
$response->error_message = '';
|
||||
} else {
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Invalid password';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'User does not exist';
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<install version="1.5" type="plugin" group="auth">
|
||||
<name>Authentication - Joomla</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>November 2005</creationDate>
|
||||
<copyright>Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.</copyright>
|
||||
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
|
||||
<authorEmail>[email protected]</authorEmail>
|
||||
<authorUrl>www.joomla.org</authorUrl>
|
||||
<version>1.5</version>
|
||||
<description>Handles Joomlas default user authentication</description>
|
||||
<files>
|
||||
<filename plugin="joomla">joomla.php</filename>
|
||||
</files>
|
||||
<params/>
|
||||
</install>
|
||||
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
/**
|
||||
* @version $Id: ldap.php 10709 2008-08-21 09:58:52Z eddieajau $
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
|
||||
* @license GNU/GPL, see LICENSE.php
|
||||
* Joomla! is free software. This version may have been modified pursuant
|
||||
* to the GNU General Public License, and as distributed it includes or
|
||||
* is derivative of works licensed under the GNU General Public License or
|
||||
* other free or open source software licenses.
|
||||
* See COPYRIGHT.php for copyright notices and details.
|
||||
*/
|
||||
|
||||
// Check to ensure this file is included in Joomla!
|
||||
defined('_JEXEC') or die( 'Restricted access' );
|
||||
|
||||
jimport( 'joomla.plugin.plugin' );
|
||||
|
||||
/**
|
||||
* LDAP Authentication Plugin
|
||||
*
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @since 1.5
|
||||
*/
|
||||
|
||||
class plgAuthenticationLdap extends JPlugin
|
||||
{
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* For php4 compatability we must not use the __constructor as a constructor for plugins
|
||||
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
|
||||
* This causes problems with cross-referencing necessary for the observer design pattern.
|
||||
*
|
||||
* @param object $subject The object to observe
|
||||
* @param array $config An array that holds the plugin configuration
|
||||
* @since 1.5
|
||||
*/
|
||||
function plgAuthenticationLdap(& $subject, $config)
|
||||
{
|
||||
parent::__construct($subject, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method should handle any authentication and report back to the subject
|
||||
*
|
||||
* @access public
|
||||
* @param array $credentials Array holding the user credentials
|
||||
* @param array $options Array of extra options
|
||||
* @param object $response Authentication response object
|
||||
* @return object boolean
|
||||
* @since 1.5
|
||||
*/
|
||||
function onAuthenticate( $credentials, $options, &$response )
|
||||
{
|
||||
// Initialize variables
|
||||
$userdetails = null;
|
||||
$success = 0;
|
||||
$userdetails = Array();
|
||||
|
||||
// For JLog
|
||||
$response->type = 'LDAP';
|
||||
// LDAP does not like Blank passwords (tries to Anon Bind which is bad)
|
||||
if (empty($credentials['password']))
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'LDAP can not have blank password';
|
||||
return false;
|
||||
}
|
||||
|
||||
// load plugin params info
|
||||
$ldap_email = $this->params->get('ldap_email');
|
||||
$ldap_fullname = $this->params->get('ldap_fullname');
|
||||
$ldap_uid = $this->params->get('ldap_uid');
|
||||
$auth_method = $this->params->get('auth_method');
|
||||
|
||||
jimport('joomla.client.ldap');
|
||||
$ldap = new JLDAP($this->params);
|
||||
|
||||
if (!$ldap->connect())
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Unable to connect to LDAP server';
|
||||
return;
|
||||
}
|
||||
|
||||
switch($auth_method)
|
||||
{
|
||||
case 'search':
|
||||
{
|
||||
// Bind using Connect Username/password
|
||||
// Force anon bind to mitigate misconfiguration like [#7119]
|
||||
if(strlen($this->params->get('username'))) $bindtest = $ldap->bind();
|
||||
else $bindtest = $ldap->anonymous_bind();
|
||||
|
||||
|
||||
if($bindtest)
|
||||
{
|
||||
// Search for users DN
|
||||
$binddata = $ldap->simple_search(str_replace("[search]", $credentials['username'], $this->params->get('search_string')));
|
||||
if(isset($binddata[0]) && isset($binddata[0]['dn'])) {
|
||||
// Verify Users Credentials
|
||||
$success = $ldap->bind($binddata[0]['dn'],$credentials['password'],1);
|
||||
// Get users details
|
||||
$userdetails = $binddata;
|
||||
} else {
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Unable to find user';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Unable to bind to LDAP';
|
||||
}
|
||||
} break;
|
||||
|
||||
case 'bind':
|
||||
{
|
||||
// We just accept the result here
|
||||
$success = $ldap->bind($credentials['username'],$credentials['password']);
|
||||
if($success) {
|
||||
$userdetails = $ldap->simple_search(str_replace("[search]", $credentials['username'], $this->params->get('search_string')));
|
||||
} else {
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Failed binding to LDAP server';
|
||||
}
|
||||
} break;
|
||||
}
|
||||
|
||||
if(!$success)
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
if(!strlen($response->error_message)) $response->error_message = 'Incorrect username/password';
|
||||
}
|
||||
else
|
||||
{
|
||||
// Grab some details from LDAP and return them
|
||||
if (isset($userdetails[0][$ldap_uid][0])) {
|
||||
$response->username = $userdetails[0][$ldap_uid][0];
|
||||
}
|
||||
|
||||
if (isset($userdetails[0][$ldap_email][0])) {
|
||||
$response->email = $userdetails[0][$ldap_email][0];
|
||||
}
|
||||
|
||||
if(isset($userdetails[0][$ldap_fullname][0])) {
|
||||
$response->fullname = $userdetails[0][$ldap_fullname][0];
|
||||
} else {
|
||||
$response->fullname = $credentials['username'];
|
||||
}
|
||||
|
||||
// Were good - So say so.
|
||||
$response->status = JAUTHENTICATE_STATUS_SUCCESS;
|
||||
$response->error_message = '';
|
||||
}
|
||||
|
||||
$ldap->close();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<install version="1.5" type="plugin" group="auth">
|
||||
<name>Authentication - LDAP</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>November 2005</creationDate>
|
||||
<copyright>Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.</copyright>
|
||||
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
|
||||
<authorEmail>[email protected]</authorEmail>
|
||||
<authorUrl>www.joomla.org</authorUrl>
|
||||
<version>1.5</version>
|
||||
<description>Handles user authentication against an LDAP server</description>
|
||||
<files>
|
||||
<filename plugin="ldap">ldap.php</filename>
|
||||
</files>
|
||||
<params>
|
||||
<param name="host" type="text" size="20" default="" label="Host" description="PARAMLDAPHOST" />
|
||||
<param name="port" type="text" size="20" default="389" label="Port" description="PARAMLDAPPORT" />
|
||||
<param name="use_ldapV3" type="radio" default="0" label="LDAP V3" description="PARAMLDAPV3">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Yes</option>
|
||||
</param>
|
||||
<param name="negotiate_tls" type="radio" default="0" label="Negotiate TLS" description="PARAMNEGOCIATETLS">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Yes</option>
|
||||
</param>
|
||||
<param name="no_referrals" type="radio" default="0" label="Follow referrals" description="PARAMFOLLOW">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Yes</option>
|
||||
</param>
|
||||
<param name="auth_method" default="bind" type="list" label="Authorization Method" description="PARAMAUTHMETHOD">
|
||||
<option value="search">Bind and Search</option>
|
||||
<option value="bind">Bind Directly As User</option>
|
||||
</param>
|
||||
<param name="base_dn" type="text" size="20" default="" label="Base DN" description="PARAMBASEDN" />
|
||||
<param name="search_string" type="text" size="20" default="" label="Search string" description="PARAMSEARCHSTRING" />
|
||||
<param name="users_dn" type="text" size="20" default="" label="Users DN" description="PARAMUSERSDN" />
|
||||
<param name="@spacer" type="spacer" default="" label="" description="" />
|
||||
<param name="username" type="text" size="20" default="" label="Connect username" description="PARAMCONNECTSTRING" />
|
||||
<param name="password" type="password" size="20" default="" label="Connect password" description="PARAMCONNECTPASSWORD" />
|
||||
<param name="@spacer" type="spacer" default="" label="" description="" />
|
||||
<param name="ldap_fullname" type="text" size="20" default="fullName" label="Map FullName" description="PARAMMAPFN" />
|
||||
<param name="ldap_email" type="text" size="20" default="mail" label="Map Email" description="PARAMMAPEMAIL" />
|
||||
<param name="ldap_uid" type="text" size="20" default="uid" label="Map User ID" description="PARAMMAPUID" />
|
||||
</params>
|
||||
</install>
|
||||
@@ -0,0 +1,274 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @version $Id: openid.php 11403 2009-01-06 06:19:31Z ian $
|
||||
* @package Joomla
|
||||
* @subpackage JFramework
|
||||
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
|
||||
* @license GNU/GPL, see LICENSE.php
|
||||
* Joomla! is free software. This version may have been modified pursuant
|
||||
* to the GNU General Public License, and as distributed it includes or
|
||||
* is derivative of works licensed under the GNU General Public License or
|
||||
* other free or open source software licenses.
|
||||
* See COPYRIGHT.php for copyright notices and details.
|
||||
*/
|
||||
|
||||
// Check to ensure this file is included in Joomla!
|
||||
defined('_JEXEC') or die('Restricted access');
|
||||
|
||||
jimport('joomla.plugin.plugin');
|
||||
|
||||
/**
|
||||
* OpenID Authentication Plugin
|
||||
*
|
||||
* @package Joomla
|
||||
* @subpackage openID
|
||||
* @since 1.5
|
||||
*/
|
||||
|
||||
class plgAuthenticationOpenID extends JPlugin {
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* For php4 compatability we must not use the __constructor as a constructor for plugins
|
||||
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
|
||||
* This causes problems with cross-referencing necessary for the observer design pattern.
|
||||
*
|
||||
* @param object $subject The object to observe
|
||||
* @param array $config An array that holds the plugin configuration
|
||||
* @since 1.5
|
||||
*/
|
||||
function plgAuthenticationOpenID(& $subject, $config) {
|
||||
parent::__construct($subject, $config);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method should handle any authentication and report back to the subject
|
||||
*
|
||||
* @access public
|
||||
* @param array $credentials Array holding the user credentials
|
||||
* @param array $options Array of extra options (return, entry_url)
|
||||
* @param object $response Authentication response object
|
||||
* @return boolean
|
||||
* @since 1.5
|
||||
*/
|
||||
function onAuthenticate($credentials, $options, & $response) {
|
||||
$mainframe =& JFactory::getApplication();
|
||||
|
||||
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
||||
define('Auth_OpenID_RAND_SOURCE', null);
|
||||
} else {
|
||||
$f = @fopen('/dev/urandom', 'r');
|
||||
if ($f !== false) {
|
||||
define('Auth_OpenID_RAND_SOURCE', '/dev/urandom');
|
||||
fclose($f);
|
||||
} else {
|
||||
$f = @fopen('/dev/random', 'r');
|
||||
if ($f !== false) {
|
||||
define('Auth_OpenID_RAND_SOURCE', '/dev/urandom');
|
||||
fclose($f);
|
||||
} else {
|
||||
define('Auth_OpenID_RAND_SOURCE', null);
|
||||
}
|
||||
}
|
||||
}
|
||||
jimport('openid.consumer');
|
||||
jimport('joomla.filesystem.folder');
|
||||
|
||||
// Access the session data
|
||||
$session = & JFactory :: getSession();
|
||||
|
||||
// Create and/or start using the data store
|
||||
$store_path = JPATH_ROOT . '/tmp/_joomla_openid_store';
|
||||
if (!JFolder :: exists($store_path) && !JFolder :: create($store_path)) {
|
||||
$response->type = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = "Could not create the FileStore directory '$store_path'. " . " Please check the effective permissions.";
|
||||
return false;
|
||||
}
|
||||
|
||||
// Create store object
|
||||
$store = new Auth_OpenID_FileStore($store_path);
|
||||
|
||||
// Create a consumer object
|
||||
$consumer = new Auth_OpenID_Consumer($store);
|
||||
|
||||
if (!isset ($_SESSION['_openid_consumer_last_token'])) {
|
||||
// Begin the OpenID authentication process.
|
||||
if (!$auth_request = $consumer->begin($credentials['username'])) {
|
||||
$response->type = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Authentication error : could not connect to the openid server';
|
||||
return false;
|
||||
}
|
||||
|
||||
$sreg_request = Auth_OpenID_SRegRequest::build(
|
||||
array ('email'),
|
||||
array ('fullname','language','timezone')
|
||||
);
|
||||
|
||||
if ($sreg_request) {
|
||||
$auth_request->addExtension($sreg_request);
|
||||
}
|
||||
$policy_uris = array();
|
||||
if ($this->params->get( 'phishing-resistant', 0)) {
|
||||
$policy_uris[] = 'http://schemas.openid.net/pape/policies/2007/06/phishing-resistant';
|
||||
}
|
||||
|
||||
if ($this->params->get( 'multi-factor', 0)) {
|
||||
$policy_uris[] = 'http://schemas.openid.net/pape/policies/2007/06/multi-factor';
|
||||
}
|
||||
|
||||
if ($this->params->get( 'multi-factor-physical', 0)) {
|
||||
$policy_uris[] = 'http://schemas.openid.net/pape/policies/2007/06/multi-factor-physical';
|
||||
}
|
||||
|
||||
$pape_request = new Auth_OpenID_PAPE_Request($policy_uris);
|
||||
if ($pape_request) {
|
||||
$auth_request->addExtension($pape_request);
|
||||
}
|
||||
|
||||
//Create the entry url
|
||||
$entry_url = isset ($options['entry_url']) ? $options['entry_url'] : JURI :: base();
|
||||
$entry_url = JURI :: getInstance($entry_url);
|
||||
|
||||
unset ($options['entry_url']); //We don't need this anymore
|
||||
|
||||
//Create the url query information
|
||||
$options['return'] = isset($options['return']) ? base64_encode($options['return']) : base64_encode(JURI::base());
|
||||
$options[JUtility::getToken()] = 1;
|
||||
|
||||
$process_url = sprintf($entry_url->toString()."?option=com_user&task=login&username=%s", $credentials['username']);
|
||||
$process_url .= '&'.JURI::buildQuery($options);
|
||||
|
||||
$session->set('return_url', $process_url );
|
||||
|
||||
$trust_url = $entry_url->toString(array (
|
||||
'path',
|
||||
'host',
|
||||
'port',
|
||||
'scheme'
|
||||
));
|
||||
$session->set('trust_url', $trust_url);
|
||||
// For OpenID 1, send a redirect. For OpenID 2, use a Javascript
|
||||
// form to send a POST request to the server.
|
||||
if ($auth_request->shouldSendRedirect()) {
|
||||
$redirect_url = $auth_request->redirectURL($trust_url, $process_url);
|
||||
|
||||
// If the redirect URL can't be built, display an error
|
||||
// message.
|
||||
if (Auth_OpenID :: isFailure($redirect_url)) {
|
||||
displayError("Could not redirect to server: " . $redirect_url->message);
|
||||
} else {
|
||||
// Send redirect.
|
||||
$mainframe->redirect($redirect_url);
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
// Generate form markup and render it.
|
||||
$form_id = 'openid_message';
|
||||
$form_html = $auth_request->htmlMarkup($trust_url, $process_url, false, array (
|
||||
'id' => $form_id
|
||||
));
|
||||
// Display an error if the form markup couldn't be generated;
|
||||
// otherwise, render the HTML.
|
||||
if (Auth_OpenID :: isFailure($form_html)) {
|
||||
//displayError("Could not redirect to server: " . $form_html->message);
|
||||
} else {
|
||||
JResponse :: setBody($form_html);
|
||||
echo JResponse :: toString($mainframe->getCfg('gzip'));
|
||||
$mainframe->close();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
$result = $consumer->complete($session->get('return_url'));
|
||||
switch ($result->status) {
|
||||
case Auth_OpenID_SUCCESS :
|
||||
{
|
||||
$sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($result);
|
||||
|
||||
$sreg = $sreg_resp->contents();
|
||||
$usermode = $this->params->get('usermode', 2);
|
||||
/* in the following code, we deal with the transition from the old openid version to the new openid version
|
||||
In the old version, the username was always taken straight from the login form. In the new version, we get a
|
||||
username back from the openid provider. This is necessary for a number of reasons. First, providers such as
|
||||
yahoo.com allow you to enter only the provider name in the username field (i.e. yahoo.com or flickr.com). Taking
|
||||
this as the username would obviously cause problems because everybody who had an id from yahoo.com would have username
|
||||
yahoo.com. Second, it is necessary because with the old way, we rely on the user entering the id the same every time.
|
||||
This is bad because if the user enters the http:// one time and not the second time, they end up as two different users.
|
||||
There are two possible settings here - the first setting, is to always use the new way, which is to get the username from
|
||||
the provider after authentication. The second setting is to check if the username exists that we got from the provider. If it
|
||||
doesn't, then we check if the entered username exists. If it does, then we update the database with the username from the provider
|
||||
and continue happily along with the new username.
|
||||
We had talked about a third option, which would be to always used the old way, but that seems insecure in the case of somebody using
|
||||
a yahoo.com ID.
|
||||
*/
|
||||
if ($usermode && $usermode == 1) {
|
||||
$response->username = $result->getDisplayIdentifier();
|
||||
} else {
|
||||
// first, check if the provider provided username exists in the database
|
||||
$db = &JFactory::getDBO();
|
||||
$query = 'SELECT username FROM #__users'.
|
||||
' WHERE username='.$db->Quote($result->getDisplayIdentifier()).
|
||||
' AND password=\'\'';
|
||||
$db->setQuery($query);
|
||||
$dbresult = $db->loadObject();
|
||||
if ($dbresult) {
|
||||
// if so, we set our username value to the provided value
|
||||
$response->username = $result->getDisplayIdentifier();
|
||||
} else {
|
||||
// if it doesn't, we check if the username from the from exists in the database
|
||||
$query = 'SELECT username FROM #__users'.
|
||||
' WHERE username='.$db->Quote( $credentials['username'] ).
|
||||
' AND password=\'\'';
|
||||
$db->setQuery($query);
|
||||
$dbresult = $db->loadObject();
|
||||
if ($dbresult) {
|
||||
// if it does, we update the database
|
||||
$query = 'UPDATE #__users SET username='.$db->Quote($result->getDisplayIdentifier()).
|
||||
' WHERE username='.$db->Quote($credentials['username']);
|
||||
$db->setQuery($query);
|
||||
$db->query();
|
||||
if (!$db->query()) {
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = $db->getErrorMsg();
|
||||
//break out of the switch if we hit an error with our query
|
||||
break;
|
||||
}
|
||||
}
|
||||
$response->username = $result->getDisplayIdentifier();
|
||||
// we return the username provided by the openid provider
|
||||
}
|
||||
}
|
||||
$response->status = JAUTHENTICATE_STATUS_SUCCESS;
|
||||
$response->error_message = '';
|
||||
if (!isset($sreg['email'])) {
|
||||
$response->email = str_replace( array('http://', 'https://'), '', $response->username );
|
||||
$response->email = str_replace( '/', '-', $response->email );
|
||||
$response->email .= '@openid.';
|
||||
} else {
|
||||
$response->email = $sreg['email'];
|
||||
}
|
||||
$response->fullname = isset ($sreg['fullname']) ? $sreg['fullname'] : $response->username;
|
||||
$response->language = isset ($sreg['language']) ? $sreg['language'] : '';
|
||||
$response->timezone = isset ($sreg['timezone']) ? $sreg['timezone'] : '';
|
||||
}
|
||||
break;
|
||||
|
||||
case Auth_OpenID_CANCEL :
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_CANCEL;
|
||||
$response->error_message = 'Authentication cancelled';
|
||||
}
|
||||
break;
|
||||
|
||||
case Auth_OpenID_FAILURE :
|
||||
{
|
||||
$response->status = JAUTHENTICATE_STATUS_FAILURE;
|
||||
$response->error_message = 'Authentication failed';
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// function
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<install version="1.5" type="plugin" group="authentication">
|
||||
<name>Authentication - OpenID</name>
|
||||
<author>Joomla! Project</author>
|
||||
<creationDate>February 2006</creationDate>
|
||||
<copyright>Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.</copyright>
|
||||
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
|
||||
<authorEmail>[email protected]</authorEmail>
|
||||
<authorUrl>www.joomla.org</authorUrl>
|
||||
<version>1.5</version>
|
||||
<description>Handles user authentication with an OpenID (Requires PHP5)</description>
|
||||
<files>
|
||||
<filename plugin="openid">openid.php</filename>
|
||||
</files>
|
||||
<params>
|
||||
<param name="usermode" type="radio" default="2" label="Convert old usernames" description="OPENID_USERMODE_DESC">
|
||||
<option value="2">Yes</option>
|
||||
<option value="1">No</option>
|
||||
</param>
|
||||
<param name="phishing-resistant" type="radio" default="0" label="Require Policy phishing resistant" description="PHISHING_RESISTANT_DESC">
|
||||
<option value="1">Yes</option>
|
||||
<option value="0">No</option>
|
||||
</param>
|
||||
<param name="multi-factor" type="radio" default="0" label="Require Policy multi factor" description="MULTI_FACTOR_DESC">
|
||||
<option value="1">Yes</option>
|
||||
<option value="0">No</option>
|
||||
</param>
|
||||
<param name="multi-factor-physical" type="radio" default="0" label="Require Policy multi factor physical" description="MULTI_FACTOR_PHYSICAL_DESC">
|
||||
<option value="1">Yes</option>
|
||||
<option value="0">No</option>
|
||||
</param>
|
||||
</params>
|
||||
</install>
|
||||
@@ -0,0 +1,242 @@
|
||||
<?php
|
||||
/**
|
||||
* CodeCitation 1.3.1
|
||||
* Joomla plugin
|
||||
* allow usage of SyntaxHighlighter in WYSIWYG editor
|
||||
* Usage: {codecitation class="(class params for SyntaxHighlighter)" width="(optional width param for div tag)"} CODE TO HIGHTLIGHT {/codecitation}
|
||||
* Usage example: {codecitation class="brush: VisualBasic; gutter:true"} VB CODE {/codecitation}
|
||||
* Copyright 2009 [email protected]. All rights reserved.
|
||||
* This is a derivative work. Portions are copyright:
|
||||
* Open Source Matters
|
||||
* This work is licensed under the GNU/GPL license.
|
||||
* This version may have been modified pursuant
|
||||
* to the GNU General Public License, and as distributed it includes or
|
||||
* is derivative of works licensed under the GNU General Public License or
|
||||
* other free or open source software licenses.
|
||||
*/
|
||||
|
||||
// no direct access
|
||||
defined( '_JEXEC' ) or die( 'Restricted access' );
|
||||
|
||||
jimport( 'joomla.event.plugin' );
|
||||
|
||||
|
||||
class plgContentCodeCitation extends JPlugin {
|
||||
|
||||
const _tag="code";
|
||||
|
||||
private static $langAliases = array("as3" => "as3", "actionscript3" => "as3",
|
||||
"bash" => "bash", "shell" => "bash",
|
||||
"cpp" => "cpp", "c" => "cpp",
|
||||
"csharp" => "csharp", "c#" => "csharp", "c-sharp" => "csharp",
|
||||
"css" => "css",
|
||||
"pascal" => "pascal", "delphi" => "pascal",
|
||||
"diff" => "diff", "patch" => "diff",
|
||||
"groovy" => "groovy",
|
||||
"java" => "java",
|
||||
"javafx" => "javafx", "jfx" => "javafx",
|
||||
"js" => "javascript", "javascript" => "javascript", "jscript" => "javascript",
|
||||
"perl" => "perl", "pl" => "perl", "Perl" => "perl",
|
||||
"php" => "php",
|
||||
"text" => "text", "plain" => "text",
|
||||
"powershell" => "powershell", "ps" => "powershell",
|
||||
"python" => "python", "py" => "python",
|
||||
"ruby" => "ruby", "rails" => "ruby", "ror" => "ruby",
|
||||
"scala" => "scala",
|
||||
"sql" => "sql",
|
||||
"vb" => "vb", "vbnet" => "vb", "VisualBasic" => "vb",
|
||||
"xml" => "xml", "xhtml" => "xml", "xslt" => "xml", "html" => "xml" );
|
||||
|
||||
private static $langFiles = array( "as3" => "shBrushAS3.js",
|
||||
"bash" => "shBrushBash.js",
|
||||
"cpp" => "shBrushCpp.js",
|
||||
"csharp" => "shBrushCSharp.js",
|
||||
"css" => "shBrushCss.js",
|
||||
"pascal" => "shBrushDelphi.js",
|
||||
"diff" => "shBrushDiff.js",
|
||||
"groovy" => "shBrushGroovy.js",
|
||||
"java" => "shBrushJava.js",
|
||||
"javafx" => "shBrushJavaFX.js",
|
||||
"javascript" => "shBrushJScript.js",
|
||||
"perl" => "shBrushPerl.js",
|
||||
"php" => "shBrushPhp.js",
|
||||
"text" => "shBrushPlain.js",
|
||||
"powershell" => "shBrushPowerShell.js",
|
||||
"python" => "shBrushPython.js",
|
||||
"ruby" => "shBrushRuby.js",
|
||||
"scala" => "shBrushScala.js",
|
||||
"sql" => "shBrushSql.js",
|
||||
"vb" => "shBrushVb.js",
|
||||
"xml" => "shBrushXml.js"
|
||||
);
|
||||
|
||||
private $_includeCSSOnce = False;
|
||||
private $_includedScripts = array();
|
||||
private $_runHighlighterOnce=False;
|
||||
|
||||
function plgContentCodeCitation( &$subject, $params ){
|
||||
parent::__construct( $subject, $params );
|
||||
}
|
||||
|
||||
//onPrepareContent event handler. Replace all entries of {codecitation} tag and load necessary scripts
|
||||
function onPrepareContent( &$row, &$params, $page=0 ) {
|
||||
$tag=self::_tag;
|
||||
$alternativetag=$this->params->def( 'alternativetag', '');
|
||||
if ($alternativetag!='')
|
||||
{
|
||||
$tag='('.$tag.'|'.$alternativetag.')';
|
||||
}
|
||||
else
|
||||
{
|
||||
$tag='('.$tag.')';
|
||||
}
|
||||
$regex = "#{".$tag."[\s| ]*(.*?)}([\s\S]*?){/\\1}#s";
|
||||
// register the regular expresstion to invoke our replacer in case Joomla finds the matches
|
||||
$row->text = preg_replace_callback( $regex, array($this,'replacer'), $row->text );
|
||||
return true;
|
||||
}
|
||||
|
||||
//Do the replacement work to replace {codecitation}{/codecitation} into <div><pre></pre></div>
|
||||
//and include scripts as necessary
|
||||
private function replacer( &$matches ) {
|
||||
jimport('domit.xml_saxy_shared');
|
||||
|
||||
//adjust document header to include SyntaxHighlighter styles and core
|
||||
$this->includeCSSOnce();
|
||||
$html_entities_match = array( "'\n'", "'\<\s*span\s*[\s\S]*?/*\s*\>'i", "'\<pre\s*[\s\S]*?/*\s*\>'i","'\<\s*/\s*pre\s*\>'i", "'\<div\s*[\s\S]*?/*\s*\>'i","'\<\s*/\s*div\s*\>'i","'\<\s*/\s*span\s*\>'i", "'\<\s*/\s*p\s*\>'i", "'\<p\s*[\s\S]*?/*\s*\>'i","'\<br\s*\/*\s*\>'i", "'<'i", "'>'i", "'''", "'"'i", "' 'i" );
|
||||
$html_entities_replace = array("", "", "", "", "", "", "", "", "\n", "\n", '<', '>', "'", '"', ' ' );
|
||||
|
||||
$matches[2]=preg_replace($html_entities_match, $html_entities_replace, $matches[2] );
|
||||
$matches[3]=preg_replace($html_entities_match, $html_entities_replace, $matches[3] );
|
||||
$text = $matches[3];
|
||||
|
||||
$args = SAXY_Parser_Base::parseAttributes( $matches[2] );
|
||||
|
||||
$shclass = JArrayHelper::getValue( $args, 'class', '' );
|
||||
$width = JArrayHelper::getValue( $args, 'width', 'inherit' );
|
||||
|
||||
//determine language to show
|
||||
$langAlias="";
|
||||
$regexLangAlias="#brush\s*:\s*(\S[^;]*[^;\s])#s";
|
||||
|
||||
if (preg_match($regexLangAlias,$shclass,$langAliasMatches)>0)
|
||||
{
|
||||
$langAlias=$langAliasMatches[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
$langAlias=$this->params->def( 'defaultlang', 'text');
|
||||
$shclass='brush:'.$langAlias.';'.$shclass;
|
||||
}
|
||||
//determine if we need to include xml markup parser for html scripts
|
||||
$htmlScriptMode=False;
|
||||
$regexHtmlScriptMode="#html-script\s*:\s*(\S[^;]*[^;\s])#s";
|
||||
if (preg_match($regexHtmlScriptMode,$shclass,$htmlScriptModeMatches)>0)
|
||||
{
|
||||
$htmlScriptMode=strtoupper($htmlScriptModeMatches[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$htmlScriptMode="FALSE";
|
||||
}
|
||||
|
||||
//include Java script that is necessary to show the code (if we have not already did it for this language)
|
||||
$codes=$this->includeScript($langAlias,$htmlScriptMode);
|
||||
|
||||
$prolog='<div style="overflow: hidden; display: block; height: auto; width: '.$width.';"><pre class="'.$shclass.'">';
|
||||
$epilog='</pre></div>';
|
||||
|
||||
$text = $codes.$prolog.$text.$epilog;
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
private function includeScript($langAlias, $htmlScriptMode) {
|
||||
//get then lanuage name for the alias
|
||||
$langName="text"; //IN CASE OF WRONG ALIAS WE WILL TREAT IT AS PLAIN TEXT
|
||||
|
||||
if (isset(self::$langAliases[$langAlias]))
|
||||
{
|
||||
$langName=self::$langAliases[$langAlias];
|
||||
}
|
||||
//get the filename for the language
|
||||
$fileName="";
|
||||
if (isset(self::$langFiles[$langName]))
|
||||
{
|
||||
$fileName=self::$langFiles[$langName];
|
||||
}
|
||||
else
|
||||
{
|
||||
$fileName=self::$langFiles["text"];
|
||||
}
|
||||
//check if we have already embeeded file into the page
|
||||
if (!isset($this->_includedScripts[$fileName]))
|
||||
{
|
||||
$this->_includedScripts[$fileName]="1";
|
||||
$this->updatePageIncludes($fileName);
|
||||
}
|
||||
if($htmlScriptMode=="TRUE")
|
||||
{
|
||||
//embeed xml lang file if necessary for html-script mode
|
||||
if (!isset($this->_includedScripts[self::$langFiles[self::$langAliases["xml"]]]))
|
||||
{
|
||||
$this->_includedScripts[self::$langFiles[self::$langAliases["xml"]]]="1";
|
||||
$this->updatePageIncludes(self::$langFiles[self::$langAliases["xml"]]);
|
||||
}
|
||||
}
|
||||
|
||||
//since we are here, we need to embeed styles and scripts into document
|
||||
if ($this->_runHighlighterOnce) return "";
|
||||
$this->_runHighlighterOnce=True;
|
||||
$pluginRoot=self::getPluginRoot();
|
||||
//TODO: Handle plugin parameters and set default SyntaxHighlighter values according to the plugin params vaules
|
||||
$codes='<script type="text/javascript">
|
||||
SyntaxHighlighter.config.clipboardSwf = "'.$pluginRoot.'scripts/clipboard.swf";
|
||||
SyntaxHighlighter.defaults["auto-links"] = '.($this->params->def( 'auto-links', 0) ? 'true' : 'false').';
|
||||
SyntaxHighlighter.defaults["collapse"] = '.($this->params->def( 'collapse', 0) ? 'true' : 'false').';
|
||||
SyntaxHighlighter.defaults["gutter"] = '.($this->params->def( 'gutter', 0) ? 'true' : 'false').';
|
||||
SyntaxHighlighter.defaults["smart-tabs"] = '.($this->params->def( 'smart-tabs', 0) ? 'true' : 'false').';
|
||||
SyntaxHighlighter.defaults["tab-size"] = '.$this->params->def( 'tab-size', '4').';
|
||||
SyntaxHighlighter.defaults["toolbar"] = '.($this->params->def( 'toolbar', 0) ? 'true' : 'false').';
|
||||
SyntaxHighlighter.defaults["wrap-lines"] = '.($this->params->def( 'wrap-lines', 0) ? 'true' : 'false').';
|
||||
SyntaxHighlighter.all();
|
||||
</script>';
|
||||
return $codes;
|
||||
}
|
||||
|
||||
private function updatePageIncludes($fileName)
|
||||
{
|
||||
$pluginRoot=self::getPluginRoot();
|
||||
$tag='<script type="text/javascript" src="'.$pluginRoot.'scripts/'.$fileName.'"></script>';
|
||||
$document= & JFactory::getDocument();
|
||||
if ($document)
|
||||
{
|
||||
$document->addCustomTag($tag);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
//include necessary styles into page only once
|
||||
private function includeCSSOnce() {
|
||||
//since we are here, we need to embeed styles and scripts into document
|
||||
if ($this->_includeCSSOnce) return;
|
||||
// we want only one link to the CSS
|
||||
$this->_includeCSSOnce = True;
|
||||
$pluginRoot=self::getPluginRoot();
|
||||
$tag= '<link type="text/css" rel="stylesheet" href="'.$pluginRoot.'styles/shCore.css"/>
|
||||
<link type="text/css" rel="stylesheet" href="'.$pluginRoot.'styles/'.$this->params->def( 'theme', 'shThemeDefault.css').'"/>
|
||||
<script type="text/javascript" src="'.$pluginRoot.'scripts/shCore.js"></script>';
|
||||
$document= & JFactory::getDocument();
|
||||
if ($document)
|
||||
{
|
||||
$document->addCustomTag($tag);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public static function getPluginRoot()
|
||||
{
|
||||
return JURI::root().'plugins/content/codecitation/';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<install version="1.5" type="plugin" group="content">
|
||||
<name>Content - CodeCitation</name>
|
||||
<author>Konstantin Nizhegorodov ([email protected])</author>
|
||||
<creationDate>August 22, 2009</creationDate>
|
||||
<copyright>Copyright 2009 Konstantin Nizhegorodov. All rights reserved.</copyright>
|
||||
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
|
||||
<authorUrl>http://www.smartsoftwarebits.com</authorUrl>
|
||||
<version>1.3.1</version>
|
||||
<description>The CodeCitation plugin allows you to include code sections in your Joomla 1.5 content using {codecitation} or custom tag.
|
||||
Use of the {codecitation} tag allows you to work with code sections in your Joomla WYSIWIG editors.
|
||||
Plugin uses SyntaxHighlighter 2.0 library from http://alexgorbatchev.com/wiki/SyntaxHighlighter
|
||||
Supports: syntax highlighting for ActionScript3, Bash/shell, C#, C++, CSS, Delphi, Diff, Groovy, JavaScript, Java, JavaFX, Perl, PHP, Plain Text, PowerShell, Python, Ruby, Scala, SQL, Visual Basic, XML, HTML, XSLT
|
||||
Usage example: {codecitation style="brush: xml;"}CODE HERE{/codecitation}
|
||||
</description>
|
||||
<files>
|
||||
<filename plugin="CodeCitation">CodeCitation.php</filename>
|
||||
<filename>CodeCitationREADME.txt</filename>
|
||||
<filename>codecitation/scripts/clipboard.swf</filename>
|
||||
<filename>codecitation/scripts/shBrushAS3.js</filename>
|
||||
<filename>codecitation/scripts/shBrushBash.js</filename>
|
||||
<filename>codecitation/scripts/shBrushCpp.js</filename>
|
||||
<filename>codecitation/scripts/shBrushCSharp.js</filename>
|
||||
<filename>codecitation/scripts/shBrushCss.js</filename>
|
||||
<filename>codecitation/scripts/shBrushDelphi.js</filename>
|
||||
<filename>codecitation/scripts/shBrushDiff.js</filename>
|
||||
<filename>codecitation/scripts/shBrushGroovy.js</filename>
|
||||
<filename>codecitation/scripts/shBrushJava.js</filename>
|
||||
<filename>codecitation/scripts/shBrushJavaFX.js</filename>
|
||||
<filename>codecitation/scripts/shBrushJScript.js</filename>
|
||||
<filename>codecitation/scripts/shBrushPerl.js</filename>
|
||||
<filename>codecitation/scripts/shBrushPhp.js</filename>
|
||||
<filename>codecitation/scripts/shBrushPlain.js</filename>
|
||||
<filename>codecitation/scripts/shBrushPowerShell.js</filename>
|
||||
<filename>codecitation/scripts/shBrushPython.js</filename>
|
||||
<filename>codecitation/scripts/shBrushRuby.js</filename>
|
||||
<filename>codecitation/scripts/shBrushScala.js</filename>
|
||||
<filename>codecitation/scripts/shBrushSql.js</filename>
|
||||
<filename>codecitation/scripts/shBrushVb.js</filename>
|
||||
<filename>codecitation/scripts/shBrushXml.js</filename>
|
||||
<filename>codecitation/scripts/shCore.js</filename>
|
||||
<filename>codecitation/scripts/shLegacy.js</filename>
|
||||
<filename>codecitation/styles/help.png</filename>
|
||||
<filename>codecitation/styles/magnifier.png</filename>
|
||||
<filename>codecitation/styles/page_white_code.png</filename>
|
||||
<filename>codecitation/styles/page_white_copy.png</filename>
|
||||
<filename>codecitation/styles/printer.png</filename>
|
||||
<filename>codecitation/styles/shCore.css</filename>
|
||||
<filename>codecitation/styles/shThemeDefault.css</filename>
|
||||
<filename>codecitation/styles/shThemeDjango.css</filename>
|
||||
<filename>codecitation/styles/shThemeEmacs.css</filename>
|
||||
<filename>codecitation/styles/shThemeFadeToGrey.css</filename>
|
||||
<filename>codecitation/styles/shThemeMidnight.css</filename>
|
||||
<filename>codecitation/styles/shThemeRDark.css</filename>
|
||||
<filename>codecitation/styles/wrapping.png</filename>
|
||||
</files>
|
||||
<languages>
|
||||
<language tag="en-GB">en-GB.plg_content_CodeCitation.ini</language>
|
||||
</languages>
|
||||
<params>
|
||||
<param name="theme" type="list" default="shThemeDefault.css" label="Color theme" description="Select color theme you preffer for the plugin">
|
||||
<option value="shThemeDefault.css">Default</option>
|
||||
<option value="shThemeDjango.css">Django</option>
|
||||
<option value="shThemeEmacs.css">Emacs</option>
|
||||
<option value="shThemeFadeToGrey.css">FadeToGrey</option>
|
||||
<option value="shThemeMidnight.css">Midnight</option>
|
||||
<option value="shThemeRDark.css">RDark</option>
|
||||
</param>
|
||||
<param name="alternativetag" type="text" default="" label="Alternative tag to trigger the plugin usage." description="If you think that {codecitation} is too long and preffer shorter syntax, feel free to specify your own tag. For example: code" />
|
||||
<param type="spacer" default="<b>Default engine parameters values:</b>" />
|
||||
<param name="defaultlang" type="list" default="text" label="Default language to cite" description="If you cite mostly code writen on particular language, you are able to specify it here and ommit brush name in codecitation tag usage (shorten syntax).">
|
||||
<option value="as3">actionscripts3</option>
|
||||
<option value="bash">bash</option>
|
||||
<option value="cpp">cpp</option>
|
||||
<option value="csharp">csharp</option>
|
||||
<option value="css">css</option>
|
||||
<option value="diff">diff</option>
|
||||
<option value="groovy">groovy</option>
|
||||
<option value="java">java</option>
|
||||
<option value="javafx">javafx</option>
|
||||
<option value="javascript">javascript</option>
|
||||
<option value="pascal">pascal</option>
|
||||
<option value="perl">perl</option>
|
||||
<option value="php">php</option>
|
||||
<option value="powershell">powershell</option>
|
||||
<option value="python">python</option>
|
||||
<option value="ruby">ruby</option>
|
||||
<option value="scala">scala</option>
|
||||
<option value="sql">sql</option>
|
||||
<option value="vb">vb</option>
|
||||
<option value="xml">xml</option>
|
||||
<option value="text">plain text</option>
|
||||
</param>
|
||||
<param name="auto-links" type="list" default="1" label="Auto-links" description="Allows you to turn detection of links in the codecitation block on and off. If the option is turned off, URLs won't be clickable.">
|
||||
<option value="0">"false"</option>
|
||||
<option value="1">"true"</option>
|
||||
</param>
|
||||
<param name="collapse" type="list" default="0" label="Collapse" description="Allows you to force citation block on the page to be collapsed by default.">
|
||||
<option value="0">"false"</option>
|
||||
<option value="1">"true"</option>
|
||||
</param>
|
||||
<param name="gutter" type="list" default="1" label="Gutter" description="Allows you to turn gutter with line numbers on and off by default.">
|
||||
<option value="0">"false"</option>
|
||||
<option value="1">"true"</option>
|
||||
</param>
|
||||
<param name="smart-tabs" type="list" default="1" label="Smart tabs" description="Allows you to turn smart tabs feature on and off by default.">
|
||||
<option value="0">"false"</option>
|
||||
<option value="1">"true"</option>
|
||||
</param>
|
||||
<param name="tab-size" type="text" default="4" label="Tab size" decription="Allows you to adjust default tab size." />
|
||||
<param name="toolbar" type="list" default="1" label="Toolbar" description="Toggles toolbar on/off by default.">
|
||||
<option value="0">"false"</option>
|
||||
<option value="1">"true"</option>
|
||||
</param>
|
||||
<param name="wrap-lines" type="list" default="1" label="Wrap lines" description="Allows you to turn line wrapping feature on and off by default.">
|
||||
<option value="0">"false"</option>
|
||||
<option value="1">"true"</option>
|
||||
</param>
|
||||
</params>
|
||||
</install>
|
||||
@@ -0,0 +1,64 @@
|
||||
codecitationREADME.txt
|
||||
|
||||
The CodeCitation plugin allows you to include code sections in your Joomla 1.5 content using {codecitation} or custom tag.
|
||||
Use of the {codecitation} tag allows you to work with code sections in your Joomla WYSIWIG editors.
|
||||
|
||||
Plugin uses SyntaxHighlighter 2.0 library from http://alexgorbatchev.com/wiki/SyntaxHighlighter
|
||||
|
||||
Supports: syntax highlighting for ActionScript3, Bash/shell, C#, C++, CSS, Delphi, Diff, Groovy, JavaScript, Java, JavaFX, Perl, PHP, Plain Text, PowerShell, Python, Ruby, Scala, SQL, Visual Basic, XML, HTML, XSLT
|
||||
|
||||
INSTALLATION INSTRUCTIONS:
|
||||
====================
|
||||
|
||||
- download the codecitation plugin.
|
||||
- install the plugin using the Joomla Extensions install utility.
|
||||
- ENABLE the new CodeCitation plugin with the Joomla 1.5 backend plugin manager.
|
||||
- Set default parameters for the plugin engine.
|
||||
|
||||
USING THE PLUGIN:
|
||||
The syntax for the usage is:
|
||||
|
||||
{codecitation [class="<parameters for SyntaxHighligh engine>"] [width="<>"]}
|
||||
<text to be formatted goes here>
|
||||
{/codecitation}
|
||||
|
||||
where:
|
||||
<parameters for SyntaxHighligh engine> is a parameter string for the engine - see http://www.smartsoftwarebits.com/index.php/codecitation/69-supported-brushes-and-parameters
|
||||
<width> is an optional parameter to specify <div> width (fix code in some cases into your template)
|
||||
For more information about SintaxHighlighter engine parameters please visit http://www.smartsoftwarebits.com/index.php/codecitation
|
||||
|
||||
EXAMPLES
|
||||
{codecitation class="brush: xml; gutter: false;" width="500px"}
|
||||
xlm goes here
|
||||
{/codecitation}
|
||||
|
||||
OR (if you set default language to C++, for example):
|
||||
|
||||
{codecitation}
|
||||
C++ code goes here
|
||||
{/codecitation}
|
||||
|
||||
OR if you set custom tag=code in plugin parameters and default language=C++:
|
||||
{code}
|
||||
C++ code goes here
|
||||
{/code}
|
||||
|
||||
VERSION 1.0
|
||||
========
|
||||
- initial release
|
||||
|
||||
VERSION 1.1.0
|
||||
========
|
||||
- PHP 5.2.3 callback syntax workaround
|
||||
|
||||
VERSION 1.2.0
|
||||
========
|
||||
- Core engine updated to version 2.0.320 of SyntaxHighlighter
|
||||
|
||||
VERSION 1.3.1
|
||||
========
|
||||
- Page load speed improved and page size redused. Only necessary scripts are loaded.
|
||||
- Custom tag support implemented. Plugin supports custom plugin invocation tag in case "codecitation" seems to long for somebody (i use "code" tag time to time).
|
||||
- Default language parameter implemented and can be set on the plugin's parameters page. It allows simplified plugin invocation systax.
|
||||
- Default engine parameters values can be set on the plugin's parameters page.
|
||||
- Themes are changeble on plugin paameters page.
|
||||
Binary file not shown.
@@ -0,0 +1,61 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.AS3 = function()
|
||||
{
|
||||
// Created by Peter Atoria @ http://iAtoria.com
|
||||
|
||||
var inits = 'class interface function package';
|
||||
|
||||
var keywords = '-Infinity ...rest Array as AS3 Boolean break case catch const continue Date decodeURI ' +
|
||||
'decodeURIComponent default delete do dynamic each else encodeURI encodeURIComponent escape ' +
|
||||
'extends false final finally flash_proxy for get if implements import in include Infinity ' +
|
||||
'instanceof int internal is isFinite isNaN isXMLName label namespace NaN native new null ' +
|
||||
'Null Number Object object_proxy override parseFloat parseInt private protected public ' +
|
||||
'return set static String super switch this throw true try typeof uint undefined unescape ' +
|
||||
'use void while with'
|
||||
;
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
|
||||
{ regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers
|
||||
{ regex: new RegExp(this.getKeywords(inits), 'gm'), css: 'color3' }, // initializations
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
|
||||
{ regex: new RegExp('var', 'gm'), css: 'variable' }, // variable
|
||||
{ regex: new RegExp('trace', 'gm'), css: 'color1' } // trace
|
||||
];
|
||||
|
||||
this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.AS3.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.AS3.aliases = ['actionscript3', 'as3'];
|
||||
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Bash = function()
|
||||
{
|
||||
var keywords = 'if fi then elif else for do done until while break continue case function return in eq ne gt lt ge le';
|
||||
var commands = 'alias apropos awk basename bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot' +
|
||||
'cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df ' +
|
||||
'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' +
|
||||
'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' +
|
||||
'free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig ' +
|
||||
'import install join kill less let ln local locate logname logout look lpc lpr lprint ' +
|
||||
'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' +
|
||||
'mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap ' +
|
||||
'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' +
|
||||
'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' +
|
||||
'sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time ' +
|
||||
'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' +
|
||||
'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' +
|
||||
'vi watch wc whereis which who whoami Wget xargs yes'
|
||||
;
|
||||
|
||||
this.findMatches = function(regexList, code)
|
||||
{
|
||||
code = code.replace(/>/g, '>').replace(/</g, '<');
|
||||
this.code = code;
|
||||
return SyntaxHighlighter.Highlighter.prototype.findMatches.apply(this, [regexList, code]);
|
||||
};
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
|
||||
{ regex: new RegExp(this.getKeywords(commands), 'gm'), css: 'functions' } // commands
|
||||
];
|
||||
}
|
||||
|
||||
SyntaxHighlighter.brushes.Bash.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Bash.aliases = ['bash', 'shell'];
|
||||
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.CSharp = function()
|
||||
{
|
||||
var keywords = 'abstract as base bool break byte case catch char checked class const ' +
|
||||
'continue decimal default delegate do double else enum event explicit ' +
|
||||
'extern false finally fixed float for foreach get goto if implicit in int ' +
|
||||
'interface internal is lock long namespace new null object operator out ' +
|
||||
'override params private protected public readonly ref return sbyte sealed set ' +
|
||||
'short sizeof stackalloc static string struct switch this throw true try ' +
|
||||
'typeof uint ulong unchecked unsafe ushort using virtual void while';
|
||||
|
||||
function fixComments(match, regexInfo)
|
||||
{
|
||||
var css = (match[0].indexOf("///") == 0)
|
||||
? 'color1'
|
||||
: 'comments'
|
||||
;
|
||||
|
||||
return [new SyntaxHighlighter.Match(match[0], match.index, css)];
|
||||
}
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, func : fixComments }, // one line comments
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
|
||||
{ regex: /@"(?:[^"]|"")*"/g, css: 'string' }, // @-quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
|
||||
{ regex: /^\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // c# keyword
|
||||
{ regex: /\bpartial(?=\s+(?:class|interface|struct)\b)/g, css: 'keyword' }, // contextual keyword: 'partial'
|
||||
{ regex: /\byield(?=\s+(?:return|break)\b)/g, css: 'keyword' } // contextual keyword: 'yield'
|
||||
];
|
||||
|
||||
this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.CSharp.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.CSharp.aliases = ['c#', 'c-sharp', 'csharp'];
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.ColdFusion = function()
|
||||
{
|
||||
// Contributed by Jen
|
||||
// http://www.jensbits.com/2009/05/14/coldfusion-brush-for-syntaxhighlighter-plus
|
||||
|
||||
var funcs = 'Abs ACos AddSOAPRequestHeader AddSOAPResponseHeader AjaxLink AjaxOnLoad ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ' +
|
||||
'ArrayInsertAt ArrayIsDefined ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArraySet ArraySort ArraySum ArraySwap ArrayToList ' +
|
||||
'Asc ASin Atn BinaryDecode BinaryEncode BitAnd BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN BitSHRN BitXor ' +
|
||||
'Ceiling CharsetDecode CharsetEncode Chr CJustify Compare CompareNoCase Cos CreateDate CreateDateTime CreateObject ' +
|
||||
'CreateODBCDate CreateODBCDateTime CreateODBCTime CreateTime CreateTimeSpan CreateUUID DateAdd DateCompare DateConvert ' +
|
||||
'DateDiff DateFormat DatePart Day DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear DE DecimalFormat DecrementValue ' +
|
||||
'Decrypt DecryptBinary DeleteClientVariable DeserializeJSON DirectoryExists DollarFormat DotNetToCFType Duplicate Encrypt ' +
|
||||
'EncryptBinary Evaluate Exp ExpandPath FileClose FileCopy FileDelete FileExists FileIsEOF FileMove FileOpen FileRead ' +
|
||||
'FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute FileSetLastModified FileWrite Find FindNoCase FindOneOf ' +
|
||||
'FirstDayOfMonth Fix FormatBaseN GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList GetBaseTemplatePath ' +
|
||||
'GetClientVariablesList GetComponentMetaData GetContextRoot GetCurrentTemplatePath GetDirectoryFromPath GetEncoding ' +
|
||||
'GetException GetFileFromPath GetFileInfo GetFunctionList GetGatewayHelper GetHttpRequestData GetHttpTimeString ' +
|
||||
'GetK2ServerDocCount GetK2ServerDocCountLimit GetLocale GetLocaleDisplayName GetLocalHostIP GetMetaData GetMetricData ' +
|
||||
'GetPageContext GetPrinterInfo GetProfileSections GetProfileString GetReadableImageFormats GetSOAPRequest GetSOAPRequestHeader ' +
|
||||
'GetSOAPResponse GetSOAPResponseHeader GetTempDirectory GetTempFile GetTemplatePath GetTickCount GetTimeZoneInfo GetToken ' +
|
||||
'GetUserRoles GetWriteableImageFormats Hash Hour HTMLCodeFormat HTMLEditFormat IIf ImageAddBorder ImageBlur ImageClearRect ' +
|
||||
'ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect ImageDrawCubicCurve ImageDrawLine ImageDrawLines ImageDrawOval ' +
|
||||
'ImageDrawPoint ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob ImageGetBufferedImage ' +
|
||||
'ImageGetEXIFTag ImageGetHeight ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay ImagePaste ' +
|
||||
'ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit ImageSetAntialiasing ImageSetBackgroundColor ' +
|
||||
'ImageSetDrawingColor ImageSetDrawingStroke ImageSetDrawingTransparency ImageSharpen ImageShear ImageShearDrawingAxis ImageTranslate ' +
|
||||
'ImageTranslateDrawingAxis ImageWrite ImageWriteBase64 ImageXORDrawingMode IncrementValue InputBaseN Insert Int IsArray IsBinary ' +
|
||||
'IsBoolean IsCustomFunction IsDate IsDDX IsDebugMode IsDefined IsImage IsImageFile IsInstanceOf IsJSON IsLeapYear IsLocalHost ' +
|
||||
'IsNumeric IsNumericDate IsObject IsPDFFile IsPDFObject IsQuery IsSimpleValue IsSOAPRequest IsStruct IsUserInAnyRole IsUserInRole ' +
|
||||
'IsUserLoggedIn IsValid IsWDDX IsXML IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot JavaCast JSStringFormat LCase Left Len ' +
|
||||
'ListAppend ListChangeDelims ListContains ListContainsNoCase ListDeleteAt ListFind ListFindNoCase ListFirst ListGetAt ListInsertAt ' +
|
||||
'ListLast ListLen ListPrepend ListQualify ListRest ListSetAt ListSort ListToArray ListValueCount ListValueCountNoCase LJustify Log ' +
|
||||
'Log10 LSCurrencyFormat LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime ' +
|
||||
'LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Max Mid Min Minute Month MonthAsString Now NumberFormat ParagraphFormat ParseDateTime ' +
|
||||
'Pi PrecisionEvaluate PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow QueryConvertForGrid QueryNew QuerySetCell QuotedValueList Rand ' +
|
||||
'Randomize RandRange REFind REFindNoCase ReleaseComObject REMatch REMatchNoCase RemoveChars RepeatString Replace ReplaceList ReplaceNoCase ' +
|
||||
'REReplace REReplaceNoCase Reverse Right RJustify Round RTrim Second SendGatewayMessage SerializeJSON SetEncoding SetLocale SetProfileString ' +
|
||||
'SetVariable Sgn Sin Sleep SpanExcluding SpanIncluding Sqr StripCR StructAppend StructClear StructCopy StructCount StructDelete StructFind ' +
|
||||
'StructFindKey StructFindValue StructGet StructInsert StructIsEmpty StructKeyArray StructKeyExists StructKeyList StructKeyList StructNew ' +
|
||||
'StructSort StructUpdate Tan TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase URLDecode URLEncodedFormat URLSessionFormat Val ' +
|
||||
'ValueList VerifyClient Week Wrap Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform ' +
|
||||
'XmlValidate Year YesNoFormat';
|
||||
|
||||
var keywords = 'cfabort cfajaximport cfajaxproxy cfapplet cfapplication cfargument cfassociate cfbreak cfcache cfcalendar ' +
|
||||
'cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection cfcomponent cfcontent cfcookie cfdbinfo ' +
|
||||
'cfdefaultcase cfdirectory cfdiv cfdocument cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror ' +
|
||||
'cfexchangecalendar cfexchangeconnection cfexchangecontact cfexchangefilter cfexchangemail cfexchangetask ' +
|
||||
'cfexecute cfexit cffeed cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid cfgridcolumn ' +
|
||||
'cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif cfimage cfimport cfinclude cfindex ' +
|
||||
'cfinput cfinsert cfinterface cfinvoke cfinvokeargument cflayout cflayoutarea cfldap cflocation cflock cflog ' +
|
||||
'cflogin cfloginuser cflogout cfloop cfmail cfmailparam cfmailpart cfmenu cfmenuitem cfmodule cfNTauthenticate ' +
|
||||
'cfobject cfobjectcache cfoutput cfparam cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod cfpop ' +
|
||||
'cfpresentation cfpresentationslide cfpresenter cfprint cfprocessingdirective cfprocparam cfprocresult ' +
|
||||
'cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow cfreturn cfsavecontent cfschedule ' +
|
||||
'cfscript cfsearch cfselect cfset cfsetting cfsilent cfslider cfsprydataset cfstoredproc cfswitch cftable ' +
|
||||
'cftextarea cfthread cfthrow cftimer cftooltip cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx ' +
|
||||
'cfwindow cfxml cfzip cfzipparam';
|
||||
|
||||
var operators = 'all and any between cross in join like not null or outer some';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: new RegExp('--(.*)$', 'gm'), css: 'comments' }, // one line and multiline comments
|
||||
{ regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // single quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
|
||||
{ regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // functions
|
||||
{ regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
|
||||
];
|
||||
}
|
||||
|
||||
SyntaxHighlighter.brushes.ColdFusion.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.ColdFusion.aliases = ['coldfusion','cf'];
|
||||
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Cpp = function()
|
||||
{
|
||||
// Copyright 2006 Shin, YoungJin
|
||||
|
||||
var datatypes = 'ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' +
|
||||
'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' +
|
||||
'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' +
|
||||
'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' +
|
||||
'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' +
|
||||
'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' +
|
||||
'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' +
|
||||
'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' +
|
||||
'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' +
|
||||
'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' +
|
||||
'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' +
|
||||
'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' +
|
||||
'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' +
|
||||
'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' +
|
||||
'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' +
|
||||
'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM ' +
|
||||
'char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' +
|
||||
'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' +
|
||||
'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' +
|
||||
'__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' +
|
||||
'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' +
|
||||
'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' +
|
||||
'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' +
|
||||
'va_list wchar_t wctrans_t wctype_t wint_t signed';
|
||||
|
||||
var keywords = 'break case catch class const __finally __exception __try ' +
|
||||
'const_cast continue private public protected __declspec ' +
|
||||
'default delete deprecated dllexport dllimport do dynamic_cast ' +
|
||||
'else enum explicit extern if for friend goto inline ' +
|
||||
'mutable naked namespace new noinline noreturn nothrow ' +
|
||||
'register reinterpret_cast return selectany ' +
|
||||
'sizeof static static_cast struct switch template this ' +
|
||||
'thread throw true false try typedef typeid typename union ' +
|
||||
'using uuid virtual void volatile whcar_t while';
|
||||
|
||||
var functions = 'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' +
|
||||
'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' +
|
||||
'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' +
|
||||
'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' +
|
||||
'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' +
|
||||
'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' +
|
||||
'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' +
|
||||
'fwrite getc getchar gets perror printf putc putchar puts remove ' +
|
||||
'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' +
|
||||
'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' +
|
||||
'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' +
|
||||
'mbtowc qsort rand realloc srand strtod strtol strtoul system ' +
|
||||
'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' +
|
||||
'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' +
|
||||
'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' +
|
||||
'clock ctime difftime gmtime localtime mktime strftime time';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
|
||||
{ regex: /^ *#.*/gm, css: 'preprocessor' },
|
||||
{ regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'color1 bold' },
|
||||
{ regex: new RegExp(this.getKeywords(functions), 'gm'), css: 'functions bold' },
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword bold' }
|
||||
];
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.Cpp.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Cpp.aliases = ['cpp', 'c'];
|
||||
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.CSS = function()
|
||||
{
|
||||
function getKeywordsCSS(str)
|
||||
{
|
||||
return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
|
||||
};
|
||||
|
||||
function getValuesCSS(str)
|
||||
{
|
||||
return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
|
||||
};
|
||||
|
||||
var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' +
|
||||
'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
|
||||
'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
|
||||
'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
|
||||
'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
|
||||
'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
|
||||
'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
|
||||
'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
|
||||
'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
|
||||
'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
|
||||
'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
|
||||
'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
|
||||
'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
|
||||
'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
|
||||
|
||||
var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
|
||||
'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
|
||||
'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+
|
||||
'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
|
||||
'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
|
||||
'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
|
||||
'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
|
||||
'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
|
||||
'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
|
||||
'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
|
||||
'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
|
||||
'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
|
||||
'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
|
||||
'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
|
||||
|
||||
var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
|
||||
{ regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors
|
||||
{ regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g, css: 'value' }, // sizes
|
||||
{ regex: /!important/g, css: 'color3' }, // !important
|
||||
{ regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords
|
||||
{ regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values
|
||||
{ regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts
|
||||
];
|
||||
|
||||
this.forHtmlScript({
|
||||
left: /(<|<)\s*style.*?(>|>)/gi,
|
||||
right: /(<|<)\/\s*style\s*(>|>)/gi
|
||||
});
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.CSS.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.CSS.aliases = ['css'];
|
||||
@@ -0,0 +1,57 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Delphi = function()
|
||||
{
|
||||
var keywords = 'abs addr and ansichar ansistring array as asm begin boolean byte cardinal ' +
|
||||
'case char class comp const constructor currency destructor div do double ' +
|
||||
'downto else end except exports extended false file finalization finally ' +
|
||||
'for function goto if implementation in inherited int64 initialization ' +
|
||||
'integer interface is label library longint longword mod nil not object ' +
|
||||
'of on or packed pansichar pansistring pchar pcurrency pdatetime pextended ' +
|
||||
'pint64 pointer private procedure program property pshortstring pstring ' +
|
||||
'pvariant pwidechar pwidestring protected public published raise real real48 ' +
|
||||
'record repeat set shl shortint shortstring shr single smallint string then ' +
|
||||
'threadvar to true try type unit until uses val var varirnt while widechar ' +
|
||||
'widestring with word write writeln xor';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: /\(\*[\s\S]*?\*\)/gm, css: 'comments' }, // multiline comments (* *)
|
||||
{ regex: /{(?!\$)[\s\S]*?}/gm, css: 'comments' }, // multiline comments { }
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
|
||||
{ regex: /\{\$[a-zA-Z]+ .+\}/g, css: 'color1' }, // compiler Directives and Region tags
|
||||
{ regex: /\b[\d\.]+\b/g, css: 'value' }, // numbers 12345
|
||||
{ regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // numbers $F5D3
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
|
||||
];
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.Delphi.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Delphi.aliases = ['delphi', 'pascal', 'pas'];
|
||||
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Diff = function()
|
||||
{
|
||||
this.regexList = [
|
||||
{ regex: /^\+\+\+.*$/gm, css: 'color2' },
|
||||
{ regex: /^\-\-\-.*$/gm, css: 'color2' },
|
||||
{ regex: /^\s.*$/gm, css: 'color1' },
|
||||
{ regex: /^@@.*@@$/gm, css: 'variable' },
|
||||
{ regex: /^\+[^\+]{1}.*$/gm, css: 'string' },
|
||||
{ regex: /^\-[^\-]{1}.*$/gm, css: 'comments' }
|
||||
];
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.Diff.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Diff.aliases = ['diff', 'patch'];
|
||||
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Erlang = function()
|
||||
{
|
||||
// Contributed by Jean-Lou Dupont
|
||||
// http://jldupont.blogspot.com/2009/06/erlang-syntax-highlighter.html
|
||||
|
||||
// According to: http://erlang.org/doc/reference_manual/introduction.html#1.5
|
||||
var keywords = 'after and andalso band begin bnot bor bsl bsr bxor '+
|
||||
'case catch cond div end fun if let not of or orelse '+
|
||||
'query receive rem try when xor'+
|
||||
// additional
|
||||
' module export import define';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: new RegExp("[A-Z][A-Za-z0-9_]+", 'g'), css: 'constants' },
|
||||
{ regex: new RegExp("\\%.+", 'gm'), css: 'comments' },
|
||||
{ regex: new RegExp("\\?[A-Za-z0-9_]+", 'g'), css: 'preprocessor' },
|
||||
{ regex: new RegExp("[a-z0-9_]+:[a-z0-9_]+", 'g'), css: 'functions' },
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
|
||||
];
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.Erlang.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Erlang.aliases = ['erl', 'erlang'];
|
||||
@@ -0,0 +1,69 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Groovy = function()
|
||||
{
|
||||
// Contributed by Andres Almiray
|
||||
// http://jroller.com/aalmiray/entry/nice_source_code_syntax_highlighter
|
||||
|
||||
var keywords = 'as assert break case catch class continue def default do else extends finally ' +
|
||||
'if in implements import instanceof interface new package property return switch ' +
|
||||
'throw throws try while public protected private static';
|
||||
var types = 'void boolean byte char short int long float double';
|
||||
var constants = 'null';
|
||||
var methods = 'allProperties count get size '+
|
||||
'collect each eachProperty eachPropertyName eachWithIndex find findAll ' +
|
||||
'findIndexOf grep inject max min reverseEach sort ' +
|
||||
'asImmutable asSynchronized flatten intersect join pop reverse subMap toList ' +
|
||||
'padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize ' +
|
||||
'eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText ' +
|
||||
'splitEachLine withReader append encodeBase64 decodeBase64 filterLine ' +
|
||||
'transformChar transformLine withOutputStream withPrintWriter withStream ' +
|
||||
'withStreams withWriter withWriterAppend write writeLine '+
|
||||
'dump inspect invokeMethod print println step times upto use waitForOrKill '+
|
||||
'getText';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
|
||||
{ regex: /""".*"""/g, css: 'string' }, // GStrings
|
||||
{ regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'value' }, // numbers
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // goovy keyword
|
||||
{ regex: new RegExp(this.getKeywords(types), 'gm'), css: 'color1' }, // goovy/java type
|
||||
{ regex: new RegExp(this.getKeywords(constants), 'gm'), css: 'constants' }, // constants
|
||||
{ regex: new RegExp(this.getKeywords(methods), 'gm'), css: 'functions' } // methods
|
||||
];
|
||||
|
||||
this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
|
||||
}
|
||||
|
||||
SyntaxHighlighter.brushes.Groovy.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Groovy.aliases = ['groovy'];
|
||||
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.JScript = function()
|
||||
{
|
||||
var keywords = 'break case catch continue ' +
|
||||
'default delete do else false ' +
|
||||
'for function if in instanceof ' +
|
||||
'new null return super switch ' +
|
||||
'this throw true try typeof var while with'
|
||||
;
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
|
||||
{ regex: /\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keywords
|
||||
];
|
||||
|
||||
this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.JScript.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.JScript.aliases = ['js', 'jscript', 'javascript'];
|
||||
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Java = function()
|
||||
{
|
||||
var keywords = 'abstract assert boolean break byte case catch char class const ' +
|
||||
'continue default do double else enum extends ' +
|
||||
'false final finally float for goto if implements import ' +
|
||||
'instanceof int interface long native new null ' +
|
||||
'package private protected public return ' +
|
||||
'short static strictfp super switch synchronized this throw throws true ' +
|
||||
'transient try void volatile while';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
|
||||
{ regex: /\/\*([^\*][\s\S]*)?\*\//gm, css: 'comments' }, // multiline comments
|
||||
{ regex: /\/\*(?!\*\/)\*[\s\S]*?\*\//gm, css: 'preprocessor' }, // documentation comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
|
||||
{ regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers
|
||||
{ regex: /(?!\@interface\b)\@[\$\w]+\b/g, css: 'color1' }, // annotation @anno
|
||||
{ regex: /\@interface\b/g, css: 'color2' }, // @interface keyword
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // java keyword
|
||||
];
|
||||
|
||||
this.forHtmlScript({
|
||||
left : /(<|<)%[@!=]?/g,
|
||||
right : /%(>|>)/g
|
||||
});
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.Java.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Java.aliases = ['java'];
|
||||
@@ -0,0 +1,60 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.JavaFX = function()
|
||||
{
|
||||
// Contributed by Patrick Webster
|
||||
// http://patrickwebster.blogspot.com/2009/04/javafx-brush-for-syntaxhighlighter.html
|
||||
var datatypes = 'Boolean Byte Character Double Duration '
|
||||
+ 'Float Integer Long Number Short String Void'
|
||||
;
|
||||
|
||||
var keywords = 'abstract after and as assert at before bind bound break catch class '
|
||||
+ 'continue def delete else exclusive extends false finally first for from '
|
||||
+ 'function if import in indexof init insert instanceof into inverse last '
|
||||
+ 'lazy mixin mod nativearray new not null on or override package postinit '
|
||||
+ 'protected public public-init public-read replace return reverse sizeof '
|
||||
+ 'step super then this throw true try tween typeof var where while with '
|
||||
+ 'attribute let private readonly static trigger'
|
||||
;
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' },
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' },
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
|
||||
{ regex: /(-?\.?)(\b(\d*\.?\d+|\d+\.?\d*)(e[+-]?\d+)?|0x[a-f\d]+)\b\.?/gi, css: 'color2' }, // numbers
|
||||
{ regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'variable' }, // datatypes
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
|
||||
];
|
||||
this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.JavaFX.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.JavaFX.aliases = ['jfx', 'javafx'];
|
||||
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Perl = function()
|
||||
{
|
||||
// Contributed by David Simmons-Duffin and Marty Kube
|
||||
|
||||
var funcs =
|
||||
'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' +
|
||||
'chroot close closedir connect cos crypt defined delete each endgrent ' +
|
||||
'endhostent endnetent endprotoent endpwent endservent eof exec exists ' +
|
||||
'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' +
|
||||
'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' +
|
||||
'getnetbyname getnetent getpeername getpgrp getppid getpriority ' +
|
||||
'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' +
|
||||
'getservbyname getservbyport getservent getsockname getsockopt glob ' +
|
||||
'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' +
|
||||
'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' +
|
||||
'oct open opendir ord pack pipe pop pos print printf prototype push ' +
|
||||
'quotemeta rand read readdir readline readlink readpipe recv rename ' +
|
||||
'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' +
|
||||
'semget semop send setgrent sethostent setnetent setpgrp setpriority ' +
|
||||
'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' +
|
||||
'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' +
|
||||
'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' +
|
||||
'system syswrite tell telldir time times tr truncate uc ucfirst umask ' +
|
||||
'undef unlink unpack unshift utime values vec wait waitpid warn write';
|
||||
|
||||
var keywords =
|
||||
'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' +
|
||||
'for foreach goto if import last local my next no our package redo ref ' +
|
||||
'require return sub tie tied unless untie until use wantarray while';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: new RegExp('#[^!].*$', 'gm'), css: 'comments' },
|
||||
{ regex: new RegExp('^\\s*#!.*$', 'gm'), css: 'preprocessor' }, // shebang
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
|
||||
{ regex: new RegExp('(\\$|@|%)\\w+', 'g'), css: 'variable' },
|
||||
{ regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' },
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
|
||||
];
|
||||
|
||||
this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
|
||||
}
|
||||
|
||||
SyntaxHighlighter.brushes.Perl.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Perl.aliases = ['perl', 'Perl', 'pl'];
|
||||
@@ -0,0 +1,91 @@
|
||||
/**
|
||||
* SyntaxHighlighter
|
||||
* http://alexgorbatchev.com/
|
||||
*
|
||||
* SyntaxHighlighter is donationware. If you are using it, please donate.
|
||||
* http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate
|
||||
*
|
||||
* @version
|
||||
* 2.1.364 (October 15 2009)
|
||||
*
|
||||
* @copyright
|
||||
* Copyright (C) 2004-2009 Alex Gorbatchev.
|
||||
*
|
||||
* @license
|
||||
* This file is part of SyntaxHighlighter.
|
||||
*
|
||||
* SyntaxHighlighter is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* SyntaxHighlighter is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with SyntaxHighlighter. If not, see <http://www.gnu.org/copyleft/lesser.html>.
|
||||
*/
|
||||
SyntaxHighlighter.brushes.Php = function()
|
||||
{
|
||||
var funcs = 'abs acos acosh addcslashes addslashes ' +
|
||||
'array_change_key_case array_chunk array_combine array_count_values array_diff '+
|
||||
'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
|
||||
'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
|
||||
'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
|
||||
'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
|
||||
'array_push array_rand array_reduce array_reverse array_search array_shift '+
|
||||
'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
|
||||
'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
|
||||
'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
|
||||
'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
|
||||
'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
|
||||
'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
|
||||
'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
|
||||
'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
|
||||
'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
|
||||
'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
|
||||
'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
|
||||
'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
|
||||
'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
|
||||
'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
|
||||
'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
|
||||
'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
|
||||
'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
|
||||
'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
|
||||
'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
|
||||
'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
|
||||
'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
|
||||
'parse_ini_file parse_str parse_url passthru pathinfo readlink realpath rewind rewinddir rmdir '+
|
||||
'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
|
||||
'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
|
||||
'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
|
||||
'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
|
||||
'strtoupper strtr strval substr substr_compare';
|
||||
|
||||
var keywords = 'and or xor array as break case ' +
|
||||
'cfunction class const continue declare default die do else ' +
|
||||
'elseif enddeclare endfor endforeach endif endswitch endwhile ' +
|
||||
'extends for foreach function include include_once global if ' +
|
||||
'new old_function return static switch use require require_once ' +
|
||||
'var while abstract interface public implements extends private protected throw';
|
||||
|
||||
var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
|
||||
|
||||
this.regexList = [
|
||||
{ regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
|
||||
{ regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
|
||||
{ regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
|
||||
{ regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
|
||||
{ regex: /\$\w+/g, css: 'variable' }, // variables
|
||||
{ regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // common functions
|
||||
{ regex: new RegExp(this.getKeywords(constants), 'gmi'), css: 'constants' }, // constants
|
||||
{ regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword
|
||||
];
|
||||
|
||||
this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
|
||||
};
|
||||
|
||||
SyntaxHighlighter.brushes.Php.prototype = new SyntaxHighlighter.Highlighter();
|
||||
SyntaxHighlighter.brushes.Php.aliases = ['php'];
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user