@@ -3,8 +3,6 @@ INSTALL.txt | |||
Web Notes Framework Installation guide | |||
Web Notes Framework (WNF) is a meta-data driven web app framework. After install, you build | |||
and configure your application from the web browser. | |||
WNF requires the following applications | |||
@@ -30,23 +28,14 @@ WNF requires the following applications | |||
------------------------------------------------------------------------ | |||
2. Setup defs.py | |||
The framework picks up the database details from cgi-bin/webnotes/defs.py | |||
The framework picks up the database details from py/webnotes/defs.py | |||
You need to edit this file and set your database name and other options | |||
------------------------------------------------------------------------ | |||
3. Configuring Apache | |||
a. You must set Apache to execute index.cgi file, one way to do this is to add cgi handler | |||
and add ExecCGI in the options directive. | |||
b. You can also add couple of lines below to block Apache from rendering .py files | |||
RewriteEngine on | |||
RewriteRule \.py - [F] | |||
c. Add "index.cgi" to DirectoryIndex | |||
see conf/apache.conf | |||
------------------------------------------------------------------------ | |||
4. Login to application |
@@ -1 +0,0 @@ | |||
Web Notes Framework: A web application framework with client-side and server-side libraries including metadata definition, forms, virtual pages- Ideal for developing js driven database apps. |
@@ -0,0 +1,23 @@ | |||
## wnframework | |||
wnframework is a full-stack web application framework that uses python/mysql on the server side. includes a tightly integrated client side library and uses many html5 featuers. | |||
Projects: [erpnext](http://erpnext.org) | [webnotes/erpnext](https://github.com/webnotes/erpnext) | |||
## Version | |||
Version 2 is a radical reworking of the wnframework. This will be the current development version. For a stable version see -1.7 branches | |||
#### Roadmap for version 2 | |||
- lazy loading + localstorage of js libs (completed) | |||
- refactoring of js library | |||
- separation of the view from the model | |||
## Librarires | |||
wnframework uses a number of libraries in the open domain, see attribution.md (it may not be a complete list but we are working on it!) | |||
## License | |||
wnframework is freely available to use under the MIT License |
@@ -0,0 +1,25 @@ | |||
# Attribution | |||
Following libraries have been used in wnframework | |||
## Python | |||
- Jinja2 | |||
- Markdown2 | |||
- Jinja2 Markdown2 extenion | |||
- Redis (?) | |||
## Javascript | |||
- JSON2 | |||
- JQuery | |||
- JQPlot | |||
- [History](http://benalman.com/projects/jquery-hashchange-plugin/) | |||
- Suckerfish (menu) | |||
## CSS | |||
- Skeleton CSS: | |||
- [CSS3 Overlay](https://github.com/LearnBoost/CSS3-Overlay/) | |||
- [Buttons](http://www.red-team-design.com/just-another-awesome-css3-buttons) | |||
@@ -1,39 +0,0 @@ | |||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||
<!-- | |||
Copyright (c) 2007 Brian Dillard and Brad Neuberg: | |||
Brian Dillard | Project Lead | bdillard@pathf.com | http://blogs.pathf.com/agileajax/ | |||
Brad Neuberg | Original Project Creator | http://codinginparadise.org | |||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files | |||
(the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, | |||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do | |||
so, subject to the following conditions: | |||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | |||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE | |||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | |||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
--> | |||
<html xmlns="http://www.w3.org/1999/xhtml"> | |||
<head> | |||
<script language="JavaScript"> | |||
function pageLoaded() { | |||
window.parent.dhtmlHistory.iframeLoaded(window.location); | |||
document.getElementById("output").innerHTML = window.location; | |||
} | |||
</script> | |||
</head> | |||
<body onload="pageLoaded();" style="width:700px;padding:2px;margin:0;"> | |||
<p>blank.html - Needed for Internet Explorer's hidden iframe</p> | |||
<p id="output"></p> | |||
</body> | |||
</html> |
@@ -1,24 +0,0 @@ | |||
import os | |||
# go to current directory | |||
os.chdir(__file__[:-12]) | |||
import webnotes.utils.backups | |||
webnotes.utils.backups.backup_all() | |||
# send the daily backup to the pair server | |||
import webnotes.defs | |||
if hasattr(webnotes.defs,'ps_host'): | |||
import ftplib, time | |||
ftp = ftplib.FTP(webnotes.defs.ps_host, webnotes.defs.ps_login, webnotes.defs.ps_pwd) | |||
ftp.cwd('pair_backups') | |||
fname = 'daily-' + time.strftime('%Y-%m-%d') + '.tar.gz' | |||
f = open('/backups/daily/' + fname, 'rb') | |||
ftp.storbinary('STOR ' + webnotes.defs.server_prefix + '-' + fname, f) | |||
ftp.quit() | |||
# delete from local pair directory | |||
if hasattr(webnotes.defs, 'pair_dir') and len(os.listdir(webnotes.defs.pair_dir)) > 3: | |||
delete_oldest_file(webnotes.defs.pair_dir) |
@@ -1,73 +0,0 @@ | |||
class wnJSCompiler: | |||
@staticmethod | |||
def concate_files_in_dir(path,dest): | |||
""" | |||
Concatenates all files in a directory | |||
""" | |||
import os | |||
allfiles = [] | |||
dirname = path | |||
l = os.listdir(path) | |||
for i in l: | |||
if os.path.isfile(os.path.join(dirname,i)): | |||
allfiles.append(os.path.join(dirname,i)) | |||
fout = open(dest,'w') | |||
for filename in allfiles: | |||
f = open(filename) | |||
fout.write(f.read()) | |||
f.close | |||
fout.close | |||
@staticmethod | |||
def getsubs(path): | |||
""" | |||
gets all the sub directories of a directory (recursive) | |||
""" | |||
import os | |||
subs = [] | |||
for root, subd, files in os.walk(path): | |||
for i in subd: | |||
subs.append(os.path.join(root,i)) | |||
return subs | |||
@staticmethod | |||
def compilejs(path): | |||
""" | |||
Compiles the js tree for ondemand import | |||
""" | |||
if not wnJSCompiler.is_changed(path): | |||
return | |||
import os | |||
import webnotes.utils.jsnamespace as jsn | |||
subs = wnJSCompiler.getsubs(path) | |||
for subdir in subs: | |||
modname = jsn.jsNamespace.getmodname(subdir) | |||
wnJSCompiler.concate_files_in_dir(subdir,os.path.join(subdir, modname)) | |||
wnJSCompiler.minifyjs(os.path.join(subdir, modname)) | |||
@staticmethod | |||
def is_changed(path): | |||
#compare new timestamps with the ones stored in file | |||
from webnotes.utils import jstimestamp | |||
try: | |||
frm_file = jstimestamp.generateTimestamp.read_ts_from_file(path) | |||
newts = jstimestamp.generateTimestamp.gents(path) | |||
except IOError: | |||
return True | |||
if frm_file == newts: | |||
return False | |||
else: | |||
return True | |||
@staticmethod | |||
def minifyjs(modpath): | |||
""" | |||
Stub to minify js | |||
""" | |||
pass | |||
if __name__=="__main__": | |||
a = wnJSCompiler() | |||
print a.compilejs('../js/wn') |
@@ -1 +0,0 @@ | |||
{'update_date': '2011-03-18 18:12:06'} |
@@ -1,98 +0,0 @@ | |||
#!/usr/bin/python | |||
import cgi | |||
import datetime | |||
import os | |||
try: | |||
form = cgi.FieldStorage() | |||
out = '' | |||
out_buf, str_out = '', '' | |||
jsdir='../js' | |||
jsonout= {} | |||
# Traceback | |||
# --------- | |||
def getTraceback(): | |||
import sys, traceback, string | |||
type, value, tb = sys.exc_info() | |||
body = "Traceback (innermost last):\n" | |||
list = traceback.format_tb(tb, None) \ | |||
+ traceback.format_exception_only(type, value) | |||
body = body + "%-20s %s" % (string.join(list[:-1], ""), list[-1]) | |||
return body | |||
def load_js_from_file(module_name): | |||
global out | |||
global jsonout | |||
import webnotes.utils.jsnamespace as jsn | |||
filename = jsn.jsNamespace.modname_to_filename(module_name,jsdir) | |||
import os | |||
try: | |||
f = open(os.path.join(filename)) | |||
try: | |||
out = f.read() | |||
finally: | |||
f.close() | |||
except IOError,e: | |||
out = "Not Found: %s" % filename | |||
jsonout[module_name]=out | |||
def load_js_module(module_name): | |||
global jsonout | |||
from webnotes import defs | |||
devmode = getattr(defs,'developer_mode') | |||
if devmode: | |||
import compilejs | |||
compilejs.wnJSCompiler.compilejs(jsdir) | |||
if module_name not in jsonout: | |||
dependent_mods = get_dependencies(module_name) | |||
for module in dependent_mods: | |||
load_js_from_file(module) | |||
load_js_from_file(module_name) | |||
def get_dependencies(module_name): | |||
import webnotes.utils.jsdependency as jsd | |||
ret = jsd.jsDependencyBuilder.build_dependency(jsdir,module_name) | |||
return ret | |||
def compress_string(buf): | |||
import gzip, cStringIO | |||
zbuf = cStringIO.StringIO() | |||
zfile = gzip.GzipFile(mode = 'wb', fileobj = zbuf, compresslevel = 5) | |||
zfile.write(buf) | |||
zfile.close() | |||
return zbuf.getvalue() | |||
compress = 0 | |||
try: | |||
if string.find(os.environ["HTTP_ACCEPT_ENCODING"], "gzip") != -1: | |||
compress = 1 | |||
except: | |||
pass | |||
load_js_module(form.getvalue('module')) | |||
#load_js_module('wn.modules') | |||
if compress and len(out)>512: | |||
out_buf = compress_string(str_out) | |||
print "Content-Encoding: gzip" | |||
print "Content-Length: %d" % (len(out_buf)) | |||
print "Content-Type: text/javascript" | |||
# Headers end | |||
if out_buf: | |||
sys.stdout.write(out_buf) | |||
elif out: | |||
import json | |||
print json.dumps(jsonout) | |||
except Exception, e: | |||
print "Content-Type: text/javascript" | |||
print getTraceback()#.replace('\n','<br>') |
@@ -1,82 +0,0 @@ | |||
#!/usr/bin/python | |||
try: | |||
import sys, os | |||
sys.path.append(os.getcwd()+'/cgi-bin') | |||
def getTraceback(): | |||
import sys, traceback, string | |||
type, value, tb = sys.exc_info() | |||
body = "Traceback (innermost last):\n" | |||
list = traceback.format_tb(tb, None) \ | |||
+ traceback.format_exception_only(type, value) | |||
body = body + "%-20s %s" % (string.join(list[:-1], ""), list[-1]) | |||
return body | |||
import cgi | |||
import webnotes | |||
import webnotes.auth | |||
import webnotes.utils | |||
import webnotes.utils.file_manager | |||
import webnotes.db | |||
import webnotes.defs | |||
sys.path.append(webnotes.defs.modules_path) | |||
form = cgi.FieldStorage() | |||
webnotes.form_dict = {} | |||
for each in form.keys(): | |||
webnotes.form_dict[each] = form.getvalue(each) | |||
n = form.getvalue('name') | |||
# authenticate | |||
webnotes.auth.HTTPRequest() | |||
# get file | |||
res = webnotes.utils.file_manager.get_file(n) | |||
fname = res[0] | |||
if hasattr(res[1], 'tostring'): | |||
fcontent = res[1].tostring() | |||
else: | |||
fcontent = res[1] | |||
if form.getvalue('thumbnail'): | |||
tn = webnotes.utils.cint(form.getvalue('thumbnail')) | |||
try: | |||
from PIL import Image | |||
import cStringIO | |||
fobj = cStringIO.StringIO(fcontent) | |||
image = Image.open(fobj) | |||
image.thumbnail((tn,tn*2), Image.ANTIALIAS) | |||
outfile = cStringIO.StringIO() | |||
if image.mode != "RGB": | |||
image = image.convert("RGB") | |||
image.save(outfile, 'JPEG') | |||
outfile.seek(0) | |||
fcontent = outfile.read() | |||
except: | |||
pass | |||
import mimetypes | |||
print "Content-Type: %s" % (mimetypes.guess_type(fname)[0] or 'application/unknown') | |||
print "Content-Disposition: filename="+fname.replace(' ', '_') | |||
print "Cache-Control: max-age=3600" | |||
print fcontent | |||
except Exception, e: | |||
print "Content-Type: text/html" | |||
try: | |||
out = {'message':'', 'exc':getTraceback().replace('\n','<br>')} | |||
except: | |||
out = {'exc': e} | |||
print str(out) |
@@ -1,72 +0,0 @@ | |||
#!/usr/bin/python | |||
import cgi | |||
import datetime | |||
import os | |||
try: | |||
form = cgi.FieldStorage() | |||
out = '' | |||
out_buf, str_out = '', '' | |||
# Traceback | |||
# --------- | |||
def getTraceback(): | |||
import sys, traceback, string | |||
type, value, tb = sys.exc_info() | |||
body = "Traceback (innermost last):\n" | |||
list = traceback.format_tb(tb, None) \ | |||
+ traceback.format_exception_only(type, value) | |||
body = body + "%-20s %s" % (string.join(list[:-1], ""), list[-1]) | |||
return body | |||
def load_js_file(): | |||
global out | |||
filename = form.getvalue('filename') | |||
import os | |||
try: | |||
f = open(os.path.join('../js/', filename)) | |||
try: | |||
out = f.read() | |||
finally: | |||
f.close() | |||
except IOError,e: | |||
out = "Not Found: %s" % filename | |||
def compress_string(buf): | |||
import gzip, cStringIO | |||
zbuf = cStringIO.StringIO() | |||
zfile = gzip.GzipFile(mode = 'wb', fileobj = zbuf, compresslevel = 5) | |||
zfile.write(buf) | |||
zfile.close() | |||
return zbuf.getvalue() | |||
compress = 0 | |||
try: | |||
if string.find(os.environ["HTTP_ACCEPT_ENCODING"], "gzip") != -1: | |||
compress = 1 | |||
except: | |||
pass | |||
load_js_file() | |||
if compress and len(out)>512: | |||
out_buf = compress_string(str_out) | |||
print "Content-Encoding: gzip" | |||
print "Content-Length: %d" % (len(out_buf)) | |||
print "Content-Type: text/javascript" | |||
# Headers end | |||
if out_buf: | |||
sys.stdout.write(out_buf) | |||
elif out: | |||
print out | |||
except Exception, e: | |||
print "Content-Type: text/javascript" | |||
print getTraceback().replace('\n','<br>') |
@@ -1,35 +0,0 @@ | |||
#!/usr/bin/python | |||
# -*- coding: utf-8 -*- | |||
# Script for creating the pypi packages | |||
# Works only for python 2.6+ | |||
import os | |||
try: | |||
from setuptools import setup, find_packages | |||
except ImportError: | |||
import ez_setup | |||
ez_setup.use_setuptools() | |||
from setuptools import setup, find_packages | |||
# Startup | |||
appname = "webnotes-core" | |||
appversion = "v170" | |||
setup( | |||
name = appname, | |||
version = appversion, | |||
author = "Rushabh Mehta", | |||
namespace_packages = ["webnotes"], | |||
packages = ["webnotes"] + [ os.path.join("webnotes", a) for a in find_packages("webnotes") ], | |||
author_email = "rmehta@gmail.com", | |||
description = "A meta-data based library for creating web apps in python and javascript", | |||
license = "MIT", | |||
keywords = "Meta-data web app framework python", | |||
url = "http://code.google.com/p/webnotes/", | |||
classifiers = ["License :: OSI Approved :: MIT License","Topic :: Software Development :: Libraries :: Python Modules"], | |||
long_description = "Webnotes is a meta-data based framework for web applications in python", | |||
) | |||
@@ -1,213 +0,0 @@ | |||
#: HTML Template of index.cgi | |||
index_template = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> | |||
<html> | |||
<head id="head"> | |||
<!-- Web Notes Framework : www.webnotesframework.org --> | |||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |||
<meta name="robots" content="index, follow" /> | |||
<meta name="keywords" content="%(keywords)s" /> | |||
<meta name="description" content="%(site_description)s" /> | |||
<meta name="generator" content="Web Notes Framework Version v170 - Open Source Web Application Framework" /> | |||
<title>%(title)s</title> | |||
<link type="text/css" rel="stylesheet" href="css/jquery-ui.css"> | |||
<link type="text/css" rel="stylesheet" href="css/default.css"> | |||
<link rel="Shortcut Icon" href="/favicon.ico"> | |||
<script language="JavaScript" src="js/jquery/jquery.min.js"></script> | |||
<script language="JavaScript" src="js/jquery/jquery-ui.min.js"></script> | |||
<script type="text/javascript" src="js/tiny_mce_33/jquery.tinymce.js"></script> | |||
<script language="JavaScript" src="js/wnf.compressed.js"></script> | |||
%(import_form)s | |||
<script language="JavaScript">var _startup_data = %(startup_data)s;</script> | |||
<!--[if IE]><script language="javascript" type="text/javascript" src="js/jquery/excanvas.min.js"></script><![endif]--> | |||
%(add_in_head)s | |||
<script type="text/javascript"> | |||
window.dhtmlHistory.create({ debugMode: false }); | |||
</script> | |||
</head> | |||
<body> | |||
<div id="dialog_back"></div> | |||
<div id="startup_div" style="padding: 8px; font-size: 14px;"></div> | |||
<!-- Main Starts --> | |||
<div id="body_div"> | |||
<!--static (no script) content--> | |||
<div class="no_script"> | |||
%(content)s | |||
</div> | |||
</div> | |||
%(add_in_body)s | |||
</body> | |||
</html> | |||
''' | |||
redirect_template = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |||
<html> | |||
<head> | |||
<title>%s</title> | |||
<meta http-equiv="REFRESH" content="0; url=%s"></HEAD> | |||
<BODY style="font-family: Arial; padding: 8px; font-size: 14px; margin: 0px;"> | |||
Redirecting... | |||
</BODY> | |||
</HTML>''' | |||
page_properties = { | |||
'add_in_head':'', | |||
'add_in_body':'', | |||
'keywords':'', | |||
'site_description':'', | |||
'title':'', | |||
'content':'', | |||
'startup_data':'{}', | |||
'import_form':'<script language="JavaScript" src="js/form.compressed.js"></script>' | |||
} | |||
import webnotes | |||
# remove 'id' attributes so they don't conflict | |||
# --------------------------------------------- | |||
def replace_id(match): | |||
#webnotes.msgprint(match.group('name')) | |||
return '' | |||
def scrub_ids(content): | |||
import re | |||
p = re.compile('id=\"(?P<name> [^\"]*)\"', re.VERBOSE) | |||
content = p.sub(replace_id, content) | |||
p = re.compile('id=\'(?P<name> [^\']*)\'', re.VERBOSE) | |||
content = p.sub(replace_id, content) | |||
return content | |||
def get_page_content(page): | |||
""" | |||
Gets the HTML content from `static_content` or `content` property of a `Page` | |||
and loads it in global `page_properties` | |||
""" | |||
from webnotes.model.code import get_code | |||
from webnotes.model.doc import Document | |||
global page_properties | |||
if not page: return | |||
if '/' in page: page = page.split('/')[0] | |||
if page=='Form': return | |||
try: | |||
doc = Document('Page', page) | |||
load_page_metatags(doc) | |||
template = '%(content)s' | |||
# content | |||
if doc.template: | |||
template = get_code(webnotes.conn.get_value('Page Template', doc.template, 'module'), 'Page Template', doc.template, 'html', fieldname='template') | |||
page_properties['content'] = get_code(doc.module, 'page', doc.name, 'html', fieldname='content') | |||
# dynamic (scripted) content | |||
if page_properties['content'] and page_properties['content'].startswith('#!python'): | |||
page_properties.update(webnotes.model.code.execute(page_properties['content'])) | |||
page_properties['content'] = scrub_ids(template % {'content':page_properties['content']}) | |||
except: | |||
pass | |||
def load_page_metatags(doc): | |||
global page_properties | |||
try: | |||
import startup | |||
except: | |||
startup = '' | |||
# page meta-tags | |||
page_properties['title'] = doc.page_title or doc.name | |||
page_properties['keywords'] = doc.keywords or webnotes.conn.get_value('Control Panel',None,'keywords') or '' | |||
page_properties['site_description'] = doc.site_description or webnotes.conn.get_value('Control Panel',None,'site_description') or '' | |||
page_properties['add_in_head'] = getattr(startup, 'add_in_head', '') | |||
page_properties['add_in_body'] = getattr(startup, 'add_in_body', '') | |||
# find the page to load as static | |||
# ------------------------------- | |||
def load_properties(): | |||
import webnotes.widgets.page | |||
import urllib | |||
page_url = webnotes.form_dict.get('_escaped_fragment_', webnotes.form_dict.get('page', '')) | |||
if page_url and page_url.lower().startswith('page/'): | |||
page_url = page_url[5:] | |||
if page_url: | |||
get_page_content(urllib.unquote(page_url)) | |||
else: | |||
get_page_content(webnotes.user.get_home_page()) | |||
# generate the page | |||
# ----------------- | |||
def load_default_properties(): | |||
if not page_properites['keywords']: | |||
page_properites['keywords'] = webnotes.conn.get_value('Control Panel',None,'keywords') or '' | |||
if not page_properites['site_description']: | |||
page_properites['site_description'] = webnotes.conn.get_value('Control Panel',None,'site_description') or '' | |||
# generate the page | |||
# ----------------- | |||
def get(): | |||
""" | |||
returns the full rendered index.cgi | |||
Gets `keywords` and `site_description` from the `Control Panel` | |||
""" | |||
import webnotes | |||
no_startup = webnotes.form.getvalue('no_startup') or None | |||
global index_template, redirect_template | |||
import webnotes.session_cache | |||
try: | |||
import json | |||
except: # python 2.4 | |||
import simplejson as json | |||
page = webnotes.form_dict.get('page', '') | |||
# sid in public display | |||
# --------------------- | |||
if webnotes.form_dict.get('sid'): | |||
return redirect_template % ('Redirecting...', ('index.cgi' + (page and ('?page='+page) or ''))) | |||
if '%(content)s' in index_template: | |||
load_properties() | |||
# load the session data | |||
# --------------------- | |||
try: | |||
sd = webnotes.session_cache.get() | |||
except: | |||
import webnotes.utils | |||
sd = {'exc':webnotes.utils.getTraceback()} | |||
# add debug messages | |||
sd['server_messages'] = '\n--------------\n'.join(webnotes.message_log) | |||
page_properties['startup_data'] = no_startup and '{}' or json.dumps(sd) | |||
# no form api required for guests | |||
if webnotes.session['user']=='Guest': | |||
page_properties['import_form'] = '' | |||
index_template = index_template % page_properties | |||
return index_template |
@@ -0,0 +1,12 @@ | |||
# Main Configuration File | |||
# Copy this into conf.py | |||
# ---------------------- | |||
# Index URL | |||
# --------- | |||
# URL path to index.html | |||
# if you are installing within a folder, add the folderpath | |||
index_path = '/' | |||
@@ -0,0 +1,35 @@ | |||
# Sample httpd.conf extension ot start wnframework | |||
# Port on which you want to run wnframework | |||
Listen 8080 | |||
<VirtualHost *:8080> | |||
# Set your root folder here | |||
DocumentRoot /var/www/html/ | |||
<Directory /> | |||
AllowOverride All | |||
Order allow,deny | |||
Allow from all | |||
# enable direct execution of .py files | |||
Options +ExecCGI | |||
#AddHandler cgi-script .cgi | |||
AddHandler cgi-script .py | |||
DirectoryIndex index.html | |||
RewriteEngine On | |||
# all model calls will be redirected to model.py | |||
# to call a model - mysite/models/type/name eg. mysite.com/models/Organization/WebNotes | |||
RewriteRule /models/(.*)$ /lib/model.py/$1 [L,QSA] | |||
# all page calls will be redircted to page.py | |||
# page/home | |||
RewriteRule /pages/(.*)$ /lib/page.py/$1 [L,QSA] | |||
</Directory> | |||
</VirtualHost> |
@@ -0,0 +1,20 @@ | |||
wn.require('lib/js/lib/jquery.min.js'); | |||
wn.require('lib/js/wn/ui/status_bar.js'); | |||
wn.sb = new wn.ui.StatusBar(); | |||
wn.sb.set_value(15); | |||
// for datepicker | |||
wn.require('lib/js/legacy/jquery/jquery-ui.min.js') | |||
wn.sb.set_value(25); | |||
wn.require('lib/js/legacy/wnf.compressed.js'); | |||
wn.sb.set_value(60); | |||
wn.require('lib/js/legacy/form.compressed.js'); | |||
wn.require('lib/js/legacy/report.compressed.js'); | |||
wn.require('lib/css/legacy/default.css'); | |||
wn.sb.set_value(80); | |||
$(document).bind('ready', function() { | |||
startup(); | |||
}); |
@@ -0,0 +1,11 @@ | |||
# Main Configuration File | |||
# Copy this into conf.py | |||
# ---------------------- | |||
# Index URL | |||
# --------- | |||
# URL path to index.html | |||
# if you are installing within a folder, add the folderpath | |||
index_path = '/' |
@@ -0,0 +1,21 @@ | |||
#!/usr/bin/python | |||
# main handler file | |||
import cgi, cgitb, os, sys | |||
cgitb.enable() | |||
# import libs | |||
sys.path.append('lib/py') | |||
sys.path.append('erpnext') | |||
import webnotes | |||
import webnotes.defs | |||
webnotes.form = cgi.FieldStorage() | |||
# make the form_dict | |||
for key in webnotes.form.keys(): | |||
webnotes.form_dict[key] = webnotes.form.getvalue(key) | |||
# pass on to legacy handler | |||
import webnotes.handler |
@@ -0,0 +1,389 @@ | |||
/* | |||
* Skeleton V1.1 | |||
* Copyright 2011, Dave Gamache | |||
* www.getskeleton.com | |||
* Free to use under the MIT license. | |||
* http://www.opensource.org/licenses/mit-license.php | |||
* 8/17/2011 | |||
*/ | |||
/* Table of Content | |||
================================================== | |||
#Reset & Basics | |||
#Basic Styles | |||
#Site Styles | |||
#Typography | |||
#Links | |||
#Lists | |||
#Images | |||
#Buttons | |||
#Tabs | |||
#Forms | |||
#Misc */ | |||
/* #Reset & Basics (Inspired by E. Meyers) | |||
================================================== */ | |||
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { | |||
margin: 0; | |||
padding: 0; | |||
border: 0; | |||
font-size: 100%; | |||
font: inherit; | |||
vertical-align: baseline; } | |||
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { | |||
display: block; } | |||
body { | |||
line-height: 1; } | |||
ol, ul { | |||
list-style: none; } | |||
blockquote, q { | |||
quotes: none; } | |||
blockquote:before, blockquote:after, | |||
q:before, q:after { | |||
content: ''; | |||
content: none; } | |||
table { | |||
border-collapse: collapse; | |||
border-spacing: 0; } | |||
/* #Basic Styles | |||
================================================== */ | |||
body { | |||
background: #fff; | |||
font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; | |||
color: #444; | |||
-webkit-font-smoothing: antialiased; /* Fix for webkit rendering */ | |||
-webkit-text-size-adjust: 100%; | |||
} | |||
/* #Typography | |||
================================================== */ | |||
h1, h2, h3, h4, h5, h6 { | |||
color: #181818; | |||
font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif; | |||
font-weight: normal; } | |||
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; } | |||
h1 { font-size: 46px; line-height: 55px; margin-bottom: 14px;} | |||
h2 { font-size: 35px; line-height: 40px; margin-bottom: 10px; } | |||
h3 { font-size: 28px; line-height: 34px; margin-bottom: 8px; } | |||
h4 { font-size: 21px; line-height: 30px; margin-bottom: 4px; } | |||
h5 { font-size: 17px; line-height: 24px; } | |||
h6 { font-size: 14px; line-height: 21px; } | |||
.subheader { color: #777; } | |||
p { margin: 0 0 20px 0; } | |||
p img { margin: 0; } | |||
p.lead { font-size: 21px; line-height: 27px; color: #777; } | |||
em { font-style: italic; } | |||
strong { font-weight: bold; color: #333; } | |||
small { font-size: 80%; } | |||
/* Blockquotes */ | |||
blockquote, blockquote p { font-size: 17px; line-height: 24px; color: #777; font-style: italic; } | |||
blockquote { margin: 0 0 20px; padding: 9px 20px 0 19px; border-left: 1px solid #ddd; } | |||
blockquote cite { display: block; font-size: 12px; color: #555; } | |||
blockquote cite:before { content: "\2014 \0020"; } | |||
blockquote cite a, blockquote cite a:visited, blockquote cite a:visited { color: #555; } | |||
hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 10px 0 30px; height: 0; } | |||
/* #Links | |||
================================================== */ | |||
a, a:visited { color: #333; text-decoration: underline; outline: 0; } | |||
a:hover, a:focus { color: #000; } | |||
p a, p a:visited { line-height: inherit; } | |||
/* #Lists | |||
================================================== */ | |||
ul, ol { margin-bottom: 20px; } | |||
ul { list-style: none outside; } | |||
ol { list-style: decimal; } | |||
ol, ul.square, ul.circle, ul.disc { margin-left: 30px; } | |||
ul.square { list-style: square outside; } | |||
ul.circle { list-style: circle outside; } | |||
ul.disc { list-style: disc outside; } | |||
ul ul, ul ol, | |||
ol ol, ol ul { margin: 4px 0 5px 30px; font-size: 90%; } | |||
ul ul li, ul ol li, | |||
ol ol li, ol ul li { margin-bottom: 6px; } | |||
li { line-height: 18px; margin-bottom: 12px; } | |||
ul.large li { line-height: 21px; } | |||
li p { line-height: 21px; } | |||
/* #Images | |||
================================================== */ | |||
img.scale-with-grid { | |||
max-width: 100%; | |||
height: auto; } | |||
/* #Buttons | |||
================================================== */ | |||
a.button, | |||
button, | |||
input[type="submit"], | |||
input[type="reset"], | |||
input[type="button"] { | |||
background: #eee; /* Old browsers */ | |||
background: -moz-linear-gradient(top, rgba(255,255,255,.2) 0%, rgba(0,0,0,.2) 100%); /* FF3.6+ */ | |||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.2)), color-stop(100%,rgba(0,0,0,.2))); /* Chrome,Safari4+ */ | |||
background: -webkit-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Chrome10+,Safari5.1+ */ | |||
background: -o-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Opera11.10+ */ | |||
background: -ms-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* IE10+ */ | |||
background: linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* W3C */ | |||
border: 1px solid #aaa; | |||
border-top: 1px solid #ccc; | |||
border-left: 1px solid #ccc; | |||
padding: 4px 12px; | |||
-moz-border-radius: 3px; | |||
-webkit-border-radius: 3px; | |||
border-radius: 3px; | |||
color: #444; | |||
display: inline-block; | |||
font-size: 11px; | |||
font-weight: bold; | |||
text-decoration: none; | |||
text-shadow: 0 1px rgba(255, 255, 255, .75); | |||
cursor: pointer; | |||
margin-bottom: 20px; | |||
line-height: 21px; | |||
font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; } | |||
a.button:hover, | |||
button:hover, | |||
input[type="submit"]:hover, | |||
input[type="reset"]:hover, | |||
input[type="button"]:hover { | |||
color: #222; | |||
background: #ddd; /* Old browsers */ | |||
background: -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); /* FF3.6+ */ | |||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.3)), color-stop(100%,rgba(0,0,0,.3))); /* Chrome,Safari4+ */ | |||
background: -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Chrome10+,Safari5.1+ */ | |||
background: -o-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Opera11.10+ */ | |||
background: -ms-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* IE10+ */ | |||
background: linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* W3C */ | |||
border: 1px solid #888; | |||
border-top: 1px solid #aaa; | |||
border-left: 1px solid #aaa; } | |||
a.button:active, | |||
button:active, | |||
input[type="submit"]:active, | |||
input[type="reset"]:active, | |||
input[type="button"]:active { | |||
border: 1px solid #666; | |||
background: #ccc; /* Old browsers */ | |||
background: -moz-linear-gradient(top, rgba(255,255,255,.35) 0%, rgba(10,10,10,.4) 100%); /* FF3.6+ */ | |||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.35)), color-stop(100%,rgba(10,10,10,.4))); /* Chrome,Safari4+ */ | |||
background: -webkit-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Chrome10+,Safari5.1+ */ | |||
background: -o-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Opera11.10+ */ | |||
background: -ms-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* IE10+ */ | |||
background: linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* W3C */ } | |||
.button.full-width, | |||
button.full-width, | |||
input[type="submit"].full-width, | |||
input[type="reset"].full-width, | |||
input[type="button"].full-width { | |||
width: 100%; | |||
padding-left: 0 !important; | |||
padding-right: 0 !important; | |||
text-align: center; } | |||
/* #Tabs (activate in tabs.js) | |||
================================================== */ | |||
ul.tabs { | |||
display: block; | |||
margin: 0 0 20px 0; | |||
padding: 0; | |||
border-bottom: solid 1px #ddd; } | |||
ul.tabs li { | |||
display: block; | |||
width: auto; | |||
height: 30px; | |||
padding: 0; | |||
float: left; | |||
margin-bottom: 0; } | |||
ul.tabs li a { | |||
display: block; | |||
text-decoration: none; | |||
width: auto; | |||
height: 29px; | |||
padding: 0px 20px; | |||
line-height: 30px; | |||
border: solid 1px #ddd; | |||
border-width: 1px 1px 0 0; | |||
margin: 0; | |||
background: #f5f5f5; | |||
font-size: 13px; } | |||
ul.tabs li a.active { | |||
background: #fff; | |||
height: 30px; | |||
position: relative; | |||
top: -4px; | |||
padding-top: 4px; | |||
border-left-width: 1px; | |||
margin: 0 0 0 -1px; | |||
color: #111; | |||
-moz-border-radius-topleft: 2px; | |||
-webkit-border-top-left-radius: 2px; | |||
border-top-left-radius: 2px; | |||
-moz-border-radius-topright: 2px; | |||
-webkit-border-top-right-radius: 2px; | |||
border-top-right-radius: 2px; } | |||
ul.tabs li:first-child a.active { | |||
margin-left: 0; } | |||
ul.tabs li:first-child a { | |||
border-width: 1px 1px 0 1px; | |||
-moz-border-radius-topleft: 2px; | |||
-webkit-border-top-left-radius: 2px; | |||
border-top-left-radius: 2px; } | |||
ul.tabs li:last-child a { | |||
-moz-border-radius-topright: 2px; | |||
-webkit-border-top-right-radius: 2px; | |||
border-top-right-radius: 2px; } | |||
ul.tabs-content { margin: 0; display: block; } | |||
ul.tabs-content > li { display:none; } | |||
ul.tabs-content > li.active { display: block; } | |||
/* Clearfixing tabs for beautiful stacking */ | |||
ul.tabs:before, | |||
ul.tabs:after { | |||
content: '\0020'; | |||
display: block; | |||
overflow: hidden; | |||
visibility: hidden; | |||
width: 0; | |||
height: 0; } | |||
ul.tabs:after { | |||
clear: both; } | |||
ul.tabs { | |||
zoom: 1; } | |||
/* #Forms | |||
================================================== */ | |||
form { | |||
margin-bottom: 20px; } | |||
fieldset { | |||
margin-bottom: 20px; } | |||
input[type="text"], | |||
input[type="password"], | |||
input[type="email"], | |||
textarea, | |||
select { | |||
border: 1px solid #ccc; | |||
padding: 6px 4px; | |||
outline: none; | |||
-moz-border-radius: 2px; | |||
-webkit-border-radius: 2px; | |||
border-radius: 2px; | |||
font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; | |||
color: #777; | |||
margin: 0; | |||
width: 210px; | |||
max-width: 100%; | |||
display: block; | |||
margin-bottom: 20px; | |||
background: #fff; } | |||
select { | |||
padding: 0; } | |||
input[type="text"]:focus, | |||
input[type="password"]:focus, | |||
input[type="email"]:focus, | |||
textarea:focus { | |||
border: 1px solid #aaa; | |||
color: #444; | |||
-moz-box-shadow: 0 0 3px rgba(0,0,0,.2); | |||
-webkit-box-shadow: 0 0 3px rgba(0,0,0,.2); | |||
box-shadow: 0 0 3px rgba(0,0,0,.2); } | |||
textarea { | |||
min-height: 60px; } | |||
label, | |||
legend { | |||
display: block; | |||
font-weight: bold; | |||
font-size: 13px; } | |||
select { | |||
width: 220px; } | |||
input[type="checkbox"] { | |||
display: inline; } | |||
label span, | |||
legend span { | |||
font-weight: normal; | |||
font-size: 13px; | |||
color: #444; } | |||
/* #Misc | |||
================================================== */ | |||
.remove-bottom { margin-bottom: 0 !important; } | |||
.half-bottom { margin-bottom: 10px !important; } | |||
.add-bottom { margin-bottom: 20px !important; } | |||
/* | |||
chaiproject.org | |||
Some standard styles to help you get started | |||
Fibonacchi 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 | |||
*/ | |||
/* Code blocks */ | |||
pre, code { | |||
font: 12px 'Bitstream Vera Sans Mono','Courier',monospace; | |||
} | |||
/* Light Gradient */ | |||
.gradient-light { | |||
background: #eaeaea; /* Old browsers */ | |||
background: -moz-linear-gradient(top, #eaeaea 0%, #b2b2b2 100%); /* FF3.6+ */ | |||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eaeaea), color-stop(100%,#b2b2b2)); /* Chrome,Safari4+ */ | |||
background: -webkit-linear-gradient(top, #eaeaea 0%,#b2b2b2 100%); /* Chrome10+,Safari5.1+ */ | |||
background: -o-linear-gradient(top, #eaeaea 0%,#b2b2b2 100%); /* Opera11.10+ */ | |||
background: -ms-linear-gradient(top, #eaeaea 0%,#b2b2b2 100%); /* IE10+ */ | |||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eaeaea', endColorstr='#b2b2b2',GradientType=0 ); /* IE6-9 */ | |||
background: linear-gradient(top, #eaeaea 0%,#b2b2b2 100%); /* W3C */ | |||
} | |||
/* Dark Gradient */ | |||
.gradient-dark { | |||
background: #45484d; /* Old browsers */ | |||
background: -moz-linear-gradient(top, #45484d 0%, #000000 100%); /* FF3.6+ */ | |||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#45484d), color-stop(100%,#000000)); /* Chrome,Safari4+ */ | |||
background: -webkit-linear-gradient(top, #45484d 0%,#000000 100%); /* Chrome10+,Safari5.1+ */ | |||
background: -o-linear-gradient(top, #45484d 0%,#000000 100%); /* Opera11.10+ */ | |||
background: -ms-linear-gradient(top, #45484d 0%,#000000 100%); /* IE10+ */ | |||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#45484d', endColorstr='#000000',GradientType=0 ); /* IE6-9 */ | |||
background: linear-gradient(top, #45484d 0%,#000000 100%); /* W3C */ | |||
color: #FFF; | |||
} | |||
/* Small shadow */ | |||
.shadow { | |||
-moz-box-shadow: 0px 2px 2px #888; | |||
-webkit-box-shadow: 0px 2px 2px #888; | |||
box-shadow: 0px 2px 2px #888; | |||
} | |||
/* Rounded corners */ | |||
.round { | |||
-webkit-border-radius: 5px; | |||
-moz-border-radius: 5px; | |||
border-radius: 5px; | |||
} |
@@ -0,0 +1,58 @@ | |||
/* | |||
* Skeleton V1.1 | |||
* Copyright 2011, Dave Gamache | |||
* www.getskeleton.com | |||
* Free to use under the MIT license. | |||
* http://www.opensource.org/licenses/mit-license.php | |||
* 8/17/2011 | |||
*/ | |||
/* Table of Content | |||
================================================== | |||
#Site Styles | |||
#Page Styles | |||
#Media Queries | |||
#Font-Face */ | |||
/* #Site Styles | |||
================================================== */ | |||
/* #Page Styles | |||
================================================== */ | |||
/* #Media Queries | |||
================================================== */ | |||
/* Smaller than standard 960 (devices and browsers) */ | |||
@media only screen and (max-width: 959px) {} | |||
/* Tablet Portrait size to standard 960 (devices and browsers) */ | |||
@media only screen and (min-width: 768px) and (max-width: 959px) {} | |||
/* All Mobile Sizes (devices and browser) */ | |||
@media only screen and (max-width: 767px) {} | |||
/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */ | |||
@media only screen and (min-width: 480px) and (max-width: 767px) {} | |||
/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */ | |||
@media only screen and (max-width: 479px) {} | |||
/* #Font-Face | |||
================================================== */ | |||
/* This is the proper syntax for an @font-face file | |||
Just create a "fonts" folder at the root, | |||
copy your FontName into code below and remove | |||
comment brackets */ | |||
/* @font-face { | |||
font-family: 'FontName'; | |||
src: url('../fonts/FontName.eot'); | |||
src: url('../fonts/FontName.eot?iefix') format('eot'), | |||
url('../fonts/FontName.woff') format('woff'), | |||
url('../fonts/FontName.ttf') format('truetype'), | |||
url('../fonts/FontName.svg#webfontZam02nTh') format('svg'); | |||
font-weight: normal; | |||
font-style: normal; } | |||
*/ |
@@ -105,4 +105,38 @@ div.std-footer { | |||
div.std-footer-item { | |||
margin: 0px 13px 13px 0px; | |||
} | |||
} | |||
.shadow { | |||
-moz-box-shadow: 0px 2px 2px #888; | |||
-webkit-box-shadow: 0px 2px 2px #888; | |||
box-shadow: 0px 2px 2px #888; | |||
} | |||
.round { | |||
-webkit-border-radius: 5px; | |||
-moz-border-radius: 5px; | |||
border-radius: 5px; | |||
} | |||
.gradient { | |||
background: #ededed; /* Old browsers */ | |||
background: -moz-linear-gradient(top, #ededed 0%, #d1d1d1 47%, #b7b7b7 100%); /* FF3.6+ */ | |||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ededed), color-stop(47%,#d1d1d1), color-stop(100%,#b7b7b7)); /* Chrome,Safari4+ */ | |||
background: -webkit-linear-gradient(top, #ededed 0%,#d1d1d1 47%,#b7b7b7 100%); /* Chrome10+,Safari5.1+ */ | |||
background: -o-linear-gradient(top, #ededed 0%,#d1d1d1 47%,#b7b7b7 100%); /* Opera11.10+ */ | |||
background: -ms-linear-gradient(top, #ededed 0%,#d1d1d1 47%,#b7b7b7 100%); /* IE10+ */ | |||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ededed', endColorstr='#b7b7b7',GradientType=0 ); /* IE6-9 */ | |||
background: linear-gradient(top, #ededed 0%,#d1d1d1 47%,#b7b7b7 100%); /* W3C */ | |||
} | |||
.header-gradient { | |||
background: #84827c; /* Old browsers */ | |||
background: -moz-linear-gradient(top, #84827c 0%, #27211c 100%); /* FF3.6+ */ | |||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#84827c), color-stop(100%,#27211c)); /* Chrome,Safari4+ */ | |||
background: -webkit-linear-gradient(top, #84827c 0%,#27211c 100%); /* Chrome10+,Safari5.1+ */ | |||
background: -o-linear-gradient(top, #84827c 0%,#27211c 100%); /* Opera11.10+ */ | |||
background: -ms-linear-gradient(top, #84827c 0%,#27211c 100%); /* IE10+ */ | |||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#84827c', endColorstr='#27211c',GradientType=0 ); /* IE6-9 */ | |||
background: linear-gradient(top, #84827c 0%,#27211c 100%); /* W3C */ | |||
color: #FFF; | |||
} |
@@ -0,0 +1,20 @@ | |||
{ | |||
"default.css": [ | |||
"css/body.css", | |||
"css/menus.css", | |||
"css/messages.css", | |||
"css/forms.css", | |||
"css/grid.css", | |||
"css/listing.css", | |||
"css/report.css", | |||
"css/calendar.css", | |||
"css/autosuggest.css", | |||
"css/dialog.css", | |||
"css/wntoolbar.css", | |||
"css/tabs.css", | |||
"css/jqplot.css", | |||
"css/bw-icons.css", | |||
"css/sidebar.css", | |||
"css/doc_column_view.css" | |||
] | |||
} |
@@ -1,7 +1,7 @@ | |||
/** general icons **/ | |||
.wn-icon { background: url('../images/icons/icons.png'); width: 16px; height: 16px; cursor: pointer; } | |||
.wn-icon { background: url('lib/images/icons/icons.png'); width: 16px; height: 16px; cursor: pointer; } | |||
.ic-2x2_grid { background-position: 0 0; } | |||
.ic-3x3_grid { background-position: 0 -36px; } | |||
.ic-3x3_grid_2 { background-position: 0 -72px; } |
@@ -1141,20 +1141,6 @@ div.dialog_row table td textarea { | |||
/* Recent */ | |||
div.recent_starred { | |||
width: 16px; | |||
height: 16px; | |||
cursor: pointer; | |||
background: url('../images/ui/star.gif'); | |||
} | |||
div.recent_unstarred { | |||
width: 16px; | |||
height: 16px; | |||
cursor: pointer; | |||
background: url('../images/ui/star_plain.gif'); | |||
} | |||
div.status_flag { | |||
width: 8px; | |||
height: 8px; | |||
@@ -1163,21 +1149,14 @@ div.status_flag { | |||
background-color: #EEE; | |||
} | |||
/* Search */ | |||
.search_table td { | |||
padding: 2px; | |||
} | |||
/*** for wn toolbar ***/ | |||
.wntoolbar-icon { background: url('../images/icons/wntoolbar-icons.png'); width: 16px; height: 16px; } | |||
.wntoolbar-icon { background: url('lib/images/icons/wntoolbar-icons.png'); width: 16px; height: 16px; } | |||
.sprite-home { background-position: 0 0; } | |||
.sprite-new { background-position: 0 -66px; } | |||
.sprite-pages { background-position: 0 -132px; } | |||
@@ -1474,7 +1453,7 @@ div.jqplot-noData-container { | |||
/** general icons **/ | |||
.wn-icon { background: url('../images/icons/icons.png'); width: 16px; height: 16px; cursor: pointer; } | |||
.wn-icon { background: url('lib/images/icons/icons.png'); width: 16px; height: 16px; cursor: pointer; } | |||
.ic-2x2_grid { background-position: 0 0; } | |||
.ic-3x3_grid { background-position: 0 -36px; } | |||
.ic-3x3_grid_2 { background-position: 0 -72px; } |
@@ -50,26 +50,26 @@ | |||
.ui-widget { font-family: Arial,sans-serif; font-size: 1em; } | |||
.ui-widget .ui-widget { font-size: 1em; } | |||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,sans-serif; font-size: 1em; } | |||
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } | |||
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(lib/images/jquery-ui/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } | |||
.ui-widget-content a { color: #222222; } | |||
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } | |||
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(lib/images/jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } | |||
.ui-widget-header a { color: #222222; } | |||
/* Interaction states | |||
----------------------------------*/ | |||
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_highlight-hard_75_e6e6e6_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #222; } | |||
.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(lib/images/jquery-ui/ui-bg_highlight-hard_75_e6e6e6_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #222; } | |||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #222; text-decoration: none; } | |||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_highlight-hard_75_dadada_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000; } | |||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #999999; background: #dadada url(lib/images/jquery-ui/ui-bg_highlight-hard_75_dadada_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000; } | |||
.ui-state-hover a, .ui-state-hover a:hover { color: #000; text-decoration: none; } | |||
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_highlight-hard_65_ffffff_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000; } | |||
.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(lib/images/jquery-ui/ui-bg_highlight-hard_65_ffffff_1x100.png) 50% 50% repeat-x; font-weight: normal; color: #000; } | |||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #000; text-decoration: none; } | |||
.ui-widget :active { outline: none; } | |||
/* Interaction Cues | |||
----------------------------------*/ | |||
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } | |||
.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(lib/images/jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } | |||
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } | |||
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } | |||
.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(lib/images/jquery-ui/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } | |||
.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; } | |||
.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; } | |||
.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } | |||
@@ -80,14 +80,14 @@ | |||
----------------------------------*/ | |||
/* states and images */ | |||
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } | |||
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } | |||
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } | |||
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } | |||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } | |||
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } | |||
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } | |||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } | |||
.ui-icon { width: 16px; height: 16px; background-image: url(lib/images/jquery-ui/ui-icons_222222_256x240.png); } | |||
.ui-widget-content .ui-icon {background-image: url(lib/images/jquery-ui/ui-icons_222222_256x240.png); } | |||
.ui-widget-header .ui-icon {background-image: url(lib/images/jquery-ui/ui-icons_222222_256x240.png); } | |||
.ui-state-default .ui-icon { background-image: url(lib/images/jquery-ui/ui-icons_888888_256x240.png); } | |||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(lib/images/jquery-ui/ui-icons_454545_256x240.png); } | |||
.ui-state-active .ui-icon {background-image: url(lib/images/jquery-ui/ui-icons_454545_256x240.png); } | |||
.ui-state-highlight .ui-icon {background-image: url(lib/images/jquery-ui/ui-icons_2e83ff_256x240.png); } | |||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(lib/images/jquery-ui/ui-icons_cd0a0a_256x240.png); } | |||
/* positioning */ | |||
.ui-icon-carat-1-n { background-position: 0 0; } | |||
@@ -282,8 +282,8 @@ | |||
.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } | |||
/* Overlays */ | |||
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } | |||
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Button | |||
.ui-widget-overlay { background: #aaaaaa url(lib/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } | |||
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(lib/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* Button | |||
----------------------------------*/ | |||
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ |
@@ -1,20 +1,6 @@ | |||
/* Recent */ | |||
div.recent_starred { | |||
width: 16px; | |||
height: 16px; | |||
cursor: pointer; | |||
background: url('../images/ui/star.gif'); | |||
} | |||
div.recent_unstarred { | |||
width: 16px; | |||
height: 16px; | |||
cursor: pointer; | |||
background: url('../images/ui/star_plain.gif'); | |||
} | |||
div.status_flag { | |||
width: 8px; | |||
height: 8px; | |||
@@ -23,21 +9,14 @@ div.status_flag { | |||
background-color: #EEE; | |||
} | |||
/* Search */ | |||
.search_table td { | |||
padding: 2px; | |||
} | |||
/*** for wn toolbar ***/ | |||
.wntoolbar-icon { background: url('../images/icons/wntoolbar-icons.png'); width: 16px; height: 16px; } | |||
.wntoolbar-icon { background: url('lib/images/icons/wntoolbar-icons.png'); width: 16px; height: 16px; } | |||
.sprite-home { background-position: 0 0; } | |||
.sprite-new { background-position: 0 -66px; } | |||
.sprite-pages { background-position: 0 -132px; } |
@@ -0,0 +1,236 @@ | |||
/* | |||
* Skeleton V1.1 | |||
* Copyright 2011, Dave Gamache | |||
* www.getskeleton.com | |||
* Free to use under the MIT license. | |||
* http://www.opensource.org/licenses/mit-license.php | |||
* 8/17/2011 | |||
*/ | |||
/* Table of Contents | |||
================================================== | |||
#Base 960 Grid | |||
#Tablet (Portrait) | |||
#Mobile (Portrait) | |||
#Mobile (Landscape) | |||
#Clearing */ | |||
/* #Base 960 Grid | |||
================================================== */ | |||
.container { position: relative; width: 960px; margin: 0 auto; padding: 0; } | |||
.column, .columns { float: left; display: inline; margin-left: 10px; margin-right: 10px; } | |||
.row { margin-bottom: 20px; } | |||
/* Nested Column Classes */ | |||
.column.alpha, .columns.alpha { margin-left: 0; } | |||
.column.omega, .columns.omega { margin-right: 0; } | |||
/* Base Grid */ | |||
.container .one.column { width: 40px; } | |||
.container .two.columns { width: 100px; } | |||
.container .three.columns { width: 160px; } | |||
.container .four.columns { width: 220px; } | |||
.container .five.columns { width: 280px; } | |||
.container .six.columns { width: 340px; } | |||
.container .seven.columns { width: 400px; } | |||
.container .eight.columns { width: 460px; } | |||
.container .nine.columns { width: 520px; } | |||
.container .ten.columns { width: 580px; } | |||
.container .eleven.columns { width: 640px; } | |||
.container .twelve.columns { width: 700px; } | |||
.container .thirteen.columns { width: 760px; } | |||
.container .fourteen.columns { width: 820px; } | |||
.container .fifteen.columns { width: 880px; } | |||
.container .sixteen.columns { width: 940px; } | |||
.container .one-third.column { width: 300px; } | |||
.container .two-thirds.column { width: 620px; } | |||
/* Offsets */ | |||
.container .offset-by-one { padding-left: 60px; } | |||
.container .offset-by-two { padding-left: 120px; } | |||
.container .offset-by-three { padding-left: 180px; } | |||
.container .offset-by-four { padding-left: 240px; } | |||
.container .offset-by-five { padding-left: 300px; } | |||
.container .offset-by-six { padding-left: 360px; } | |||
.container .offset-by-seven { padding-left: 420px; } | |||
.container .offset-by-eight { padding-left: 480px; } | |||
.container .offset-by-nine { padding-left: 540px; } | |||
.container .offset-by-ten { padding-left: 600px; } | |||
.container .offset-by-eleven { padding-left: 660px; } | |||
.container .offset-by-twelve { padding-left: 720px; } | |||
.container .offset-by-thirteen { padding-left: 780px; } | |||
.container .offset-by-fourteen { padding-left: 840px; } | |||
.container .offset-by-fifteen { padding-left: 900px; } | |||
/* #Tablet (Portrait) | |||
================================================== */ | |||
/* Note: Design for a width of 768px */ | |||
@media only screen and (min-width: 768px) and (max-width: 959px) { | |||
.container { width: 768px; } | |||
.container .column, | |||
.container .columns { margin-left: 10px; margin-right: 10px; } | |||
.column.alpha, .columns.alpha { margin-left: 0; margin-right: 10px; } | |||
.column.omega, .columns.omega { margin-right: 0; margin-left: 10px; } | |||
.container .one.column { width: 28px; } | |||
.container .two.columns { width: 76px; } | |||
.container .three.columns { width: 124px; } | |||
.container .four.columns { width: 172px; } | |||
.container .five.columns { width: 220px; } | |||
.container .six.columns { width: 268px; } | |||
.container .seven.columns { width: 316px; } | |||
.container .eight.columns { width: 364px; } | |||
.container .nine.columns { width: 412px; } | |||
.container .ten.columns { width: 460px; } | |||
.container .eleven.columns { width: 508px; } | |||
.container .twelve.columns { width: 556px; } | |||
.container .thirteen.columns { width: 604px; } | |||
.container .fourteen.columns { width: 652px; } | |||
.container .fifteen.columns { width: 700px; } | |||
.container .sixteen.columns { width: 748px; } | |||
.container .one-third.column { width: 236px; } | |||
.container .two-thirds.column { width: 492px; } | |||
/* Offsets */ | |||
.container .offset-by-one { padding-left: 48px; } | |||
.container .offset-by-two { padding-left: 96px; } | |||
.container .offset-by-three { padding-left: 144px; } | |||
.container .offset-by-four { padding-left: 192px; } | |||
.container .offset-by-five { padding-left: 240px; } | |||
.container .offset-by-six { padding-left: 288px; } | |||
.container .offset-by-seven { padding-left: 336px; } | |||
.container .offset-by-eight { padding-left: 348px; } | |||
.container .offset-by-nine { padding-left: 432px; } | |||
.container .offset-by-ten { padding-left: 480px; } | |||
.container .offset-by-eleven { padding-left: 528px; } | |||
.container .offset-by-twelve { padding-left: 576px; } | |||
.container .offset-by-thirteen { padding-left: 624px; } | |||
.container .offset-by-fourteen { padding-left: 672px; } | |||
.container .offset-by-fifteen { padding-left: 720px; } | |||
} | |||
/* #Mobile (Portrait) | |||
================================================== */ | |||
/* Note: Design for a width of 320px */ | |||
@media only screen and (max-width: 767px) { | |||
.container { width: 300px; } | |||
.columns, .column { margin: 0; } | |||
.container .one.column, | |||
.container .two.columns, | |||
.container .three.columns, | |||
.container .four.columns, | |||
.container .five.columns, | |||
.container .six.columns, | |||
.container .seven.columns, | |||
.container .eight.columns, | |||
.container .nine.columns, | |||
.container .ten.columns, | |||
.container .eleven.columns, | |||
.container .twelve.columns, | |||
.container .thirteen.columns, | |||
.container .fourteen.columns, | |||
.container .fifteen.columns, | |||
.container .sixteen.columns, | |||
.container .one-third.column, | |||
.container .two-thirds.column { width: 300px; } | |||
/* Offsets */ | |||
.container .offset-by-one, | |||
.container .offset-by-two, | |||
.container .offset-by-three, | |||
.container .offset-by-four, | |||
.container .offset-by-five, | |||
.container .offset-by-six, | |||
.container .offset-by-seven, | |||
.container .offset-by-eight, | |||
.container .offset-by-nine, | |||
.container .offset-by-ten, | |||
.container .offset-by-eleven, | |||
.container .offset-by-twelve, | |||
.container .offset-by-thirteen, | |||
.container .offset-by-fourteen, | |||
.container .offset-by-fifteen { padding-left: 0; } | |||
} | |||
/* #Mobile (Landscape) | |||
================================================== */ | |||
/* Note: Design for a width of 480px */ | |||
@media only screen and (min-width: 480px) and (max-width: 767px) { | |||
.container { width: 420px; } | |||
.columns, .column { margin: 0; } | |||
.container .one.column, | |||
.container .two.columns, | |||
.container .three.columns, | |||
.container .four.columns, | |||
.container .five.columns, | |||
.container .six.columns, | |||
.container .seven.columns, | |||
.container .eight.columns, | |||
.container .nine.columns, | |||
.container .ten.columns, | |||
.container .eleven.columns, | |||
.container .twelve.columns, | |||
.container .thirteen.columns, | |||
.container .fourteen.columns, | |||
.container .fifteen.columns, | |||
.container .sixteen.columns, | |||
.container .one-third.column, | |||
.container .two-thirds.column { width: 420px; } | |||
} | |||
/* #Clearing | |||
================================================== */ | |||
/* Self Clearing Goodness */ | |||
.container:after { content: "\0020"; display: block; height: 0; clear: both; visibility: hidden; } | |||
/* Use clearfix class on parent to clear nested columns, | |||
or wrap each row of columns in a <div class="row"> */ | |||
.clearfix:before, | |||
.clearfix:after, | |||
.row:before, | |||
.row:after { | |||
content: '\0020'; | |||
display: block; | |||
overflow: hidden; | |||
visibility: hidden; | |||
width: 0; | |||
height: 0; } | |||
.row:after, | |||
.clearfix:after { | |||
clear: both; } | |||
.row, | |||
.clearfix { | |||
zoom: 1; } | |||
/* You can also use a <br class="clear" /> to clear columns */ | |||
.clear { | |||
clear: both; | |||
display: block; | |||
overflow: hidden; | |||
visibility: hidden; | |||
width: 0; | |||
height: 0; | |||
} | |||
@@ -0,0 +1,427 @@ | |||
/* | |||
http://hellohappy.org/css3-buttons/ | |||
*/ | |||
button::-moz-focus-inner { | |||
border: 0; } | |||
/* minimal | |||
*******************************************************************************/ | |||
button.minimal { | |||
background: #e3e3e3; | |||
border: 1px solid #bbb; | |||
-webkit-border-radius: 3px; | |||
-moz-border-radius: 3px; | |||
-ms-border-radius: 3px; | |||
-o-border-radius: 3px; | |||
border-radius: 3px; | |||
-webkit-box-shadow: inset 0 0 1px 1px #f6f6f6; | |||
-moz-box-shadow: inset 0 0 1px 1px #f6f6f6; | |||
-ms-box-shadow: inset 0 0 1px 1px #f6f6f6; | |||
-o-box-shadow: inset 0 0 1px 1px #f6f6f6; | |||
box-shadow: inset 0 0 1px 1px #f6f6f6; | |||
color: #333; | |||
font: bold 12px "helvetica neue", helvetica, arial, sans-serif; | |||
line-height: 1; | |||
padding: 7px 21px; | |||
text-align: center; | |||
text-shadow: 0 1px 0 #fff; | |||
} | |||
button.minimal:hover { | |||
background: #d9d9d9; | |||
-webkit-box-shadow: inset 0 0 1px 1px #eaeaea; | |||
-moz-box-shadow: inset 0 0 1px 1px #eaeaea; | |||
-ms-box-shadow: inset 0 0 1px 1px #eaeaea; | |||
-o-box-shadow: inset 0 0 1px 1px #eaeaea; | |||
box-shadow: inset 0 0 1px 1px #eaeaea; | |||
color: #222; | |||
cursor: pointer; } | |||
button.minimal:active { | |||
background: #d0d0d0; | |||
-webkit-box-shadow: inset 0 0 1px 1px #e3e3e3; | |||
-moz-box-shadow: inset 0 0 1px 1px #e3e3e3; | |||
-ms-box-shadow: inset 0 0 1px 1px #e3e3e3; | |||
-o-box-shadow: inset 0 0 1px 1px #e3e3e3; | |||
box-shadow: inset 0 0 1px 1px #e3e3e3; | |||
color: #000; } | |||
/* clean gray | |||
*******************************************************************************/ | |||
button.clean-gray { | |||
background-color: #eeeeee; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd); | |||
background-image: -moz-linear-gradient(top, #eeeeee, #dddddd); | |||
background-image: -ms-linear-gradient(top, #eeeeee, #dddddd); | |||
background-image: -o-linear-gradient(top, #eeeeee, #dddddd); | |||
background-image: linear-gradient(top, #eeeeee, #dddddd); | |||
border: 1px solid #ccc; | |||
border-bottom: 1px solid #bbb; | |||
-webkit-border-radius: 3px; | |||
-moz-border-radius: 3px; | |||
-ms-border-radius: 3px; | |||
-o-border-radius: 3px; | |||
border-radius: 3px; | |||
color: #333; | |||
line-height: 1; | |||
font-size: 11px; | |||
padding: 3px 7px; | |||
text-align: center; | |||
text-shadow: 0 1px 0 #eee; | |||
} | |||
button.clean-gray:hover { | |||
background-color: #dddddd; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dddddd), to(#bbbbbb)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); | |||
background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); | |||
background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); | |||
background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); | |||
background-image: linear-gradient(top, #dddddd, #bbbbbb); | |||
border: 1px solid #bbb; | |||
border-bottom: 1px solid #999; | |||
cursor: pointer; | |||
text-shadow: 0 1px 0 #ddd; } | |||
button.clean-gray:active { | |||
border: 1px solid #aaa; | |||
border-bottom: 1px solid #888; | |||
-webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; | |||
-moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; | |||
-ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; | |||
-o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; | |||
box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; } | |||
/* cupid green (inspired by okcupid.com) | |||
*******************************************************************************/ | |||
button.cupid-green { | |||
background-color: #7fbf4d; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#7fbf4d), to(#63a62f)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #7fbf4d, #63a62f); | |||
background-image: -moz-linear-gradient(top, #7fbf4d, #63a62f); | |||
background-image: -ms-linear-gradient(top, #7fbf4d, #63a62f); | |||
background-image: -o-linear-gradient(top, #7fbf4d, #63a62f); | |||
background-image: linear-gradient(top, #7fbf4d, #63a62f); | |||
border: 1px solid #63a62f; | |||
border-bottom: 1px solid #5b992b; | |||
-webkit-border-radius: 3px; | |||
-moz-border-radius: 3px; | |||
-ms-border-radius: 3px; | |||
-o-border-radius: 3px; | |||
border-radius: 3px; | |||
color: #fff; | |||
line-height: 1; | |||
font-size: 11px; | |||
padding: 3px 7px; | |||
text-align: center; | |||
text-shadow: 0 -1px 0 #4c9021; | |||
} | |||
button.cupid-green:hover { | |||
background-color: #76b347; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#76b347), to(#5e9e2e)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #76b347, #5e9e2e); | |||
background-image: -moz-linear-gradient(top, #76b347, #5e9e2e); | |||
background-image: -ms-linear-gradient(top, #76b347, #5e9e2e); | |||
background-image: -o-linear-gradient(top, #76b347, #5e9e2e); | |||
background-image: linear-gradient(top, #76b347, #5e9e2e); | |||
-webkit-box-shadow: inset 0 1px 0 0 #8dbf67; | |||
-moz-box-shadow: inset 0 1px 0 0 #8dbf67; | |||
-ms-box-shadow: inset 0 1px 0 0 #8dbf67; | |||
-o-box-shadow: inset 0 1px 0 0 #8dbf67; | |||
box-shadow: inset 0 1px 0 0 #8dbf67; | |||
cursor: pointer; } | |||
button.cupid-green:active { | |||
border: 1px solid #5b992b; | |||
border-bottom: 1px solid #538c27; | |||
-webkit-box-shadow: inset 0 0 8px 4px #548c29, 0 1px 0 0 #eeeeee; | |||
-moz-box-shadow: inset 0 0 8px 4px #548c29, 0 1px 0 0 #eeeeee; | |||
-ms-box-shadow: inset 0 0 8px 4px #548c29, 0 1px 0 0 #eeeeee; | |||
-o-box-shadow: inset 0 0 8px 4px #548c29, 0 1px 0 0 #eeeeee; | |||
box-shadow: inset 0 0 8px 4px #548c29, 0 1px 0 0 #eeeeee; } | |||
/* cupid blue (inspired by okcupid.com) | |||
*******************************************************************************/ | |||
button.cupid-blue { | |||
background-color: #d7e5f5; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d7e5f5), to(#cbe0f5)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #d7e5f5, #cbe0f5); | |||
background-image: -moz-linear-gradient(top, #d7e5f5, #cbe0f5); | |||
background-image: -ms-linear-gradient(top, #d7e5f5, #cbe0f5); | |||
background-image: -o-linear-gradient(top, #d7e5f5, #cbe0f5); | |||
background-image: linear-gradient(top, #d7e5f5, #cbe0f5); | |||
border-top: 1px solid #abbbcc; | |||
border-left: 1px solid #a7b6c7; | |||
border-bottom: 1px solid #a1afbf; | |||
border-right: 1px solid #a7b6c7; | |||
-webkit-border-radius: 12px; | |||
-moz-border-radius: 12px; | |||
-ms-border-radius: 12px; | |||
-o-border-radius: 12px; | |||
border-radius: 12px; | |||
-webkit-box-shadow: inset 0 1px 0 0 white; | |||
-moz-box-shadow: inset 0 1px 0 0 white; | |||
-ms-box-shadow: inset 0 1px 0 0 white; | |||
-o-box-shadow: inset 0 1px 0 0 white; | |||
box-shadow: inset 0 1px 0 0 white; | |||
color: #1a3e66; | |||
font: normal 11px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; | |||
line-height: 1; | |||
padding: 3px 5px; | |||
text-align: center; | |||
text-shadow: 0 1px 1px #fff; | |||
} | |||
button.cupid-blue:hover { | |||
background-color: #ccd9e8; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#ccd9e8), to(#c1d4e8)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #ccd9e8, #c1d4e8); | |||
background-image: -moz-linear-gradient(top, #ccd9e8, #c1d4e8); | |||
background-image: -ms-linear-gradient(top, #ccd9e8, #c1d4e8); | |||
background-image: -o-linear-gradient(top, #ccd9e8, #c1d4e8); | |||
background-image: linear-gradient(top, #ccd9e8, #c1d4e8); | |||
border-top: 1px solid #a1afbf; | |||
border-left: 1px solid #9caaba; | |||
border-bottom: 1px solid #96a3b3; | |||
border-right: 1px solid #9caaba; | |||
-webkit-box-shadow: inset 0 1px 0 0 #f2f2f2; | |||
-moz-box-shadow: inset 0 1px 0 0 #f2f2f2; | |||
-ms-box-shadow: inset 0 1px 0 0 #f2f2f2; | |||
-o-box-shadow: inset 0 1px 0 0 #f2f2f2; | |||
box-shadow: inset 0 1px 0 0 #f2f2f2; | |||
color: #163659; | |||
cursor: pointer; } | |||
button.cupid-blue:active { | |||
border: 1px solid #8c98a7; | |||
-webkit-box-shadow: inset 0 0 4px 2px #abbccf, 0 0 1px 0 #eeeeee; | |||
-moz-box-shadow: inset 0 0 4px 2px #abbccf, 0 0 1px 0 #eeeeee; | |||
-ms-box-shadow: inset 0 0 4px 2px #abbccf, 0 0 1px 0 #eeeeee; | |||
-o-box-shadow: inset 0 0 4px 2px #abbccf, 0 0 1px 0 #eeeeee; | |||
box-shadow: inset 0 0 4px 2px #abbccf, 0 0 1px 0 #eeeeee; } | |||
/* blue pill (inspired by iTunes) | |||
*******************************************************************************/ | |||
button.blue-pill { | |||
background-color: #a5b8da; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#a5b8da), to(#7089b3)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #a5b8da, #7089b3); | |||
background-image: -moz-linear-gradient(top, #a5b8da, #7089b3); | |||
background-image: -ms-linear-gradient(top, #a5b8da, #7089b3); | |||
background-image: -o-linear-gradient(top, #a5b8da, #7089b3); | |||
background-image: linear-gradient(top, #a5b8da, #7089b3); | |||
border-top: 1px solid #758fba; | |||
border-right: 1px solid #6c84ab; | |||
border-bottom: 1px solid #5c6f91; | |||
border-left: 1px solid #6c84ab; | |||
-webkit-border-radius: 18px; | |||
-moz-border-radius: 18px; | |||
-ms-border-radius: 18px; | |||
-o-border-radius: 18px; | |||
border-radius: 18px; | |||
-webkit-box-shadow: inset 0 1px 0 0 #aec3e5; | |||
-moz-box-shadow: inset 0 1px 0 0 #aec3e5; | |||
-ms-box-shadow: inset 0 1px 0 0 #aec3e5; | |||
-o-box-shadow: inset 0 1px 0 0 #aec3e5; | |||
box-shadow: inset 0 1px 0 0 #aec3e5; | |||
color: #fff; | |||
font: bold 11px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; | |||
line-height: 1; | |||
padding: 8px 0; | |||
text-align: center; | |||
text-shadow: 0 -1px 1px #64799e; | |||
text-transform: uppercase; | |||
} | |||
button.blue-pill:hover { | |||
background-color: #9badcc; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#9badcc), to(#687fa6)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #9badcc, #687fa6); | |||
background-image: -moz-linear-gradient(top, #9badcc, #687fa6); | |||
background-image: -ms-linear-gradient(top, #9badcc, #687fa6); | |||
background-image: -o-linear-gradient(top, #9badcc, #687fa6); | |||
background-image: linear-gradient(top, #9badcc, #687fa6); | |||
border-top: 1px solid #6d86ad; | |||
border-right: 1px solid #647a9e; | |||
border-bottom: 1px solid #546685; | |||
border-left: 1px solid #647a9e; | |||
-webkit-box-shadow: inset 0 1px 0 0 #a5b9d9; | |||
-moz-box-shadow: inset 0 1px 0 0 #a5b9d9; | |||
-ms-box-shadow: inset 0 1px 0 0 #a5b9d9; | |||
-o-box-shadow: inset 0 1px 0 0 #a5b9d9; | |||
box-shadow: inset 0 1px 0 0 #a5b9d9; | |||
cursor: pointer; } | |||
button.blue-pill:active { | |||
border: 1px solid #546685; | |||
-webkit-box-shadow: inset 0 0 8px 2px #7e8da6, 0 1px 0 0 #eeeeee; | |||
-moz-box-shadow: inset 0 0 8px 2px #7e8da6, 0 1px 0 0 #eeeeee; | |||
-ms-box-shadow: inset 0 0 8px 2px #7e8da6, 0 1px 0 0 #eeeeee; | |||
-o-box-shadow: inset 0 0 8px 2px #7e8da6, 0 1px 0 0 #eeeeee; | |||
box-shadow: inset 0 0 8px 2px #7e8da6, 0 1px 0 0 #eeeeee; } | |||
/* slick black | |||
*******************************************************************************/ | |||
button.slick-black { | |||
background-color: rgba(50, 50, 50, 0.9); | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(50, 50, 50, 0.9) 0%), to(rgba(30, 30, 30, 0.9) 50%)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, rgba(50, 50, 50, 0.9) 0%, rgba(30, 30, 30, 0.9) 50%, rgba(20, 20, 20, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: -moz-linear-gradient(top, rgba(50, 50, 50, 0.9) 0%, rgba(30, 30, 30, 0.9) 50%, rgba(20, 20, 20, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: -ms-linear-gradient(top, rgba(50, 50, 50, 0.9) 0%, rgba(30, 30, 30, 0.9) 50%, rgba(20, 20, 20, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: -o-linear-gradient(top, rgba(50, 50, 50, 0.9) 0%, rgba(30, 30, 30, 0.9) 50%, rgba(20, 20, 20, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: linear-gradient(top, rgba(50, 50, 50, 0.9) 0%, rgba(30, 30, 30, 0.9) 50%, rgba(20, 20, 20, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
border: 0; | |||
-webkit-border-radius: 4px; | |||
-moz-border-radius: 4px; | |||
-ms-border-radius: 4px; | |||
-o-border-radius: 4px; | |||
border-radius: 4px; | |||
-webkit-box-shadow: inset 1px 1px 1px 0px rgba(135, 135, 135, 0.1), inset -1px -1px 1px 0px rgba(135, 135, 135, 0.1); | |||
-moz-box-shadow: inset 1px 1px 1px 0px rgba(135, 135, 135, 0.1), inset -1px -1px 1px 0px rgba(135, 135, 135, 0.1); | |||
-ms-box-shadow: inset 1px 1px 1px 0px rgba(135, 135, 135, 0.1), inset -1px -1px 1px 0px rgba(135, 135, 135, 0.1); | |||
-o-box-shadow: inset 1px 1px 1px 0px rgba(135, 135, 135, 0.1), inset -1px -1px 1px 0px rgba(135, 135, 135, 0.1); | |||
box-shadow: inset 1px 1px 1px 0px rgba(135, 135, 135, 0.1), inset -1px -1px 1px 0px rgba(135, 135, 135, 0.1); | |||
color: #fff; | |||
font: lighter 22px "helvetica neue", helvetica, arial, sans-serif; | |||
line-height: 1; | |||
padding: 12px 0; | |||
text-shadow: 0px -1px 1px rgba(0, 0, 0, 0.8), 0 1px 1px rgba(255, 255, 255, 0.3); | |||
} | |||
button.slick-black:hover { | |||
background-color: rgba(70, 70, 70, 0.9); | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(70, 70, 70, 0.9) 0%), to(rgba(50, 50, 50, 0.9) 50%)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, rgba(70, 70, 70, 0.9) 0%, rgba(50, 50, 50, 0.9) 50%, rgba(40, 40, 40, 0.9) 50%, rgba(20, 20, 20, 0.9) 100%); | |||
background-image: -moz-linear-gradient(top, rgba(70, 70, 70, 0.9) 0%, rgba(50, 50, 50, 0.9) 50%, rgba(40, 40, 40, 0.9) 50%, rgba(20, 20, 20, 0.9) 100%); | |||
background-image: -ms-linear-gradient(top, rgba(70, 70, 70, 0.9) 0%, rgba(50, 50, 50, 0.9) 50%, rgba(40, 40, 40, 0.9) 50%, rgba(20, 20, 20, 0.9) 100%); | |||
background-image: -o-linear-gradient(top, rgba(70, 70, 70, 0.9) 0%, rgba(50, 50, 50, 0.9) 50%, rgba(40, 40, 40, 0.9) 50%, rgba(20, 20, 20, 0.9) 100%); | |||
background-image: linear-gradient(top, rgba(70, 70, 70, 0.9) 0%, rgba(50, 50, 50, 0.9) 50%, rgba(40, 40, 40, 0.9) 50%, rgba(20, 20, 20, 0.9) 100%); | |||
cursor: pointer; } | |||
button.slick-black:active { | |||
background-color: rgba(30, 30, 30, 0.9); | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(30, 30, 30, 0.9) 0%), to(rgba(20, 20, 20, 0.9) 50%)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, rgba(30, 30, 30, 0.9) 0%, rgba(20, 20, 20, 0.9) 50%, rgba(10, 10, 10, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: -moz-linear-gradient(top, rgba(30, 30, 30, 0.9) 0%, rgba(20, 20, 20, 0.9) 50%, rgba(10, 10, 10, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: -ms-linear-gradient(top, rgba(30, 30, 30, 0.9) 0%, rgba(20, 20, 20, 0.9) 50%, rgba(10, 10, 10, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: -o-linear-gradient(top, rgba(30, 30, 30, 0.9) 0%, rgba(20, 20, 20, 0.9) 50%, rgba(10, 10, 10, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); | |||
background-image: linear-gradient(top, rgba(30, 30, 30, 0.9) 0%, rgba(20, 20, 20, 0.9) 50%, rgba(10, 10, 10, 0.9) 50%, rgba(0, 0, 0, 0.9) 100%); } | |||
/* download itunes | |||
I wrote a blog post about creating this button: | |||
http://robots.thoughtbot.com/post/2718077289/make-css3-buttons-like-a-boss | |||
*******************************************************************************/ | |||
button.download-itunes { | |||
background-color: #52a8e8; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#52a8e8), to(#377ad0)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #52a8e8, #377ad0); | |||
background-image: -moz-linear-gradient(top, #52a8e8, #377ad0); | |||
background-image: -ms-linear-gradient(top, #52a8e8, #377ad0); | |||
background-image: -o-linear-gradient(top, #52a8e8, #377ad0); | |||
background-image: linear-gradient(top, #52a8e8, #377ad0); | |||
border-top: 1px solid #4081af; | |||
border-right: 1px solid #2e69a3; | |||
border-bottom: 1px solid #20559a; | |||
border-left: 1px solid #2e69a3; | |||
-webkit-border-radius: 16px; | |||
-moz-border-radius: 16px; | |||
-ms-border-radius: 16px; | |||
-o-border-radius: 16px; | |||
border-radius: 16px; | |||
-webkit-box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3; | |||
-moz-box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3; | |||
-ms-box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3; | |||
-o-box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3; | |||
box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3; | |||
color: #fff; | |||
font: normal 11px "lucida grande", sans-serif; | |||
line-height: 1; | |||
padding: 3px 5px; | |||
text-align: center; | |||
text-shadow: 0 -1px 1px #3275bc; | |||
width: 112px; | |||
-webkit-background-clip: padding-box; } | |||
button.download-itunes:hover { | |||
background-color: #3e9ee5; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3e9ee5 0%), to(#206bcb 100%)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #3e9ee5 0%, #206bcb 100%); | |||
background-image: -moz-linear-gradient(top, #3e9ee5 0%, #206bcb 100%); | |||
background-image: -ms-linear-gradient(top, #3e9ee5 0%, #206bcb 100%); | |||
background-image: -o-linear-gradient(top, #3e9ee5 0%, #206bcb 100%); | |||
background-image: linear-gradient(top, #3e9ee5 0%, #206bcb 100%); | |||
border-top: 1px solid #2a73a6; | |||
border-right: 1px solid #165899; | |||
border-bottom: 1px solid #07428f; | |||
border-left: 1px solid #165899; | |||
-webkit-box-shadow: inset 0 1px 0 0 #62b1e9; | |||
-moz-box-shadow: inset 0 1px 0 0 #62b1e9; | |||
-ms-box-shadow: inset 0 1px 0 0 #62b1e9; | |||
-o-box-shadow: inset 0 1px 0 0 #62b1e9; | |||
box-shadow: inset 0 1px 0 0 #62b1e9; | |||
cursor: pointer; | |||
text-shadow: 0 -1px 1px #1d62ab; | |||
-webkit-background-clip: padding-box; } | |||
button.download-itunes:active { | |||
background: #3282d3; | |||
border: 1px solid #154c8c; | |||
border-bottom: 1px solid #0e408e; | |||
-webkit-box-shadow: inset 0 0 6px 3px #1657b5, 0 1px 0 0 white; | |||
-moz-box-shadow: inset 0 0 6px 3px #1657b5, 0 1px 0 0 white; | |||
-ms-box-shadow: inset 0 0 6px 3px #1657b5, 0 1px 0 0 white; | |||
-o-box-shadow: inset 0 0 6px 3px #1657b5, 0 1px 0 0 white; | |||
box-shadow: inset 0 0 6px 3px #1657b5, 0 1px 0 0 white; | |||
text-shadow: 0 -1px 1px #2361a4; | |||
-webkit-background-clip: padding-box; } | |||
button[disabled].download-itunes, | |||
button[disabled].download-itunes:hover, | |||
button[disabled].download-itunes:active { | |||
background-color: #dadada; | |||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dadada), to(#f3f3f3)); | |||
/* Saf4+, Chrome */ | |||
background-image: -webkit-linear-gradient(top, #dadada, #f3f3f3); | |||
background-image: -moz-linear-gradient(top, #dadada, #f3f3f3); | |||
background-image: -ms-linear-gradient(top, #dadada, #f3f3f3); | |||
background-image: -o-linear-gradient(top, #dadada, #f3f3f3); | |||
background-image: linear-gradient(top, #dadada, #f3f3f3); | |||
border-top: 1px solid #c5c5c5; | |||
border-right: 1px solid #cecece; | |||
border-bottom: 1px solid #d9d9d9; | |||
border-left: 1px solid #cecece; | |||
-webkit-box-shadow: none; | |||
-moz-box-shadow: none; | |||
-ms-box-shadow: none; | |||
-o-box-shadow: none; | |||
box-shadow: none; | |||
color: #8f8f8f; | |||
cursor: not-allowed; | |||
text-shadow: 0 -1px 1px #ebebeb; } | |||
button.download-itunes::-moz-focus-inner { | |||
border: 0; | |||
padding: 0; } | |||
/* disabled button styles | |||
works with this markup: <button disabled="disabled">Submit</button> | |||
*******************************************************************************/ | |||
button[disabled], | |||
button[disabled]:hover, | |||
button[disabled]:active { | |||
background: #eee; | |||
border: 0; | |||
-webkit-box-shadow: none; | |||
-moz-box-shadow: none; | |||
-ms-box-shadow: none; | |||
-o-box-shadow: none; | |||
box-shadow: none; | |||
color: #aaa; | |||
cursor: not-allowed; | |||
text-shadow: none; } |
@@ -0,0 +1,82 @@ | |||
/* https://github.com/LearnBoost/CSS3-Overlay/ */ | |||
body.overlaid { | |||
-webkit-user-select: none; | |||
-moz-user-select: none; | |||
user-select: none; | |||
} | |||
body.overlaid div.overlay { | |||
-webkit-transform: translateY(0); | |||
-moz-transform: translateY(0); | |||
transform: translateY(0); | |||
} | |||
div.overlay { | |||
/* using display none to hide the overlay nullifies -webkit-transition */ | |||
-webkit-transform: translateY(-50000px); | |||
-moz-transform: translateY(-50000px); | |||
transform: translateY(-50000px); | |||
position: fixed; | |||
width: 100%; | |||
height: 100%; | |||
top: 0; | |||
left: 0; | |||
background: rgba(0,0,0,0.4); | |||
-webkit-user-select: auto; | |||
-moz-user-select: auto; | |||
user-select: auto; | |||
} | |||
div.overlay > div.wrap-outer { | |||
position: relative; | |||
width: 100%; | |||
height: 100%; | |||
display: -webkit-box; | |||
display: -moz-box; | |||
display: box; | |||
-webkit-box-orient: horizontal; | |||
-moz-box-orient: horizontal; | |||
box-orient: horizontal; | |||
-webkit-box-align: stretch; | |||
-moz-box-align: stretch; | |||
box-align: stretch; | |||
-webkit-box-pack: center; | |||
-moz-box-pack: center; | |||
box-pack: center; | |||
} | |||
div.overlay > div.wrap-outer > div.wrap { | |||
display: -webkit-box; | |||
display: -moz-box; | |||
display: box; | |||
-webkit-box-orient: vertical; | |||
-moz-box-orient: vertical; | |||
box-orient: vertical; | |||
-webkit-box-align: stretch; | |||
-moz-box-align: stretch; | |||
box-align: stretch; | |||
-webkit-box-pack: center; | |||
-moz-box-pack: center; | |||
box-pack: center; | |||
} | |||
div.overlay > div.wrap-outer > div.wrap > * { | |||
-webkit-box-flex: 0; | |||
-moz-box-flex: 0; | |||
box-flex: 0; | |||
display: block; | |||
} | |||
div.overlay > div.wrap-outer > div.wrap > div.dialog { | |||
padding: 21px; | |||
background-color: #fff; | |||
} |
@@ -0,0 +1,12 @@ | |||
div.status_bar_outer { | |||
background-color: rgba(0,0,0,0.1); | |||
border: 1px solid rgba(0,0,0,0.4); | |||
height: 21px; | |||
width: 240px; | |||
} | |||
div.status_bar_inner { | |||
background: #aaf; /* Old browsers */ | |||
height: 21px; | |||
width: 0%; | |||
} |