.htaccess editor: CodeMirror editor

This commit is contained in:
ruslanht 2013-03-07 16:35:56 +02:00
parent 28b62aa035
commit 367d38c549
6 changed files with 6080 additions and 20 deletions

View file

@ -0,0 +1,245 @@
/* BASICS */
.CodeMirror {
/* Set height, width, borders, and global font properties here */
font-family: monospace;
height: 300px;
}
.CodeMirror-scroll {
/* Set scrolling behaviour here */
overflow: auto;
}
/* PADDING */
.CodeMirror-lines {
padding: 4px 0; /* Vertical padding around content */
}
.CodeMirror pre {
padding: 0 4px; /* Horizontal padding of content */
}
.CodeMirror-scrollbar-filler {
background-color: white; /* The little square between H and V scrollbars */
}
/* GUTTER */
.CodeMirror-gutters {
border-right: 1px solid #ddd;
background-color: #f7f7f7;
}
.CodeMirror-linenumbers {}
.CodeMirror-linenumber {
padding: 0 3px 0 5px;
min-width: 20px;
text-align: right;
color: #999;
}
/* CURSOR */
.CodeMirror div.CodeMirror-cursor {
border-left: 1px solid black;
}
/* Shown when moving in bi-directional text */
.CodeMirror div.CodeMirror-secondarycursor {
border-left: 1px solid silver;
}
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor {
width: auto;
border: 0;
background: transparent;
background: rgba(0, 200, 0, .4);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#6600c800, endColorstr=#4c00c800);
}
/* Kludge to turn off filter in ie9+, which also accepts rgba */
.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor:not(#nonsense_id) {
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
}
/* Can style cursor different in overwrite (non-insert) mode */
.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {}
/* DEFAULT THEME */
.cm-s-default .cm-keyword {color: #708;}
.cm-s-default .cm-atom {color: #219;}
.cm-s-default .cm-number {color: #164;}
.cm-s-default .cm-def {color: #00f;}
.cm-s-default .cm-variable {color: black;}
.cm-s-default .cm-variable-2 {color: #05a;}
.cm-s-default .cm-variable-3 {color: #085;}
.cm-s-default .cm-property {color: black;}
.cm-s-default .cm-operator {color: black;}
.cm-s-default .cm-comment {color: #a50;}
.cm-s-default .cm-string {color: #a11;}
.cm-s-default .cm-string-2 {color: #f50;}
.cm-s-default .cm-meta {color: #555;}
.cm-s-default .cm-error {color: #f00;}
.cm-s-default .cm-qualifier {color: #555;}
.cm-s-default .cm-builtin {color: #30a;}
.cm-s-default .cm-bracket {color: #997;}
.cm-s-default .cm-tag {color: #170;}
.cm-s-default .cm-attribute {color: #00c;}
.cm-s-default .cm-header {color: blue;}
.cm-s-default .cm-quote {color: #090;}
.cm-s-default .cm-hr {color: #999;}
.cm-s-default .cm-link {color: #00c;}
.cm-negative {color: #d44;}
.cm-positive {color: #292;}
.cm-header, .cm-strong {font-weight: bold;}
.cm-em {font-style: italic;}
.cm-emstrong {font-style: italic; font-weight: bold;}
.cm-link {text-decoration: underline;}
.cm-invalidchar {color: #f00;}
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
/* STOP */
/* The rest of this file contains styles related to the mechanics of
the editor. You probably shouldn't touch them. */
.CodeMirror {
line-height: 1;
position: relative;
overflow: hidden;
}
.CodeMirror-scroll {
/* 30px is the magic margin used to hide the element's real scrollbars */
/* See overflow: hidden in .CodeMirror, and the paddings in .CodeMirror-sizer */
margin-bottom: -30px; margin-right: -30px;
padding-bottom: 30px; padding-right: 30px;
height: 100%;
outline: none; /* Prevent dragging from highlighting the element */
position: relative;
}
.CodeMirror-sizer {
position: relative;
}
/* The fake, visible scrollbars. Used to force redraw during scrolling
before actuall scrolling happens, thus preventing shaking and
flickering artifacts. */
.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler {
position: absolute;
z-index: 6;
display: none;
}
.CodeMirror-vscrollbar {
right: 0; top: 0;
overflow-x: hidden;
overflow-y: scroll;
}
.CodeMirror-hscrollbar {
bottom: 0; left: 0;
overflow-y: hidden;
overflow-x: scroll;
}
.CodeMirror-scrollbar-filler {
right: 0; bottom: 0;
z-index: 6;
}
.CodeMirror-gutters {
position: absolute; left: 0; top: 0;
height: 100%;
padding-bottom: 30px;
z-index: 3;
}
.CodeMirror-gutter {
height: 100%;
display: inline-block;
/* Hack to make IE7 behave */
*zoom:1;
*display:inline;
}
.CodeMirror-gutter-elt {
position: absolute;
cursor: default;
z-index: 4;
}
.CodeMirror-lines {
cursor: text;
}
.CodeMirror pre {
/* Reset some styles that the rest of the page might have set */
-moz-border-radius: 0; -webkit-border-radius: 0; -o-border-radius: 0; border-radius: 0;
border-width: 0;
background: transparent;
font-family: inherit;
font-size: inherit;
margin: 0;
white-space: pre;
word-wrap: normal;
line-height: inherit;
color: inherit;
z-index: 2;
position: relative;
overflow: visible;
}
.CodeMirror-wrap pre {
word-wrap: break-word;
white-space: pre-wrap;
word-break: normal;
}
.CodeMirror-linebackground {
position: absolute;
left: 0; right: 0; top: 0; bottom: 0;
z-index: 0;
}
.CodeMirror-linewidget {
position: relative;
z-index: 2;
overflow: auto;
}
.CodeMirror-widget {
display: inline-block;
}
.CodeMirror-wrap .CodeMirror-scroll {
overflow-x: hidden;
}
.CodeMirror-measure {
position: absolute;
width: 100%; height: 0px;
overflow: hidden;
visibility: hidden;
}
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor {
position: absolute;
visibility: hidden;
border-right: none;
width: 0;
}
.CodeMirror-focused div.CodeMirror-cursor {
visibility: visible;
}
.CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }
.cm-searching {
background: #ffa;
background: rgba(255, 255, 0, .4);
}
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
.CodeMirror span { *vertical-align: text-bottom; }
@media print {
/* Hide the cursor when printing */
.CodeMirror div.CodeMirror-cursor {
visibility: hidden;
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,124 @@
CodeMirror.defineMode('shell', function() {
var words = {};
function define(style, string) {
var split = string.split(' ');
for(var i = 0; i < split.length; i++) {
words[split[i]] = style;
}
};
// Atoms
define('atom', 'On Off yes no');
// Keywords
//define('keyword', 'Files Location');
// Commands
define('builtin', 'AddInputFilter AddLanguage AddModuleInfo AddOutputFilter AddOutputFilterbyType AddType Alias AliasMatch Allow AllowConnect AllowEncodedslashes AllowOverride Anonymous Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserid Anonymous_VerifyEmail AuthBasicAuthoritative AuthBasicProvider AuthDbdUserpwQuery AuthDbdUserRealmQuery AuthDbmGroupFile AuthDbmType AuthDbmUserFile AuthDefaultAuthoritative AuthDigestAlgorithm AuthDigestDomain AuthDigestProvider AuthGroupFile AuthName AuthType AuthUserFile AuthzDbmAuthoritative AuthzDbmType AuthzDefaultAuthoritative AuthzGroupFileAuthoritative AuthzOwnerAuthoritative AuthzUserAuthoritative BalancerMember BrowserMatch BrowserMatchnocase CacheDebugHeader CacheDefaultExpire CacheDirLength CacheDirLevels CacheDisable CacheEnable CacheFile CacheignoreCachecontrol CacheignoreHeaders CacheignoreNoLastMod CacheignoreQueryString CacheLastModifiedFactor CacheMaxExpire CacheMaxFileSize CacheMinFileSize CacheRoot CacheStoreNoStore CacheStorePrivate CacheVaryByHeaders CacheVaryByParams CheckCaseOnly CheckSpelling CheckBaseName CookieDomain CookieExpires CookieLog CookieName Cookiestyle Cookietracking CustomLog DbdKeep DbdMax DbdMin DbdParams DbdPersist DbdPrepareSql DbDriver Deny DirectoryIndex DirectoryMatch DirectorySlash DOSHashTableSize DOSWhiteList DOSPageCount DOSsiteCount DOSPageInterval DOSsiteInterval DOSBlockingPeriod DOSCloseSocket DOSSystemCommand ErrorDocument ErrorLog ExpiresActive ExpiresByType ExpiresDefault FilterChain FilterDeclare FilterProtocol FilterProvider FreeSites GracefulShutdownTimeout Group Header HeaderName HostNameLookups Include KeepAlive keepAliveTimeout Listen ListenBackLog LoadFile LoadModule LockFile LogFormat LogLevel MCacheMaxObjectCount MCacheMaxObjectSize MCacheMaxStreaMingBuffer MCacheMinObjectSize MCacheRemovalAlgorithm MCacheSize mod_gzip_on mod_gzip_add_header_count mod_gzip_compression_level mod_gzip_keep_workfiles mod_gzip_dechunk mod_gzip_min_http mod_gzip_minimum_file_size mod_gzip_maximum_file_size mod_gzip_maximum_inmem_size mod_gzip_temp_dir mod_gzip_item_include mod_gzip_item_exclude mod_gzip_command_version mod_gzip_can_negotiate mod_gzip_handle_methods mod_gzip_static_suffix mod_gzip_send_vary mod_gzip_update_static NameVirtualHost NoProxy Options Order PassEnv ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIoBufferSize ProxyMaxForwards ProxyPass ProxyPassinterpolateEnv ProxyPassMatch ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiepath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxySet ProxyStatus ProxyTimeout ProxyVia ReceiveBufferSize Redirect RedirectMatch Redirectpermanent Redirecttemp RegistrationName Registrationcode RemoveHandler RemoveInputFilter RemoveLanguage RemoveOutputFilter RemoveType ReplaceFilterDefine ReplacePattern RequestHeader Require RewriteBase RewriteCond RewriteEngine RewriteHeader RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule RewriteProxy Satisfy SendBufferSize ServerAdmin ServerAlias ServerLimit ServerName ServerPath ServerRoot ServerSignature ServerTokens SetEnv SetEnvif SetEnvifnocase SetHandler SetInputFilter SetOutputFilter SeoRule Substitute Timeout TraceEnable TransferLog TypesConfig UnsetEnv UseCanonicalName UseCanonicalPhysicalPort UserDir VirtualDocumentRoot VirtualDocumentRootip VirtualscriptAlias VirtualscriptAliasIp HotlinkInvolveIp HotlinkExpires HotlinkProtect HotlinkSignature HotlinkType HotlinkError HotlinkAllow HotlinkDeny LinkFreezeEngine LinkFreezePageSizeLimit LinkFreezeRule');
function tokenBase(stream, state) {
var sol = stream.sol();
var ch = stream.next();
if (ch === '\'' || ch === '"' || ch === '`') {
state.tokens.unshift(tokenString(ch));
return tokenize(stream, state);
}
if (ch === '#') {
if (sol && stream.eat('!')) {
stream.skipToEnd();
return 'meta'; // 'comment'?
}
stream.skipToEnd();
return 'comment';
}
if (ch === '$') {
state.tokens.unshift(tokenDollar);
return tokenize(stream, state);
}
if (ch === '+' || ch === '=') {
return 'operator';
}
if (ch === '<') {
stream.eat('/');
stream.eatWhile(/[^>]/);
return 'attribute';
}
if (ch === '>') {
return 'attribute';
}
/*
if (ch === '-') {
stream.eat('-');
stream.eatWhile(/\w/);
return 'attribute';
}
*/
if (/\d/.test(ch)) {
stream.eatWhile(/\d/);
if(!/\w/.test(stream.peek())) {
return 'number';
}
}
stream.eatWhile(/\w/);
var cur = stream.current();
if (stream.peek() === '=' && /\w+/.test(cur)) return 'def';
return words.hasOwnProperty(cur) ? words[cur] : null;
}
function tokenString(quote) {
return function(stream, state) {
var next, end = false, escaped = false;
while ((next = stream.next()) != null) {
if (next === quote && !escaped) {
end = true;
break;
}
if (next === '$' && !escaped && quote !== '\'') {
escaped = true;
stream.backUp(1);
state.tokens.unshift(tokenDollar);
break;
}
escaped = !escaped && next === '\\';
}
if (end || !escaped) {
state.tokens.shift();
}
return (quote === '`' || quote === ')' ? 'quote' : 'string');
};
};
var tokenDollar = function(stream, state) {
if (state.tokens.length > 1) stream.eat('$');
var ch = stream.next(), hungry = /\w/;
if (ch === '{') hungry = /[^}]/;
if (ch === '(') {
state.tokens[0] = tokenString(')');
return tokenize(stream, state);
}
if (!/\d/.test(ch)) {
stream.eatWhile(hungry);
stream.eat('}');
}
state.tokens.shift();
return 'def';
};
function tokenize(stream, state) {
return (state.tokens[0] || tokenBase) (stream, state);
};
return {
startState: function() {return {tokens:[]};},
token: function(stream, state) {
if (stream.eatSpace()) return null;
return tokenize(stream, state);
}
};
});
CodeMirror.defineMIME('text/x-sh', 'shell');

View file

@ -0,0 +1,234 @@
AddInputFilter
AddLanguage
AddModuleInfo
AddOutputFilter
AddOutputFilterbyType
AddType
Alias
AliasMatch
Allow
AllowConnect
AllowEncodedslashes
AllowOverride
Anonymous
Anonymous_LogEmail
Anonymous_MustGiveEmail
Anonymous_NoUserid
Anonymous_VerifyEmail
AuthBasicAuthoritative
AuthBasicProvider
AuthDbdUserpwQuery
AuthDbdUserRealmQuery
AuthDbmGroupFile
AuthDbmType
AuthDbmUserFile
AuthDefaultAuthoritative
AuthDigestAlgorithm
AuthDigestDomain
AuthDigestProvider
AuthGroupFile
AuthName
AuthType
AuthUserFile
AuthzDbmAuthoritative
AuthzDbmType
AuthzDefaultAuthoritative
AuthzGroupFileAuthoritative
AuthzOwnerAuthoritative
AuthzUserAuthoritative
BalancerMember
BrowserMatch
BrowserMatchnocase
CacheDebugHeader
CacheDefaultExpire
CacheDirLength
CacheDirLevels
CacheDisable
CacheEnable
CacheFile
CacheignoreCachecontrol
CacheignoreHeaders
CacheignoreNoLastMod
CacheignoreQueryString
CacheLastModifiedFactor
CacheMaxExpire
CacheMaxFileSize
CacheMinFileSize
CacheRoot
CacheStoreNoStore
CacheStorePrivate
CacheVaryByHeaders
CacheVaryByParams
CheckCaseOnly
CheckSpelling
CheckBaseName
CookieDomain
CookieExpires
CookieLog
CookieName
Cookiestyle
Cookietracking
CustomLog
DbdKeep
DbdMax
DbdMin
DbdParams
DbdPersist
DbdPrepareSql
DbDriver
Deny
DirectoryIndex
DirectoryMatch
DirectorySlash
DOSHashTableSize
DOSWhiteList
DOSPageCount
DOSsiteCount
DOSPageInterval
DOSsiteInterval
DOSBlockingPeriod
DOSCloseSocket
DOSSystemCommand
ErrorDocument
ErrorLog
ExpiresActive
ExpiresByType
ExpiresDefault
FilterChain
FilterDeclare
FilterProtocol
FilterProvider
FreeSites
GracefulShutdownTimeout
Group
Header
HeaderName
HostNameLookups
Include
KeepAlive
keepAliveTimeout
Listen
ListenBackLog
LoadFile
LoadModule
LockFile
LogFormat
LogLevel
MCacheMaxObjectCount
MCacheMaxObjectSize
MCacheMaxStreaMingBuffer
MCacheMinObjectSize
MCacheRemovalAlgorithm
MCacheSize
mod_gzip_on
mod_gzip_add_header_count
mod_gzip_compression_level
mod_gzip_keep_workfiles
mod_gzip_dechunk
mod_gzip_min_http
mod_gzip_minimum_file_size
mod_gzip_maximum_file_size
mod_gzip_maximum_inmem_size
mod_gzip_temp_dir
mod_gzip_item_include
mod_gzip_item_exclude
mod_gzip_command_version
mod_gzip_can_negotiate
mod_gzip_handle_methods
mod_gzip_static_suffix
mod_gzip_send_vary
mod_gzip_update_static
NameVirtualHost
NoProxy
Options
Order
PassEnv
ProxyBadHeader
ProxyBlock
ProxyDomain
ProxyErrorOverride
ProxyIoBufferSize
ProxyMaxForwards
ProxyPass
ProxyPassinterpolateEnv
ProxyPassMatch
ProxyPassReverse
ProxyPassReverseCookieDomain
ProxyPassReverseCookiepath
ProxyPreserveHost
ProxyReceiveBufferSize
ProxyRemote
ProxyRemoteMatch
ProxyRequests
ProxySet
ProxyStatus
ProxyTimeout
ProxyVia
ReceiveBufferSize
Redirect
RedirectMatch
Redirectpermanent
Redirecttemp
RegistrationName
Registrationcode
RemoveHandler
RemoveInputFilter
RemoveLanguage
RemoveOutputFilter
RemoveType
ReplaceFilterDefine
ReplacePattern
RequestHeader
Require
RewriteBase
RewriteCond
RewriteEngine
RewriteHeader
RewriteLock
RewriteLog
RewriteLogLevel
RewriteMap
RewriteOptions
RewriteRule
RewriteProxy
Satisfy
SendBufferSize
ServerAdmin
ServerAlias
ServerLimit
ServerName
ServerPath
ServerRoot
ServerSignature
ServerTokens
SetEnv
SetEnvif
SetEnvifnocase
SetHandler
SetInputFilter
SetOutputFilter
SeoRule
Substitute
Timeout
TraceEnable
TransferLog
TypesConfig
UnsetEnv
UseCanonicalName
UseCanonicalPhysicalPort
UserDir
VirtualDocumentRoot
VirtualDocumentRootip
VirtualscriptAlias
VirtualscriptAliasIp
HotlinkInvolveIp
HotlinkExpires
HotlinkProtect
HotlinkSignature
HotlinkType
HotlinkError
HotlinkAllow
HotlinkDeny
LinkFreezeEngine
LinkFreezePageSizeLimit
LinkFreezeRule

View file

@ -0,0 +1,52 @@
<!doctype html>
<html>
<style type="text/css">
.CodeMirror {
height: 800px !important;
font-family: Consolas !important;
font-size: 15px;
}
</style>
<body>
<textarea id='code'>
# Helicon Ape
# mod_rewrite rules
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [NC,L]
&lt;Location index.php&gt;
ExpiresByType "text/html; charset=UTF-8" A30
CacheEnable mem
CacheVaryByHeaders Original-Url
&lt;/Location&gt;
# expiration
ExpiresActive On
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/gif "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
# gzipping
mod_gzip_on yes
mod_gzip_item_include Mime ^text/.*
&lt;Files index.php&gt;
ExpiresByType "text/html; charset=UTF-8" A30
CacheEnable mem
CacheVaryByHeaders Original-Url
&lt;/Files&gt;
Header set Server "Apache/2.2.9 (Unix)"
</textarea>
</body>
<script src="codemirror.js"></script>
<link rel="stylesheet" href="codemirror.css">
<script src="htaccess.js"></script>
<script type="text/javascript">
var myCodeMirror = CodeMirror.fromTextArea(document.getElementById('code'));
</script>
</html>