1
0
mirror of https://github.com/github/choosealicense.com synced 2024-12-22 12:50:24 +01:00

Merge branch 'gh-pages' into isc

This commit is contained in:
Juan Francisco Cantero Hurtado 2014-04-10 20:02:52 +02:00
commit 6e0cce18e1
120 changed files with 19294 additions and 1519 deletions

3
.bowerrc Normal file
View File

@ -0,0 +1,3 @@
{
"directory": "assets/vendor"
}

20
.gitattributes vendored
View File

@ -1,22 +1,2 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

178
.gitignore vendored
View File

@ -1,170 +1,10 @@
#################
## Eclipse
#################
*.pydevproject
.project
.metadata
bin/
tmp/
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
# External tool builders
.externalToolBuilders/
# Locally stored "Eclipse launch configurations"
*.launch
# CDT-specific
.cproject
# PDT-specific
.buildpath
#################
## Visual Studio
#################
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files
*.suo
*.user
*.sln.docstates
# Build results
[Dd]ebug/
[Rr]elease/
*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.vspscc
.builds
*.dotCover
## TODO: If you have NuGet Package Restore enabled, uncomment this
#packages/
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
# Visual Studio profiler
*.psess
*.vsp
# ReSharper is a .NET coding add-in
_ReSharper*
# Installshield output folder
[Ee]xpress
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish
# Others
[Bb]in
[Oo]bj
sql
TestResults
*.Cache
ClientBin
stylecop.*
~$*
*.dbmdl
Generated_Code #added for RIA/Silverlight projects
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
############
## Windows
############
# Windows image file caches
Thumbs.db
# Folder config file
Desktop.ini
#############
## Python
#############
*.py[co]
# Packages
*.egg
*.egg-info
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
#Translations
*.mo
#Mr Developer
.mr.developer.cfg
# Mac crap
.DS_Store
# .NET crap
.config
#jekyll
_site
node_modules
/_site
/node_modules
/.bundle
assets/vendor/zeroclipboard/docs
assets/vendor/zeroclipboard/src
assets/vendor/zeroclipboard/test
assets/vendor/selectivizr/tests
assets/vendor/qtip2/basic
/vendor

1
.ruby-version Normal file
View File

@ -0,0 +1 @@
2.0.0

View File

@ -4,5 +4,13 @@ script: "./script/cibuild"
#environment
language: ruby
rvm:
- 1.9.3
rvm:
- 2.0.0
branches:
only:
- gh-pages
- /.*/
notifications:
email: false

View File

@ -4,13 +4,13 @@ We love Pull Requests! Your contributions help make ChooseALicense.com great.
## Getting Started
So you want to contribute to ChooseALicense. Great! We welcome any help we can
get. But first, please make sure you understand what
So you want to contribute to ChooseALicense. Great! We welcome any help we can
get. But first, please make sure you understand what
[this site is all about](http://choosealicense.com/about).
Its not a comprehensive list of all possible licenses.
If you understand the goals of this site and still want to suggest a change,
If you understand the goals of this site and still want to suggest a change,
please:
* Make sure you have a [GitHub account](https://github.com/signup/free)
@ -20,13 +20,22 @@ please:
## Making Changes
The easiest way to make a change is to simply edit a file from your browser.
The easiest way to make a change is to simply edit a file from your browser.
When you click the edit button, it will fork the repository under your account.
Note what issue/issues your patch fixes in the commit message.
For example, to [change this file](https://github.com/github/choosealicense.com/blob/master/CONTRIBUTING.md),
find it in the GitHub repository. Then click the `Edit` button. Make your
For example, to [change this file](https://github.com/github/choosealicense.com/blob/master/CONTRIBUTING.md),
find it in the GitHub repository. Then click the `Edit` button. Make your
changes, type in a commit message, and click the `Propose File Change` button.
Thats it!
For more advanced changes, check out [the bootstrap instructions](https://github.com/github/choosealicense.com#run-it-on-your-machine) in the [project's readme](https://github.com/github/choosealicense.com/blob/master/README.md).
## Testing
[HTML::Proofer](https://github.com/gjtorikian/html-proofer) is set up to validate all links within the project. You can run this locally to ensure that your changes are valid:
```shell
./script/bootstrap
./script/cibuild
```

12
Gemfile
View File

@ -1,5 +1,9 @@
source 'https://rubygems.org'
source "https://rubygems.org"
ruby File.read(".ruby-version").strip
gem "jekyll", '=1.0.3'
gem 'liquid', '=2.5.0'
gem 'redcarpet', '=2.2.2'
gem "github-pages"
group :test do
gem "html-proofer"
gem "rake"
end

View File

@ -1,41 +1,81 @@
GEM
remote: https://rubygems.org/
specs:
classifier (1.3.3)
RedCloth (4.2.9)
blankslate (2.1.2.4)
classifier (1.3.4)
fast-stemmer (>= 1.0.0)
colorator (0.1)
commander (4.1.3)
colored (1.2)
commander (4.1.5)
highline (~> 1.6.11)
directory_watcher (1.4.1)
ethon (0.6.2)
ffi (>= 1.3.0)
mime-types (~> 1.18)
fast-stemmer (1.0.2)
highline (1.6.19)
jekyll (1.0.3)
ffi (1.9.3)
github-pages (12)
RedCloth (= 4.2.9)
jekyll (= 1.4.2)
kramdown (= 1.2.0)
liquid (= 2.5.4)
maruku (= 0.7.0)
rdiscount (= 2.1.7)
redcarpet (= 2.3.0)
highline (1.6.20)
html-proofer (0.4.1)
colored (~> 1.2)
mercenary (~> 0.2.0)
nokogiri (~> 1.6.0)
typhoeus (~> 0.6.7)
jekyll (1.4.2)
classifier (~> 1.3)
colorator (~> 0.1)
commander (~> 4.1.3)
directory_watcher (~> 1.4.1)
kramdown (~> 1.0.2)
liquid (~> 2.3)
maruku (~> 0.5)
liquid (~> 2.5.2)
listen (~> 1.3)
maruku (~> 0.7.0)
pygments.rb (~> 0.5.0)
safe_yaml (~> 0.7.0)
kramdown (1.0.2)
liquid (2.5.0)
maruku (0.6.1)
syntax (>= 1.0.0)
posix-spawn (0.3.6)
pygments.rb (0.5.1)
redcarpet (~> 2.3.0)
safe_yaml (~> 0.9.7)
toml (~> 0.1.0)
kramdown (1.2.0)
liquid (2.5.4)
listen (1.3.1)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
rb-kqueue (>= 0.2)
maruku (0.7.0)
mercenary (0.2.1)
mime-types (1.25.1)
mini_portile (0.5.2)
nokogiri (1.6.1)
mini_portile (~> 0.5.0)
parslet (1.5.0)
blankslate (~> 2.0)
posix-spawn (0.3.8)
pygments.rb (0.5.4)
posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.1.0)
redcarpet (2.2.2)
safe_yaml (0.7.1)
syntax (1.0.0)
rake (10.1.1)
rb-fsevent (0.9.4)
rb-inotify (0.9.3)
ffi (>= 0.5.0)
rb-kqueue (0.2.0)
ffi (>= 0.5.0)
rdiscount (2.1.7)
redcarpet (2.3.0)
safe_yaml (0.9.7)
toml (0.1.0)
parslet (~> 1.5.0)
typhoeus (0.6.7)
ethon (~> 0.6.2)
yajl-ruby (1.1.0)
PLATFORMS
ruby
DEPENDENCIES
jekyll (= 1.0.3)
liquid (= 2.5.0)
redcarpet (= 2.2.2)
github-pages
html-proofer
rake

View File

@ -1,4 +1,4 @@
Copyright (c) 2013 GitHub, Inc.
Copyright (c) 2014 GitHub, Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -16,4 +16,4 @@ 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.
THE SOFTWARE.

View File

@ -1,38 +1,44 @@
# Choose a License Web Site
# Choose a License Web Site [![Build Status](https://travis-ci.org/github/choosealicense.com.png?branch=gh-pages)](https://travis-ci.org/github/choosealicense.com)
Like a Choose Your Own Adventure site, but only much less interesting.
# Intro
A lot of repositories on GitHub.com don't have a license. GitHub provides
a license chooser, but if you don't know anything about licenses, how are you
supposed to make an informed decision.
a license chooser, but if you don't know anything about licenses, how are you
supposed to make an informed decision?
ChooseALicense.com is designed to help people make an informed decision about
licenses.
ChooseALicense.com is designed to help people make an informed decision about
licenses.
# Immediate Goals
* Politics Free - Let's just not get into it.
* Well designed, but that goes without saying.
* The homepage should have just enough to help 99% of folks make a decision.
* For the 1%, the site will contain a list of licenses common for specific
* For the 1%, the site will contain a list of licenses common to specific
communities and situations.
* Not comprehensive. Seems like an odd goal, but there are a bajillion
(I counted) licenses out there. We're going to have to filter that down to a
* Not comprehensive. Seems like an odd goal, but there are a bajillion
licenses out there. We're going to have to filter that down to a
small list of those that matter.
# Run It On Your Machine
1. `git clone https://github.com/github/choosealicense.com`
2. `cd choosealicense.com`
3. `script/bootstrap`
4. `script/server`
5. Open [localhost:4000](http://localhost:4000) in your favorite browser
```bash
git clone https://github.com/github/choosealicense.com.git
cd choosealicense.com
script/bootstrap
script/server
```
Open `http://localhost:4000` in your favorite browser.
# Adding a license
Licenses sit in the `/licenses` folder as markdown (`.md`) files. Each license has YAML front matter describing the license's properties. The body of the markdown file should be the text of the license. The available metadata fields are:
The text of the license should be wrapped to a 78 character width.
Licenses sit in the `/licenses` folder. Each license has YAML front matter
describing the license's properties. The body of the file should be the text
of the license in plain text. The available metadata fields are:
* `title` - The name of the license
* `layout` - This should be `license`
@ -43,7 +49,11 @@ Licenses sit in the `/licenses` folder as markdown (`.md`) files. Each license h
* `required`, `permitted`, `forbidden` - bulleted list of rules applicable to the license (see below)
* `filename` - The filename to be created on GitHub.com when a repository is initialized with this license.
The licenses on choosealicense.com are regularly imported to GitHub.com to be used as the list of licenses available when creating a repository. When we create a repository, we will replace certain strings in the license with variables from the repository. These can be used to create accurate copyright notices. The available variables are:
The licenses on choosealicense.com are regularly imported to GitHub.com to be
used as the list of licenses available when creating a repository. When we
create a repository, we will replace certain strings in the license with
variables from the repository. These can be used to create accurate copyright
notices. The available variables are:
* `[fullname]` - The full name or username of the repository owner
* `[login]` - The repository owner's username
@ -52,10 +62,19 @@ The licenses on choosealicense.com are regularly imported to GitHub.com to be us
* `[description]` - The description of the repository
* `[year]` - The current year
# Rules
# Rules
* Rules (the license's properties) are stored as a bulleted list within the licenses YAML front matter. A full list of rules can be found in the repository's `_config.yml` file. Each rule has a name e.g., `include-copyright`, a human-readable label, e.g., `Copyright inclusion`, and a description `Include the original copyright with the code`. To add a new rule, simply add it to config.yml and reference it in the appropriate license.
Rules (the license's properties) are stored as a bulleted list within the
licenses YAML front matter. A full list of rules can be found in the
repository's `_config.yml` file. Each rule has a name e.g.,
`include-copyright`, a human-readable label, e.g., `Copyright inclusion`,
and a description `Include the original copyright with the code`.
To add a new rule, simply add it to `config.yml` and reference it in the
appropriate license.
# License
The content of this project itself is licensed under the [Creative Commons Attribution 3.0 license](http://creativecommons.org/licenses/by/3.0/us/deed.en_US), and the underlying source code used to format and display that content is licensed under the [MIT license](http://opensource.org/licenses/mit-license.php).
The content of this project itself is licensed under the
[Creative Commons Attribution 3.0 license](http://creativecommons.org/licenses/by/3.0/us/deed.en_US),
and the underlying source code used to format and display that content
is licensed under the [MIT license](http://opensource.org/licenses/mit-license.php).

7
Rakefile Normal file
View File

@ -0,0 +1,7 @@
require "html/proofer"
task :test do
sh "bundle exec jekyll build --trace"
# ignore href="#" for the "Copy to clipboard" button
HTML::Proofer.new("./_site").run
end

View File

@ -1,67 +1,77 @@
---
title: ChooseALicense.com
relative_permalinks: false
markdown: redcarpet
markdown: kramdown
url: "http://choosealicense.com"
rules:
required:
include-copyright:
description: Include a copy of the license and copyright notice with the code.
label: License and copyright notice
document-changes:
description: Indicate significant changes made to the code.
label: State Changes
disclose-source:
description: Source code must be made available when distributing the software. In the case of LGPL, the source for the library (and not the entire program) must be made available.
label: Disclose Source
library-usage:
description: The library may be used within a non-open-source application.
label: Library usage
rename:
description: You must change the name of the software if you modify it.
label: Rename
- description: Include a copy of the license and copyright notice with the code.
label: License and copyright notice
tag: include-copyright
- description: Indicate significant changes made to the code.
label: State Changes
tag: document-changes
- description: Source code must be made available when distributing the software. In the case of LGPL, the source for the library (and not the entire program) must be made available.
label: Disclose Source
tag: disclose-source
- description: The library may be used within a non-open-source application.
label: Library usage
tag: library-usage
- description: You must change the name of the software if you modify it.
label: Rename
tag: rename
permitted:
commercial-use:
description: This software and derivatives may be used for commercial purposes.
label: Commercial Use
modifications:
description: This software may be modified.
label: Modification
distribution:
description: You may distribute this software.
label: Distribution
sublicense:
description: You may grant a sublicense to modify and distribute this software to third parties not included in the license.
label: Sublicensing
private-use:
description: You may use and modify the software without distributing it.
label: Private Use
patent-grant:
description: This license provides an express grant of patent rights from the contributor to the recipient.
label: Patent Grant
- description: This software and derivatives may be used for commercial purposes.
label: Commercial Use
tag: commercial-use
- description: This software may be modified.
label: Modification
tag: modifications
- description: You may distribute this software.
label: Distribution
tag: distribution
- description: You may grant a sublicense to modify and distribute this software to third parties not included in the license.
label: Sublicensing
tag: sublicense
- description: You may use and modify the software without distributing it.
label: Private Use
tag: private-use
- description: This license provides an express grant of patent rights from the contributor to the recipient.
label: Patent Grant
tag: patent-grant
forbidden:
trademark-use:
description: While this may be implicitly true of all licenses, this license explicitly states that you may NOT use the names, logos, or trademarks of contributors.
label: Use Trademark
no-liability:
description: Software is provided without warranty and the software author/license owner cannot be held liable for damages.
label: Hold Liable
no-sublicense:
description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license.
label: Sublicensing
modifications:
description: This software may not be modified.
label: Modification
distribution:
description: You may not distribute this software.
label: Distribution
sublicense:
description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license.
label: Sublicensing
- description: While this may be implicitly true of all licenses, this license explicitly states that you may NOT use the names, logos, or trademarks of contributors.
label: Use Trademark
tag: trademark-use
- description: Software is provided without warranty and the software author/license owner cannot be held liable for damages.
label: Hold Liable
tag: no-liability
- description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license.
label: Sublicensing
tag: no-sublicense
- description: This software may not be modified.
label: Modification
tag: modifications
- description: You may not distribute this software.
label: Distribution
tag: distribution
- description: You may not grant a sublicense to modify and distribute this software to third parties not included in the license.
label: Sublicensing
tag: sublicense
exclude:
- CNAME
- Gemfile*
- script
- app.coffee
- CNAME
- CONTRIBUTING.md
- Gemfile
- Gemfile.lock
- LICENSE.md
- licenses.json
- Rakefile
- README.md
- script
- bundle

View File

@ -1,5 +1,5 @@
{% unless page.hide_breadcrumbs == true %}
<ol class='breadcrumbs'>
<ol>
<li>
{% if page.layout == "license" %}
<a href="/">Home</a> / <a href="/licenses/">Licenses</a>

2
_includes/css/jquery.qtip.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
_includes/css/normalize.min.css vendored Normal file
View File

@ -0,0 +1 @@
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}

View File

@ -1,30 +1,27 @@
<footer class="site-footer cf">
<footer class="site-footer clearfix">
<nav>
<a href="/about/">About</a>
<a href="/terms-of-service/">Terms of Service</a>
</nav>
<p>
Please consult a legal expert before adopting a software license for your project.<br>
If you have questions or issues, it is always best to consult a legal professional.<br>
This site is licensed under the <a href="http://creativecommons.org/licenses/by/3.0/">
Creative Commons Attribution 3.0 Unported License</a>.</p>
Creative Commons Attribution 3.0 Unported License</a>.
</p>
<div id="with-♥">
<div class="with-love">
Demystified with &lt;3 by <a href="http://github.com">GitHub, Inc.</a>
</div>
</footer>
</div><!-- /container -->
</div> <!-- /container -->
<script type="text/javascript" src="/javascripts/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="/javascripts/jquery.qtip.min.js"></script>
{% if page.layout == "license" %}
<script type="text/javascript" src="/javascripts/ZeroClipboard.js"></script>
{% if page.layout == "license" or page.class == "license-types" %}
<script src="/assets/vendor/jquery/jquery.min.js"></script>
<script src="/assets/vendor/qtip2/jquery.qtip.min.js"></script>
<script src="/assets/vendor/zeroclipboard/ZeroClipboard.min.js"></script>
<script src="/assets/js/javascript.js"></script>
{% endif %}
<script type="text/javascript" src="/javascripts/annotations.js"></script>
<script type="text/javascript" src="/javascripts/app.js"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@ -36,4 +33,4 @@
</script>
</body>
</html>
</html>

View File

@ -1,33 +1,25 @@
<!DOCTYPE html>
<html lang='en'>
<html lang="en">
<head>
<title>{% if page.title %}{{ page.title }} - {% endif %}{{ site.title}}</title>
<meta charset='utf-8'>
<meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible'>
{% if page.description %}
<meta name="description" content="{{ page.description | strip_html }}">
{% endif %}
<link href='/favicon.ico' rel='shortcut icon' type='image/x-icon'>
<link href='http://fonts.googleapis.com/css?family=Chivo:900' rel='stylesheet' type='text/css'>
<link type="text/css" href="/css/application.css" media="screen" rel="stylesheet">
<link type="text/css" href="/css/jquery.qtip.css" media="screen" rel="stylesheet">
<script type="text/javascript" src="/javascripts/modernizr.js"></script>
<!--[if (gte IE 6)&(lte IE 8)]>
<script src='/javascripts/selectivizr-min.js' type='text/javascript'></script>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>{% if page.title %}{{ page.title | markdownify | strip_html | strip_newlines }} - {% endif %}{{ site.title}}</title>
{% if page.description %}<meta name="description" content="{{ page.description | strip_html | strip_newlines }}">{% endif %}
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Chivo:900">
<link rel="stylesheet" href="/assets/vendor/normalize-css/normalize.css">
<link rel="stylesheet" href="/assets/vendor/qtip2/jquery.qtip.min.css">
<link rel="stylesheet" href="/assets/css/application.css">
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
<!--[if lt IE 9]>
<script src="/assets/vendor/html5shiv/dist/html5shiv.js"></script>
<script src="/assets/vendor/selectivizr/selectivizr.js"></script>
<![endif]-->
</head>
<body class="{{ page.layout }} {{ page.class }}">
<div class='container'>
<body class="{{ page.layout }}{% if page.class %} {{ page.class }}{% endif %}">
<div class="container">
{% include breadcrumbs.html %}
{% if page.title %}
<h1>{{ page.title }}</h1>
<h1>{{ page.title | markdownify | strip_html | strip_newlines }}</h1>
{% endif %}

View File

@ -1,11 +1,9 @@
---
---
var annotations = {
{% for type_hash in site.rules %}
"{{ type_hash[0] }}": {
{% for rule_hash in type_hash[1] %}
"{{ rule_hash[0] }}" : "{{ rule_hash[1].description }}"{% if forloop.rindex0 > 0 %},{% endif %}
"{{ rule_hash.tag }}" : "{{ rule_hash.description }}"{% if forloop.rindex0 > 0 %},{% endif %}
{% endfor %}
}{% if forloop.rindex0 > 0 %},{% endif %}
{% endfor %}
}
};

View File

@ -3,23 +3,23 @@ class Choosealicense
# Checks if Flash is available in the client.
flashAvailable: ->
if ActiveXObject?
!!(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'))
!!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))
else
!!navigator.mimeTypes["application/x-shockwave-flash"]
# Selects the content of a given element
selectText: (element) ->
if document.body.createTextRange
range = document.body.createTextRange();
range.moveToElementText(element);
range.select();
range = document.body.createTextRange()
range.moveToElementText(element)
range.select()
else if window.getSelection
selection = window.getSelection()
range = document.createRange()
range.selectNodeContents(element)
selection.removeAllRanges();
selection.addRange(range);
selection.removeAllRanges()
selection.addRange(range)
# Qtip position attributes for tooltips
qtip_position:
@ -36,6 +36,7 @@ class Choosealicense
constructor: ->
@initTooltips()
@initClipboard()
@initLicenseVariationNav()
# Init tooltip action
initTooltips: ->
@ -60,15 +61,15 @@ class Choosealicense
# Initializes ZeroClipboard
initZeroClipboard: ->
# Backup the clipboard button's original text.
$(".js-clipboard-button").data "clipboard-prompt", $(".js-clipboard-button").text()
# Backup the clipboard button's original text.
$(".js-clipboard-button").data "clipboard-prompt", $(".js-clipboard-button").text()
# Hook up copy to clipboard buttons
clip = new ZeroClipboard $(".js-clipboard-button"),
moviePath: "/javascripts/ZeroClipboard.swf"
clip.on "mouseout", @clipboardMouseout
clip.on "complete", @clipboardComplete
clip
# Hook up copy to clipboard buttons
clip = new ZeroClipboard $(".js-clipboard-button"),
moviePath: "/assets/vendor/zeroclipboard/ZeroClipboard.swf"
clip.on "mouseout", @clipboardMouseout
clip.on "complete", @clipboardComplete
clip
# Initializes an alternative way to copy the license for non-flash compatible
# browsers
@ -92,5 +93,18 @@ class Choosealicense
clipboardComplete: (client, args) ->
@innerText = "Copied!"
# Initializes pill navigation for license variations
initLicenseVariationNav: ->
$(".js-nav-pills a").click (e) ->
selectedTab = $(this).data("selected-tab")
nav = $(this).closest(".js-nav-pills")
nav.find("li").removeClass("active")
nav.closest(".js-license-variations").siblings(".js-variation-tab").removeClass("active")
$(this).parent("li").addClass("active")
$("." + selectedTab).addClass("active")
e.preventDefault()
$ ->
new Choosealicense()

View File

@ -1,12 +1,11 @@
// Generated by CoffeeScript 1.4.0
// Generated by CoffeeScript 1.7.1
(function() {
var Choosealicense;
Choosealicense = (function() {
Choosealicense.prototype.flashAvailable = function() {
if (typeof ActiveXObject !== "undefined" && ActiveXObject !== null) {
return !!(new ActiveXObject('ShockwaveFlash.ShockwaveFlash'));
return !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"));
} else {
return !!navigator.mimeTypes["application/x-shockwave-flash"];
}
@ -41,6 +40,7 @@
function Choosealicense() {
this.initTooltips();
this.initClipboard();
this.initLicenseVariationNav();
}
Choosealicense.prototype.initTooltips = function() {
@ -75,7 +75,7 @@
var clip;
$(".js-clipboard-button").data("clipboard-prompt", $(".js-clipboard-button").text());
clip = new ZeroClipboard($(".js-clipboard-button"), {
moviePath: "/javascripts/ZeroClipboard.swf"
moviePath: "/assets/vendor/zeroclipboard/ZeroClipboard.swf"
});
clip.on("mouseout", this.clipboardMouseout);
clip.on("complete", this.clipboardComplete);
@ -83,12 +83,13 @@
};
Choosealicense.prototype.initAlternativeClipboard = function() {
var _this = this;
return $(".js-clipboard-button").click(function(e) {
var target;
target = "#" + $(e.target).data("clipboard-target");
return _this.selectText($(target)[0]);
});
return $(".js-clipboard-button").click((function(_this) {
return function(e) {
var target;
target = "#" + $(e.target).data("clipboard-target");
return _this.selectText($(target)[0]);
};
})(this));
};
Choosealicense.prototype.initClipboard = function() {
@ -107,6 +108,19 @@
return this.innerText = "Copied!";
};
Choosealicense.prototype.initLicenseVariationNav = function() {
return $(".js-nav-pills a").click(function(e) {
var nav, selectedTab;
selectedTab = $(this).data("selected-tab");
nav = $(this).closest(".js-nav-pills");
nav.find("li").removeClass("active");
nav.closest(".js-license-variations").siblings(".js-variation-tab").removeClass("active");
$(this).parent("li").addClass("active");
$("." + selectedTab).addClass("active");
return e.preventDefault();
});
};
return Choosealicense;
})();

View File

@ -0,0 +1,55 @@
<div class="license-family clearfix">
<div class="license-family-heading">
<h3 class="license-family-name"><a href="{{ page.permalink }}">{% if page.category %}{{ page.category }}{% else %}{{ page.title }}{% endif %}</a></h3>
<p class="license-family-description">{{ page.description }}</p>
</div>
<div class="license-details">
<div class="license-variations js-license-variations">
<!-- always show this div, even w/o variations, for proper spacing -->
{% if page.tab-slug %}
<ul class="nav-pills js-nav-pills">
{% for variation in site.pages %}
{% if variation.category and variation.category == page.category %}
<li{% if page.tab-slug == variation.tab-slug %} class="active"{% endif %}><a href="#{{ variation.tab-slug }}" data-selected-tab="variation-{{ variation.tab-slug }}">{{ variation.title }}</a></li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
</div>
{% for variation in site.pages %}
{% if variation.category and variation.category == page.category %}
<div {% if variation.tab-slug %}id="{{ variation.tab-slug }}" {% endif %}class="variation-tab {% if variation.tab-slug %}variation-{{ variation.tab-slug }}{% endif %} js-variation-tab{% if page.tab-slug == variation.tab-slug %} active{% endif %}">
<table class="license-rules">
<tr>
{% assign types = "required|permitted|forbidden" | split: "|" %}
{% for type in types %}
<th class="label">{{ type | capitalize }}</th>
{% endfor %}
</tr>
<tr>
{% for type in types %}
<td>
<ul class="license-{{ type }}">
{% assign rules = site.rules[type] | sort: "label" %}
{% for rule_obj in rules %}
{% assign req = rule_obj.tag %}
{% if variation[type] contains req %}
<li class="{{ req }}">
<span class="license-sprite"></span>
{{ rule_obj.label }}
</li>
{% endif %}
{% endfor %}
</ul>
</td>
{% endfor %}
</tr>
</table>
<p class="small"><a href="{{ variation.permalink }}">View full {{ variation.title }} license »</a></p>
</div>
{% endif %}
{% endfor %}
</div>
</div>

View File

@ -1,46 +1,56 @@
<div class='sidebar'>
<div class="sidebar">
<a href="#" data-clipboard-target="license-text" class="js-clipboard-button button">Copy license text to clipboard</a>
<div class='how-to-apply callout'>
<h5>How to apply this license</h5>
<p>
{{ page.how }}
</p>
{% if page.note %}
<p class="note">
<strong>Note: </strong> {{ page.note }}
</p>
{% endif %}
</div>
<div class="source">
<a href="{{ page.source}}">Source</a>
</div>
<div class="license-rules license-rules-sidebar">
{% assign types = "required|permitted|forbidden" | split: "|" %}
{% for type in types %}
<h3>{{ type | capitalize }}</h3>
<ul class="license-{{ type }}">
{% for req in page[type] %}
<li class="{{ req }}">{{ site.rules[type][req].label }}</li>
{% endfor %}
</ul>
{% endfor %}
</div>
{% if page.using %}
<div class="projects-with-license">
<h3>Who's using this license?</h3>
<ul>
{% for using_hash in page.using %}
{% for using in using_hash %}
<li><a href="{{ using[1] }}" target="_blank">{{ using[0] }}</a></li>
{% endfor %}
{% endfor %}
</ul>
</div>
<a href="#" data-clipboard-target="license-text" data-proofer-ignore="true" class="js-clipboard-button button">Copy license text to clipboard</a>
<div class="how-to-apply">
<h5>How to apply this license</h5>
<p>
{{ page.how }}
</p>
{% if page.note %}
<p class="note">
<strong>Note: </strong> {{ page.note }}
</p>
{% endif %}
</div><!-- /sidebar -->
</div>
{% if page.source %}
<div class="source">
<a href="{{ page.source }}">
<span class="license-sprite"></span>
Source
</a>
</div>
{% endif %}
<div class="license-rules license-rules-sidebar">
{% assign types = "required|permitted|forbidden" | split: "|" %}
{% for type in types %}
<h3>{{ type | capitalize }}</h3>
<ul class="license-{{ type }}">
{% assign rules = site.rules[type] | sort: "label" %}
{% for rule_obj in rules %}
{% assign req = rule_obj.tag %}
{% if page[type] contains req %}
<li class="{{ req }}">
<span class="license-sprite"></span>
{{ rule_obj.label }}
</li>
{% endif %}
{% endfor %}
</ul>
{% endfor %}
</div>
{% if page.using %}
<div class="projects-with-license">
<h3>Who's using this license?</h3>
<ul>
{% for using in page.using %}
<li><a href="{{ using[1] }}" target="_blank">{{ using[0] }}</a></li>
{% endfor %}
</ul>
</div>
{% endif %}
</div> <!-- /sidebar -->

View File

@ -1,16 +1,12 @@
{% include header.html %}
<div class="cf">
<div class='license-body'>
<pre id="license-text">
{{ content | replace:"<","[" | replace:">","]" }}
</pre><!-- /license-text -->
</div><!-- /license-body -->
<div class="clearfix">
<div class="license-body">
<pre id="license-text">{{ content | replace:"<", "&lt;" | replace:">", "&gt;" }}</pre>
</div> <!-- /license-body -->
{% include sidebar.html %}
</div><!-- /cf -->
</div> <!-- /clearfix -->
{% include footer.html %}

View File

@ -2,23 +2,37 @@
title: About
layout: default
permalink: /about/
title: What&#8217;s this about?
title: What's this about?
---
GitHub wants to help developers choose a license for their source code.
If you already know what you&#8217;re doing and have a license you prefer to use, that&#8217;s great! We&#8217;re not here to change your mind. But if you are bewildered by the large number of OSS license choices, maybe we can help.
If you already know what you're doing and have a license you prefer to use, that's great! We're not here to change your mind. But if you are bewildered by the large number of OSS license choices, maybe we can help.
## Not comprehensive
This site is not a comprehensive directory of open source licenses. If you&#8217;re looking for a comprehensive list, we recommend the <a href="http://opensource.org/licenses/">Open Source Initiative</a> website.
This site is not a comprehensive directory of open source licenses. We think there are too many options, which adds to the confusion. On the homepage, we break it down into just three licenses. The vast majority of projects will likely be fine choosing from one of these three. Just in case you have specific needs not covered by those three, we also highlight a [few other licenses to consider](/licenses/).
We think there are too many options, which adds to the confusion. On the homepage, we break it down into just three licenses. The vast majority of projects will likely be fine choosing from one of these three. Just in case you have specific needs not covered by those three, we also highlight a [few other licenses to consider](/licenses/).
### Additional resources
* [Open Source Initiative](http://opensource.org/licenses/) - comprehensive list of open source licenses
* [Comparison of free and open-source software licenses](http://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses) on Wikipedia
* [License differentiator](http://www.oss-watch.ac.uk/apps/licdiff/) from [OSS Watch](http://www.oss-watch.ac.uk/)
* [TLDRLegal](https://tldrlegal.com/)
{: .bullets}
### Tools
* [gem-licenses](https://github.com/dblock/gem-licenses)
* [LicenseFinder](https://github.com/pivotal/LicenseFinder)
* [License Maven Plugin](http://mojo.codehaus.org/license-maven-plugin/)
* [AddALicense.com](http://www.addalicense.com/)
{: .bullets}
## Help us improve it
Choosealicense.com isn&#8217;t just about open source, the site itself is open source as well. See something you think could be done better? Feel free to [fork the project](https://github.com/github/choosealicense.com) on GitHub and submit a pull request. We'd welcome your improvements.
Choosealicense.com isn't just about open source, the site itself is open source as well. See something you think could be done better? Feel free to [fork the project](https://github.com/github/choosealicense.com) on GitHub and submit a pull request. We'd welcome your improvements.
## Disclaimer
We are not lawyers. Well most of us anyways. It is not the goal of this site to provide legal advice. The goal of this site is to provide a starting point to help you make an informed choice by providing information on popular open source licenses. If you have any questions regarding the right license for your code or any other legal issues relating to it, it&#8217;s always best to consult with a professional.
We are not lawyers. Well, most of us anyway. It is not the goal of this site to provide legal advice. The goal of this site is to provide a starting point to help you make an informed choice by providing information on popular open source licenses. If you have any questions regarding the right license for your code or any other legal issues relating to it, it's always best to consult with a professional.

View File

@ -1,65 +1,7 @@
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: inherit;
font-size: 100%;
vertical-align: baseline;
}
html {
line-height: 1;
}
ol, ul {
list-style: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
caption, th, td {
text-align: left;
font-weight: normal;
vertical-align: middle;
}
q, blockquote {
quotes: none;
}
q:before, q:after, blockquote:before, blockquote:after {
content: "";
content: none;
}
a img {
border: none;
}
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary {
display: block;
}
body {
background: #f5f1ec url(../images/bg.jpg);
background-image: url(../img/bg.jpg);
color: #5c5855;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px;
line-height: 1.4;
font: 14px/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif;
}
a {
@ -67,10 +9,298 @@ a {
font-weight: bold;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
h1, h2, h3, h5 {
color: #443a33;
font-family: Chivo, "Helvetica Neue", Helvetica, Arial, serif;
font-weight: 900;
line-height: 1.1;
}
h1 {
font-size: 40px;
margin-bottom: 25px;
}
h2 {
opacity: 0.8;
font-size: 24px;
margin-top: 24px;
margin-bottom: 10px;
}
h3 {
font-size: 15px;
margin-top: 20px;
margin-bottom: 10px;
}
h5 {
font-size: 14px;
margin-bottom: 15px;
}
p {
margin-bottom: 1em;
}
ol, ul { padding: 0; margin: 0; list-style-type: none; }
th, td { text-align: left; font-weight: normal; }
strong {
color: #443b34;
}
.container {
margin: 40px auto;
width: 940px;
}
.home {
text-align: center;
}
.home h1 {
font-size: 63px;
}
.home h2 {
color: #149ad4;
font-size: 27px;
line-height: 70px;
margin-bottom: 45px;
vertical-align: middle;
opacity: 1;
}
.home h2 span {
color: #e9e6e2;
font-size: 70px;
padding: 0 5px;
position: relative;
top: 10px;
}
.triptych {
width: 900px;
margin: 0 auto 20px;
}
.triptych li {
width: 280px;
float: left;
margin-left: 27px;
}
.triptych li:first-child {
margin-left: 0;
}
.triptych li > a {
text-decoration: none;
}
.triptych h3 {
font-size: 22px;
margin: 0 auto 20px auto;
width: 220px;
}
.situations .whatever {
margin-top: 16px;
}
.situations .copyleft {
margin-top: 3px;
}
.situations .button {
margin-top: 20px;
}
.triptych-sprite {
background-image: url(../img/home-sprite.png);
background-repeat: no-repeat;
display: inline-block;
}
.three-arrows { background-position: 0 0; width: 72px; height: 57px; }
.lightbulb { background-position: 0 -57px; width: 43px; height: 72px; }
.circular { background-position: 0 -129px; width: 72px; height: 69px; }
.license-family {
clear: both;
margin-bottom: 50px;
}
.license-family-heading {
float: left;
width: 35%;
}
.license-details {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
float: left;
width: 55%;
padding-left: 20px;
}
.license-variations {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 31px;
padding-top: 23px;
margin-left: -10px;
}
.license-family-name {
font-size: 28px;
}
.license-family-description {
color: #5c5855;
}
.license-rules {
border-bottom: solid 1px #d9d7d2;
font-size: 13px;
line-height: 1.3;
margin-bottom: 12px;
width: 100%;
}
.license-rules th,
.license-rules td {
width: 33%;
}
.license-rules th {
font-size: 15px;
padding: 5px 10px 5px 0;
vertical-align: bottom;
}
.license-rules th.summary {
line-height: 1.4;
}
.license-rules .name {
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
box-sizing: content-box;
border-right: solid 1px #d9d7d2;
padding-left: 0;
width: 280px;
}
.license-rules .name a {
font-size: 28px;
}
.license-rules .name small a {
font-size: 16px;
}
.license-rules td {
padding: 4px 0 12px 0;
vertical-align: top;
}
.license-rules .label {
font-weight: bold;
}
.license-rules li {
margin-right: 15px;
margin-bottom: 5px;
}
.license-rules li:hover {
color: #443a33;
}
.license-sprite {
background-image: url(../img/license-sprite.png);
background-repeat: no-repeat;
display: inline-block;
}
.sidebar .source span { background-position: 0 0; width: 16px; height: 12px; }
.license-forbidden span { background-position: -16px 0; width: 12px; height: 12px; }
.license-permitted span { background-position: -28px 0; width: 12px; height: 12px; }
.license-required span { background-position: -40px 0; width: 12px; height: 12px; }
.license-rules-sidebar li {
float: none;
padding-bottom: 3px;
}
.license-body {
font-size: 15px;
float: left;
width: 700px;
}
.license-body pre {
font-family: Consolas, Monaco, Courier, monospace;
font-size: 14px;
background-color: #fff;
background-color: rgba(255, 255, 255, 0.8);
border: 1px solid #e9e6e1;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-ms-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
padding: 20px;
}
.sidebar {
float: right;
width: 220px;
font-size: 12px;
}
.sidebar a.button {
margin-top: -110px;
width: 100%;
}
.sidebar .how-to-apply {
font-size: 12px;
margin-top: -15px;
}
.sidebar .how-to-apply p {
line-height: 1.5;
}
.sidebar .how-to-apply p:last-child {
margin-bottom: 0;
}
.sidebar .note {
font-style: italic;
}
.sidebar .source {
margin-top: 4px;
margin-bottom: 30px;
}
.sidebar .boilerplate {
font: 0.7em "Courier new", courier;
}
.button {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
@ -92,17 +322,14 @@ a:hover {
background-image: -moz-linear-gradient(#e7e5e0, #d5d3cf);
background-image: -o-linear-gradient(#e7e5e0, #d5d3cf);
background-image: linear-gradient(#e7e5e0, #d5d3cf);
display: -moz-inline-stack;
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*display: inline;
font-size: 12px;
font-weight: normal;
padding: 5px 10px;
text-align: center;
vertical-align: middle;
}
.button:hover {
text-decoration: none;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e5e0), color-stop(100%, #d0ceca));
@ -112,265 +339,6 @@ a:hover {
background-image: linear-gradient(#e7e5e0, #d0ceca);
}
h1 {
color: #443a33;
font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 40px;
font-weight: 900;
line-height: 1.1;
margin-bottom: 25px;
}
h2 {
color: #443a33;
font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 18px;
font-weight: 900;
line-height: 1.1;
margin-top: 24px;
margin-bottom: 10px;
}
h3 {
color: #443a33;
font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 15px;
font-weight: 900;
line-height: 1.1;
margin-top: 20px;
margin-bottom: 10px;
}
h5 {
color: #443a33;
font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 14px;
font-weight: 900;
line-height: 1.1;
margin-bottom: 15px;
}
p {
margin-bottom: 1em;
}
strong {
color: #443b34;
font-weight: bold;
}
.container {
margin: 40px auto;
width: 900px;
}
.home {
padding-top: 20px;
text-align: center;
}
.home h1 {
font-size: 63px;
line-height: 1.1;
margin-bottom: 25px;
}
.home h2 {
color: #149ad4;
font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 27px;
font-weight: 900;
line-height: 70px;
margin-bottom: 45px;
vertical-align: middle;
}
.home h2 span {
color: #e9e6e2;
font-size: 70px;
padding: 0 5px;
position: relative;
top: 10px;
}
.situations {
width: 900px;
margin: 0 auto;
}
.situations li {
width: 280px;
float: left;
margin-left: 27px;
text-align: center;
}
.situations .whatever {
margin-left: 0;
margin-top: 16px;
}
.situations .copyleft {
margin-top: 3px;
}
.situations h3 {
margin: 0 auto 20px auto;
width: 220px;
}
.situations h3 a {
text-decoration: none;
color: #443a33;
font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 22px;
font-weight: 900;
line-height: 1.1;
}
.situations .button {
margin-top: 20px;
}
.callout {
background-color: rgba(255, 255, 255, 0.33);
border: solid 1px #e9e6e1;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
-ms-border-radius: 3px;
-o-border-radius: 3px;
border-radius: 3px;
color: #5c5855;
padding: 16px;
}
.see-more {
margin-top: 20px;
display: inline-block;
padding-left: 80px;
padding-right: 80px;
font-weight: bold;
}
.see-more p:last-child {
margin-bottom: 0.3em;
}
.license-rules {
font-size: 13px;
line-height: 1.3;
margin-bottom: 40px;
width: 100%;
}
.license-rules th {
border-bottom: solid 1px #d9d7d2;
padding: 5px 10px 12px 10px;
vertical-align: bottom;
}
.license-rules th.summary {
line-height: 1.4;
}
.license-rules .name {
border-right: solid 1px #d9d7d2;
padding-left: 0;
width: 280px;
}
.license-rules .name a {
font-family: 'Chivo', 'Helvetica Neue', Helvetica, Arial, serif;
font-size: 28px;
font-weight: 900;
line-height: 1.1;
}
.license-rules .name small a {
font-size: 16px;
}
.license-rules .summary {
color: #5c5855;
}
.license-rules td {
border-bottom: solid 1px #e9e6e2;
padding: 4px 10px;
}
.license-rules .label {
border-right: solid 1px #d9d7d2;
font-weight: bold;
}
.license-rules li {
background-position: 0 1px;
background-repeat: no-repeat;
background-size: 12px 12px;
float: left;
display: -moz-inline-stack;
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
zoom: 1;
*display: inline;
margin-right: 15px;
padding-left: 16px;
}
.license-rules li:hover {
color: #443a33;
}
.license-required li {
background-image: url(../images/blue-dot@2x.png);
}
.license-permitted li {
background-image: url(../images/green-dot@2x.png);
}
.license-forbidden li {
background-image: url(../images/red-dot@2x.png);
}
.license-rules tr:nth-child(2n) td {
background-color: rgba(0, 0, 0, 0.02);
}
.license-rules-sidebar li {
float: none;
display: block;
padding-bottom: 3px;
}
.license-body {
font-size: 15px;
float: left;
width: 660px;
}
.license-body pre {
font-family: Consolas, Monaco, Courier, monospace;
font-size: 14px;
}
.sidebar {
float: right;
width: 220px;
font-size: 12px;
}
.sidebar a.button {
margin-top: -110px;
width: 100%;
}
.sidebar .how-to-apply {
font-size: 12px;
margin-top: -15px;
}
.sidebar .how-to-apply p {
line-height: 1.5;
}
.sidebar .how-to-apply p:last-child {
margin-bottom: 0;
}
.sidebar .note {
font-style: italic;
}
.sidebar .source {
margin-top: 4px;
}
.sidebar .source a {
padding-left: 20px;
background: transparent url(../images/source@2x.png) 0 1px no-repeat;
background-size: 16px 12px;
}
.sidebar .boilerplate {
font-family: 'courier new', courier;
font-size: 0.7em;
}
.projects-with-license li {
padding-bottom: 3px;
}
@ -384,84 +352,136 @@ strong {
text-align: left;
line-height: 1.5;
}
.site-footer a {
color: #443a33;
font-weight: normal;
}
.site-footer p {
float: left;
margin-top: 0;
}
.site-footer nav {
float: right;
}
.site-footer nav a {
display: inline-block;
margin-left: 20px;
}
.bullets {
margin-bottom: 1em;
list-style-type: disc;
}
.bullets li {
list-style: disc;
.bullets > li {
margin-left: 2em;
}
/* Qtip styles */
.qtip-required {
background-color: #d0ebf6 ! important;
border-color: #149ad4 ! important;
color: #0d648a ! important;
font-size: 12px ! important;
line-height: 1.3 ! important;
.nav-pills > li {
float: left;
display: block;
margin-right: 10px;
}
.qtip-required .qtip-titlebar{
background-color: #149ad4 ! important;
color: #fff ! important;
.nav-pills > li > a {
padding: 5px 10px;
border-radius: 3px;
}
.nav-pills > li.active > a {
background-color: #149ad4;
color: #f7f4ef;
}
.variation-tab {
display: none;
}
.variation-tab.active {
display: block;
}
.small {
font-size: 90%;
}
/* Qtip styles */
.qtip-required,
.qtip-permitted,
.qtip-forbidden {
font-size: 12px;
line-height: 1.3;
}
.qtip-required {
background-color: #d0ebf6;
border-color: #149ad4;
color: #0d648a;
}
.qtip-required .qtip-titlebar {
background-color: #149ad4;
color: #fff;
}
.qtip-permitted {
background-color: #d8f4d7 ! important;
border-color: #3dc637 ! important;
color: #298625 ! important;
font-size: 12px ! important;
line-height: 1.3 ! important;
background-color: #d8f4d7;
border-color: #3dc637;
color: #298625;
}
.qtip-permitted .qtip-titlebar{
background-color: #3dc637 ! important;
color: #fff ! important;
.qtip-permitted .qtip-titlebar {
background-color: #3dc637;
color: #fff;
}
.qtip-forbidden {
background-color: #f4d9d8 ! important;
border-color: #c6403d ! important;
color: #812a28 ! important;
font-size: 12px ! important;
line-height: 1.3 ! important;
background-color: #f4d9d8;
border-color: #c6403d;
color: #812a28;
}
.qtip-forbidden .qtip-titlebar{
background-color: #c6403d ! important;
color: #fff ! important;
.qtip-forbidden .qtip-titlebar {
background-color: #c6403d;
color: #fff;
}
/* For modern browsers */
.cf:before,
.cf:after {
content:"";
display:table;
.clearfix:before,
.clearfix:after {
content: "";
display: table;
}
.cf:after {
clear:both;
.clearfix:after {
clear: both;
}
/* For IE 6/7 (trigger hasLayout) */
.cf {
zoom:1;
}
.with-love { float: right; clear: right; }
#with- { float: right; clear: right;}
@media only screen and (-webkit-min-device-pixel-ratio: 2.0),
only screen and (min--moz-device-pixel-ratio: 2.0),
only screen and (-o-min-device-pixel-ratio: 200/100),
only screen and (min-device-pixel-ratio: 2.0) {
.three-arrows,
.lightbulb,
.circular {
background-image: url(../img/home-sprite@2x.png);
-webkit-background-size: 72px 198px;
-moz-background-size: 72px 198px;
background-size: 72px 198px;
}
.license-sprite {
background-image: url(../img/license-sprite@2x.png);
-webkit-background-size: 52px 12px;
-moz-background-size: 52px 12px;
background-size: 52px 12px;
}
}

BIN
assets/img/bg.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
assets/img/home-sprite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

6
assets/js/javascript.js Normal file
View File

@ -0,0 +1,6 @@
---
layout: nil
---
{% include js/annotations.js %}
{% include js/app.js %}

26
assets/vendor/html5shiv/.bower.json vendored Normal file
View File

@ -0,0 +1,26 @@
{
"name": "html5shiv",
"version": "3.7.0",
"main": [
"dist/html5shiv.js",
"dist/html5shiv-printshiv.js"
],
"ignore": [
"**/.*",
"*.json",
"test",
"build",
"src",
"build.xml"
],
"homepage": "https://github.com/aFarkas/html5shiv",
"_release": "3.7.0",
"_resolution": {
"type": "version",
"tag": "3.7.0",
"commit": "a4d4dcbe0875ba10c4c56c54454ae93031d59584"
},
"_source": "git://github.com/aFarkas/html5shiv.git",
"_target": "~3.7.0",
"_originalSource": "html5shiv"
}

View File

@ -0,0 +1,11 @@
/*
HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(j,f){function s(a,b){var c=a.createElement("p"),m=a.getElementsByTagName("head")[0]||a.documentElement;c.innerHTML="x<style>"+b+"</style>";return m.insertBefore(c.lastChild,m.firstChild)}function o(){var a=d.elements;return"string"==typeof a?a.split(" "):a}function n(a){var b=t[a[u]];b||(b={},p++,a[u]=p,t[p]=b);return b}function v(a,b,c){b||(b=f);if(e)return b.createElement(a);c||(c=n(b));b=c.cache[a]?c.cache[a].cloneNode():y.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);
return b.canHaveChildren&&!z.test(a)?c.frag.appendChild(b):b}function A(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();a.createElement=function(c){return!d.shivMethods?b.createElem(c):v(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+o().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(d,b.frag)}
function w(a){a||(a=f);var b=n(a);if(d.shivCSS&&!q&&!b.hasCSS)b.hasCSS=!!s(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}");e||A(a,b);return a}function B(a){for(var b,c=a.attributes,m=c.length,f=a.ownerDocument.createElement(l+":"+a.nodeName);m--;)b=c[m],b.specified&&f.setAttribute(b.nodeName,b.nodeValue);f.style.cssText=a.style.cssText;return f}function x(a){function b(){clearTimeout(d._removeSheetTimer);
c&&c.removeNode(!0);c=null}var c,f,d=n(a),e=a.namespaces,j=a.parentWindow;if(!C||a.printShived)return a;"undefined"==typeof e[l]&&e.add(l);j.attachEvent("onbeforeprint",function(){b();var g,i,d;d=a.styleSheets;for(var e=[],h=d.length,k=Array(h);h--;)k[h]=d[h];for(;d=k.pop();)if(!d.disabled&&D.test(d.media)){try{g=d.imports,i=g.length}catch(j){i=0}for(h=0;h<i;h++)k.push(g[h]);try{e.push(d.cssText)}catch(n){}}g=e.reverse().join("").split("{");i=g.length;h=RegExp("(^|[\\s,>+~])("+o().join("|")+")(?=[[\\s,>+~#.:]|$)",
"gi");for(k="$1"+l+"\\:$2";i--;)e=g[i]=g[i].split("}"),e[e.length-1]=e[e.length-1].replace(h,k),g[i]=e.join("}");e=g.join("{");i=a.getElementsByTagName("*");h=i.length;k=RegExp("^(?:"+o().join("|")+")$","i");for(d=[];h--;)g=i[h],k.test(g.nodeName)&&d.push(g.applyElement(B(g)));f=d;c=s(a,e)});j.attachEvent("onafterprint",function(){for(var a=f,c=a.length;c--;)a[c].removeNode();clearTimeout(d._removeSheetTimer);d._removeSheetTimer=setTimeout(b,500)});a.printShived=!0;return a}var r=j.html5||{},z=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
y=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q,u="_html5shiv",p=0,t={},e;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";q="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}e=b}catch(d){e=q=!0}})();var d={elements:r.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",
version:"3.7.0",shivCSS:!1!==r.shivCSS,supportsUnknownElements:e,shivMethods:!1!==r.shivMethods,type:"default",shivDocument:w,createElement:v,createDocumentFragment:function(a,b){a||(a=f);if(e)return a.createDocumentFragment();for(var b=b||n(a),c=b.frag.cloneNode(),d=0,j=o(),l=j.length;d<l;d++)c.createElement(j[d]);return c}};j.html5=d;w(f);var D=/^$|\b(?:all|print)\b/,l="html5shiv",C=!e&&function(){var a=f.documentElement;return!("undefined"==typeof f.namespaces||"undefined"==typeof f.parentWindow||
"undefined"==typeof a.applyElement||"undefined"==typeof a.removeNode||"undefined"==typeof j.attachEvent)}();d.type+=" print";d.shivPrint=x;x(f)})(this,document);

View File

@ -0,0 +1,8 @@
/*
HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);

143
assets/vendor/html5shiv/readme.md vendored Normal file
View File

@ -0,0 +1,143 @@
# The HTML5 Shiv
The HTML5 Shiv enables use of HTML5 sectioning elements in legacy Internet Explorer and provides basic HTML5 styling for Internet Explorer 6-9, Safari 4.x (and iPhone 3.x), and Firefox 3.x.
### What do these files do?
#### `html5shiv.js`
* This includes the basic `createElement()` shiv technique, along with monkeypatches for `document.createElement` and `document.createDocumentFragment` for IE6-8. It also applies [basic styling](https://github.com/aFarkas/html5shiv/blob/51da98dabd3c537891b7fe6114633fb10de52473/src/html5shiv.js#L216-220) for HTML5 elements for IE6-9, Safari 4.x and FF 3.x.
####`html5shiv-printshiv.js`
* This includes all of the above, as well as a mechanism allowing HTML5 elements to be styled and contain children while being printed in IE 6-8.
### Who can I get mad at now?
HTML5 Shiv is maintained by [Alexander Farkas](https://github.com/aFarkas/), [Jonathan Neal](https://twitter.com/jon_neal) and [Paul Irish](https://twitter.com/paul_irish), with many contributions from [John-David Dalton](https://twitter.com/jdalton). It is also distributed with [Modernizr](http://modernizr.com/), and the two google code projects, [html5shiv](https://code.google.com/p/html5shiv/) and [html5shim](https://code.google.com/p/html5shim/), maintained by [Remy Sharp](https://twitter.com/rem).
If you have any issues in these implementations, you can report them here! :)
For the full story of HTML5 Shiv and all of the people involved in making it, read [The Story of the HTML5 Shiv](http://paulirish.com/2011/the-history-of-the-html5-shiv/).
## Installation
###Using [Bower](http://bower.io/)
`bower install html5shiv --save-dev`
This will clone the latest version of the HTML5 shiv into the `components` directory at the root of your project and also create or update the file `bower.json` which specifies your projects dependencies.
Include the HTML5 shiv in the `<head>` of your page in a conditional comment and after any stylesheets.
```html
<!--[if lt IE 9]>
<script src="components/html5shiv/html5shiv.js"></script>
<![endif]-->
```
###Manual installation
Download and extract the [latest zip package](https://github.com/aFarkas/html5shiv/archive/master.zip) from this repositiory and copy the two files `dist/html5shiv.js` and `dist/html5shiv-printshiv.js` into your project. Then include one of them into your `<head>` as above.
## HTML5 Shiv API
HTML5 Shiv works as a simple drop-in solution. In most cases there is no need to configure HTML5 Shiv or use methods provided by HTML5 Shiv.
### `html5.elements` option
The `elements` option is a space separated string or array, which describes the **full** list of the elements to shiv.
**Configuring `elements` before `html5shiv.js` is included.**
```js
//create a global html5 options object
window.html5 = {
'elements': 'mark section customelement'
};
```
**Configuring `elements` after `html5shiv.js` is included.**
```js
//change the html5shiv options object
window.html5.elements = 'mark section customelement';
//and re-invoke the `shivDocument` method
html5.shivDocument(document);
```
### `html5.shivCSS`
If `shivCSS` is set to `true` HTML5 Shiv will add basic styles (mostly display: block) to sectioning elements (like section, article). In most cases a webpage author should include those basic styles in his normal stylesheet to ensure older browser support (i.e. Firefox 3.6) without JavaScript.
The `shivCSS` is true by default and can be set false, only before html5shiv.js is included:
```js
//create a global html5 options object
window.html5 = {
'shivCSS': false
};
```
### `html5.shivMethods`
If the `shivMethods` option is set to `true` (by default) HTML5 Shiv will override `document.createElement`/`document.createDocumentFragment` in Internet Explorer 6-8 to allow dynamic DOM creation of HTML5 elements.
Known issue: If an element is created using the overridden `createElement` method this element returns a document fragment as its `parentNode`, but should be normally `null`. If a script relays on this behavior, `shivMethods`should be set to `false`.
Note: jQuery 1.7+ has implemented his own HTML5 DOM creation fix for Internet Explorer 6-8. If all your scripts (including Third party scripts) are using jQuery's manipulation and DOM creation methods, you might want to set this option to `false`.
**Configuring `shivMethods` before `html5shiv.js` is included.**
```js
//create a global html5 options object
window.html5 = {
'shivMethods': false
};
```
**Configuring `elements` after `html5shiv.js` is included.**
```js
//change the html5shiv options object
window.html5.shivMethods = false;
```
### `html5.createElement( nodeName [, document] )`
The `html5.createElement` method creates a shived element, even if `shivMethods` is set to false.
```js
var container = html5.createElement('div');
//container is shived so we can add HTML5 elements using `innerHTML`
container.innerHTML = '<section>This is a section</section>';
```
### `html5.createDocumentFragment( [document] )`
The `html5.createDocumentFragment` method creates a shived document fragment, even if `shivMethods` is set to false.
```js
var fragment = html5.createDocumentFragment();
var container = document.createElement('div');
fragment.appendChild(container);
//fragment is shived so we can add HTML5 elements using `innerHTML`
container.innerHTML = '<section>This is a section</section>';
```
## HTML5 Shiv Known Issues and Limitations
- The `shivMethods` option (overriding `document.createElement`) and the `html5.createElement` method create elements, which are not disconnected and have a parentNode (see also issue #64)
- The cloneNode problem is currently not addressed by HTML5 Shiv. HTML5 elements can be dynamically created, but can't be cloned in all cases.
- The printshiv version of HTML5 Shiv has to alter the print styles and the whole DOM for printing. In case of complex websites and or a lot of print styles this might cause performance and/or styling issues. A possible solution could be the [htc-branch](https://github.com/aFarkas/html5shiv/tree/iepp-htc) of HTML5 Shiv, which uses another technique to implement print styles for Internet Explorer 6-8.
### What about the other HTML5 element projects?
- The original conception and community collaboration story of the project is described at [The History of the HTML5 Shiv](http://paulirish.com/2011/the-history-of-the-html5-shiv/).
- [IEPP](https://code.google.com/p/ie-print-protector), by Jon Neal, addressed the printing fault of the original `html5shiv`. It was merged into `html5shiv`.
- **Shimprove**, in April 2010, patched `cloneNode` and `createElement` was later merged into `html5shiv`
- **innerShiv**, introduced in August 2010 by JD Barlett, addressed dynamically adding new HTML5 elements into the DOM. [jQuery added support](http://blog.jquery.com/2011/11/03/jquery-1-7-released/) that made innerShiv redundant and `html5shiv` addressed the same issues as well, so the project was completed.
- The **html5shim** and **html5shiv** sites on Google Code are maintained by Remy Sharp and are identical distribution points of this `html5shiv` project.
- **Modernizr** is developed by the same people as `html5shiv` and can include the latest version in any custom builds created at modernizr.com
- This `html5shiv` repo now contains tests for all the edge cases pursued by the above libraries and has been extensively tested, both in development and production.
A [detailed changelog of html5shiv](https://github.com/aFarkas/html5shiv/wiki) is available.
### Why is it called a *shiv*?
The term **shiv** [originates](http://ejohn.org/blog/html5-shiv/) from [John Resig](https://github.com/jeresig), who was thought to have used the word for its slang meaning, *a sharp object used as a knife-like weapon*, intended for Internet Explorer. Truth be known, John probably intended to use the word [shim](http://en.wikipedia.org/wiki/Shim_(computing\)), which in computing means *an application compatibility workaround*. Rather than correct his mispelling, most developers familiar with Internet Explorer appreciated the visual imagery. And that, [kids](http://html5homi.es/), is [etymology](https://en.wikipedia.org/wiki/Etymology).

21
assets/vendor/jquery/.bower.json vendored Normal file
View File

@ -0,0 +1,21 @@
{
"name": "jquery",
"version": "1.11.0",
"description": "jQuery component",
"keywords": [
"jquery",
"component"
],
"main": "jquery.js",
"license": "MIT",
"homepage": "https://github.com/components/jquery",
"_release": "1.11.0",
"_resolution": {
"type": "version",
"tag": "1.11.0",
"commit": "c20fd94f83db26dfdce5f37ce5d6cbe0e907a05b"
},
"_source": "git://github.com/components/jquery.git",
"_target": "~1.11.0",
"_originalSource": "jquery"
}

1
assets/vendor/jquery/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
build

11
assets/vendor/jquery/README.md vendored Normal file
View File

@ -0,0 +1,11 @@
jQuery Component
================
Shim repository for the [jQuery](http://jquery.com).
Package Managers
----------------
* [Bower](http://twitter.github.com/bower/): `jquery`
* [Component](https://github.com/component/component): `components/jquery`
* [Composer](http://packagist.org/packages/components/jquery): `components/jquery`

11
assets/vendor/jquery/bower.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"name": "jquery",
"version": "1.11.0",
"description": "jQuery component",
"keywords": [
"jquery",
"component"
],
"main": "jquery.js",
"license": "MIT"
}

15
assets/vendor/jquery/component.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
"name": "jquery",
"repo": "components/jquery",
"version": "1.11.0",
"description": "jQuery component",
"keywords": [
"jquery",
"component"
],
"main": "jquery.js",
"scripts": [
"jquery.js"
],
"license": "MIT"
}

35
assets/vendor/jquery/composer.json vendored Normal file
View File

@ -0,0 +1,35 @@
{
"name": "components/jquery",
"description": "jQuery JavaScript Library",
"type": "component",
"homepage": "http://jquery.com",
"license": "MIT",
"support": {
"irc": "irc://irc.freenode.org/jquery",
"issues": "http://bugs.jquery.com",
"forum": "http://forum.jquery.com",
"wiki": "http://docs.jquery.com/",
"source": "https://github.com/jquery/jquery"
},
"authors": [
{
"name": "John Resig",
"email": "jeresig@gmail.com"
}
],
"require": {
"robloach/component-installer": "*"
},
"extra": {
"component": {
"scripts": [
"jquery.js"
],
"files": [
"jquery.min.js",
"jquery-migrate.js",
"jquery-migrate.min.js"
]
}
}
}

511
assets/vendor/jquery/jquery-migrate.js vendored Normal file
View File

@ -0,0 +1,511 @@
/*!
* jQuery Migrate - v1.1.1 - 2013-02-16
* https://github.com/jquery/jquery-migrate
* Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
*/
(function( jQuery, window, undefined ) {
// See http://bugs.jquery.com/ticket/13335
// "use strict";
var warnedAbout = {};
// List of warnings already given; public read only
jQuery.migrateWarnings = [];
// Set to true to prevent console output; migrateWarnings still maintained
// jQuery.migrateMute = false;
// Show a message on the console so devs know we're active
if ( !jQuery.migrateMute && window.console && console.log ) {
console.log("JQMIGRATE: Logging is active");
}
// Set to false to disable traces that appear with warnings
if ( jQuery.migrateTrace === undefined ) {
jQuery.migrateTrace = true;
}
// Forget any warnings we've already given; public
jQuery.migrateReset = function() {
warnedAbout = {};
jQuery.migrateWarnings.length = 0;
};
function migrateWarn( msg) {
if ( !warnedAbout[ msg ] ) {
warnedAbout[ msg ] = true;
jQuery.migrateWarnings.push( msg );
if ( window.console && console.warn && !jQuery.migrateMute ) {
console.warn( "JQMIGRATE: " + msg );
if ( jQuery.migrateTrace && console.trace ) {
console.trace();
}
}
}
}
function migrateWarnProp( obj, prop, value, msg ) {
if ( Object.defineProperty ) {
// On ES5 browsers (non-oldIE), warn if the code tries to get prop;
// allow property to be overwritten in case some other plugin wants it
try {
Object.defineProperty( obj, prop, {
configurable: true,
enumerable: true,
get: function() {
migrateWarn( msg );
return value;
},
set: function( newValue ) {
migrateWarn( msg );
value = newValue;
}
});
return;
} catch( err ) {
// IE8 is a dope about Object.defineProperty, can't warn there
}
}
// Non-ES5 (or broken) browser; just set the property
jQuery._definePropertyBroken = true;
obj[ prop ] = value;
}
if ( document.compatMode === "BackCompat" ) {
// jQuery has never supported or tested Quirks Mode
migrateWarn( "jQuery is not compatible with Quirks Mode" );
}
var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
oldAttr = jQuery.attr,
valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
function() { return null; },
valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
function() { return undefined; },
rnoType = /^(?:input|button)$/i,
rnoAttrNodeType = /^[238]$/,
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
ruseDefault = /^(?:checked|selected)$/i;
// jQuery.attrFn
migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
jQuery.attr = function( elem, name, value, pass ) {
var lowerName = name.toLowerCase(),
nType = elem && elem.nodeType;
if ( pass ) {
// Since pass is used internally, we only warn for new jQuery
// versions where there isn't a pass arg in the formal params
if ( oldAttr.length < 4 ) {
migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
}
if ( elem && !rnoAttrNodeType.test( nType ) &&
(attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
return jQuery( elem )[ name ]( value );
}
}
// Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
// for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
}
// Restore boolHook for boolean property/attribute synchronization
if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
jQuery.attrHooks[ lowerName ] = {
get: function( elem, name ) {
// Align boolean attributes with corresponding properties
// Fall back to attribute presence where some booleans are not supported
var attrNode,
property = jQuery.prop( elem, name );
return property === true || typeof property !== "boolean" &&
( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
name.toLowerCase() :
undefined;
},
set: function( elem, value, name ) {
var propName;
if ( value === false ) {
// Remove boolean attributes when set to false
jQuery.removeAttr( elem, name );
} else {
// value is true since we know at this point it's type boolean and not false
// Set boolean attributes to the same name and set the DOM property
propName = jQuery.propFix[ name ] || name;
if ( propName in elem ) {
// Only set the IDL specifically if it already exists on the element
elem[ propName ] = true;
}
elem.setAttribute( name, name.toLowerCase() );
}
return name;
}
};
// Warn only for attributes that can remain distinct from their properties post-1.9
if ( ruseDefault.test( lowerName ) ) {
migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
}
}
return oldAttr.call( jQuery, elem, name, value );
};
// attrHooks: value
jQuery.attrHooks.value = {
get: function( elem, name ) {
var nodeName = ( elem.nodeName || "" ).toLowerCase();
if ( nodeName === "button" ) {
return valueAttrGet.apply( this, arguments );
}
if ( nodeName !== "input" && nodeName !== "option" ) {
migrateWarn("jQuery.fn.attr('value') no longer gets properties");
}
return name in elem ?
elem.value :
null;
},
set: function( elem, value ) {
var nodeName = ( elem.nodeName || "" ).toLowerCase();
if ( nodeName === "button" ) {
return valueAttrSet.apply( this, arguments );
}
if ( nodeName !== "input" && nodeName !== "option" ) {
migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
}
// Does not return so that setAttribute is also used
elem.value = value;
}
};
var matched, browser,
oldInit = jQuery.fn.init,
oldParseJSON = jQuery.parseJSON,
// Note this does NOT include the #9521 XSS fix from 1.7!
rquickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*|#([\w\-]*))$/;
// $(html) "looks like html" rule change
jQuery.fn.init = function( selector, context, rootjQuery ) {
var match;
if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
(match = rquickExpr.exec( selector )) && match[1] ) {
// This is an HTML string according to the "old" rules; is it still?
if ( selector.charAt( 0 ) !== "<" ) {
migrateWarn("$(html) HTML strings must start with '<' character");
}
// Now process using loose rules; let pre-1.8 play too
if ( context && context.context ) {
// jQuery object as context; parseHTML expects a DOM object
context = context.context;
}
if ( jQuery.parseHTML ) {
return oldInit.call( this, jQuery.parseHTML( jQuery.trim(selector), context, true ),
context, rootjQuery );
}
}
return oldInit.apply( this, arguments );
};
jQuery.fn.init.prototype = jQuery.fn;
// Let $.parseJSON(falsy_value) return null
jQuery.parseJSON = function( json ) {
if ( !json && json !== null ) {
migrateWarn("jQuery.parseJSON requires a valid JSON string");
return null;
}
return oldParseJSON.apply( this, arguments );
};
jQuery.uaMatch = function( ua ) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
/(webkit)[ \/]([\w.]+)/.exec( ua ) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
/(msie) ([\w.]+)/.exec( ua ) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
[];
return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
// Don't clobber any existing jQuery.browser in case it's different
if ( !jQuery.browser ) {
matched = jQuery.uaMatch( navigator.userAgent );
browser = {};
if ( matched.browser ) {
browser[ matched.browser ] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
browser.webkit = true;
} else if ( browser.webkit ) {
browser.safari = true;
}
jQuery.browser = browser;
}
// Warn if the code tries to get jQuery.browser
migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
jQuery.sub = function() {
function jQuerySub( selector, context ) {
return new jQuerySub.fn.init( selector, context );
}
jQuery.extend( true, jQuerySub, this );
jQuerySub.superclass = this;
jQuerySub.fn = jQuerySub.prototype = this();
jQuerySub.fn.constructor = jQuerySub;
jQuerySub.sub = this.sub;
jQuerySub.fn.init = function init( selector, context ) {
if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
context = jQuerySub( context );
}
return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
};
jQuerySub.fn.init.prototype = jQuerySub.fn;
var rootjQuerySub = jQuerySub(document);
migrateWarn( "jQuery.sub() is deprecated" );
return jQuerySub;
};
// Ensure that $.ajax gets the new parseJSON defined in core.js
jQuery.ajaxSetup({
converters: {
"text json": jQuery.parseJSON
}
});
var oldFnData = jQuery.fn.data;
jQuery.fn.data = function( name ) {
var ret, evt,
elem = this[0];
// Handles 1.7 which has this behavior and 1.8 which doesn't
if ( elem && name === "events" && arguments.length === 1 ) {
ret = jQuery.data( elem, name );
evt = jQuery._data( elem, name );
if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
migrateWarn("Use of jQuery.fn.data('events') is deprecated");
return evt;
}
}
return oldFnData.apply( this, arguments );
};
var rscriptType = /\/(java|ecma)script/i,
oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
jQuery.fn.andSelf = function() {
migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
return oldSelf.apply( this, arguments );
};
// Since jQuery.clean is used internally on older versions, we only shim if it's missing
if ( !jQuery.clean ) {
jQuery.clean = function( elems, context, fragment, scripts ) {
// Set context per 1.8 logic
context = context || document;
context = !context.nodeType && context[0] || context;
context = context.ownerDocument || context;
migrateWarn("jQuery.clean() is deprecated");
var i, elem, handleScript, jsTags,
ret = [];
jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
// Complex logic lifted directly from jQuery 1.8
if ( fragment ) {
// Special handling of each script element
handleScript = function( elem ) {
// Check if we consider it executable
if ( !elem.type || rscriptType.test( elem.type ) ) {
// Detach the script and store it in the scripts array (if provided) or the fragment
// Return truthy to indicate that it has been handled
return scripts ?
scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
fragment.appendChild( elem );
}
};
for ( i = 0; (elem = ret[i]) != null; i++ ) {
// Check if we're done after handling an executable script
if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
// Append to fragment and handle embedded scripts
fragment.appendChild( elem );
if ( typeof elem.getElementsByTagName !== "undefined" ) {
// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
// Splice the scripts into ret after their former ancestor and advance our index beyond them
ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
i += jsTags.length;
}
}
}
}
return ret;
};
}
var eventAdd = jQuery.event.add,
eventRemove = jQuery.event.remove,
eventTrigger = jQuery.event.trigger,
oldToggle = jQuery.fn.toggle,
oldLive = jQuery.fn.live,
oldDie = jQuery.fn.die,
ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
hoverHack = function( events ) {
if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
return events;
}
if ( rhoverHack.test( events ) ) {
migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
}
return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
};
// Event props removed in 1.9, put them back if needed; no practical way to warn them
if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
}
// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
if ( jQuery.event.dispatch ) {
migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
}
// Support for 'hover' pseudo-event and ajax event warnings
jQuery.event.add = function( elem, types, handler, data, selector ){
if ( elem !== document && rajaxEvent.test( types ) ) {
migrateWarn( "AJAX events should be attached to document: " + types );
}
eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
};
jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
};
jQuery.fn.error = function() {
var args = Array.prototype.slice.call( arguments, 0);
migrateWarn("jQuery.fn.error() is deprecated");
args.splice( 0, 0, "error" );
if ( arguments.length ) {
return this.bind.apply( this, args );
}
// error event should not bubble to window, although it does pre-1.7
this.triggerHandler.apply( this, args );
return this;
};
jQuery.fn.toggle = function( fn, fn2 ) {
// Don't mess with animation or css toggles
if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
return oldToggle.apply( this, arguments );
}
migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
// Save reference to arguments for access in closure
var args = arguments,
guid = fn.guid || jQuery.guid++,
i = 0,
toggler = function( event ) {
// Figure out which function to execute
var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
// Make sure that clicks stop
event.preventDefault();
// and execute the function
return args[ lastToggle ].apply( this, arguments ) || false;
};
// link all the functions, so any of them can unbind this click handler
toggler.guid = guid;
while ( i < args.length ) {
args[ i++ ].guid = guid;
}
return this.click( toggler );
};
jQuery.fn.live = function( types, data, fn ) {
migrateWarn("jQuery.fn.live() is deprecated");
if ( oldLive ) {
return oldLive.apply( this, arguments );
}
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
};
jQuery.fn.die = function( types, fn ) {
migrateWarn("jQuery.fn.die() is deprecated");
if ( oldDie ) {
return oldDie.apply( this, arguments );
}
jQuery( this.context ).off( types, this.selector || "**", fn );
return this;
};
// Turn global events into document-triggered events
jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
if ( !elem && !rajaxEvent.test( event ) ) {
migrateWarn( "Global events are undocumented and deprecated" );
}
return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
};
jQuery.each( ajaxEvents.split("|"),
function( _, name ) {
jQuery.event.special[ name ] = {
setup: function() {
var elem = this;
// The document needs no shimming; must be !== for oldIE
if ( elem !== document ) {
jQuery.event.add( document, name + "." + jQuery.guid, function() {
jQuery.event.trigger( name, null, elem, true );
});
jQuery._data( this, name, jQuery.guid++ );
}
return false;
},
teardown: function() {
if ( this !== document ) {
jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
}
return false;
}
};
}
);
})( jQuery, window );

File diff suppressed because one or more lines are too long

10337
assets/vendor/jquery/jquery.js vendored Normal file

File diff suppressed because it is too large Load Diff

4
assets/vendor/jquery/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
assets/vendor/jquery/jquery.min.map vendored Normal file

File diff suppressed because one or more lines are too long

7
assets/vendor/jquery/package.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
"name": "components-jquery",
"version": "1.11.0",
"description": "jQuery component",
"keywords": ["jquery"],
"main": "./jquery.js"
}

23
assets/vendor/normalize-css/.bower.json vendored Normal file
View File

@ -0,0 +1,23 @@
{
"name": "normalize-css",
"version": "3.0.0",
"main": "normalize.css",
"author": "Nicolas Gallagher",
"ignore": [
"CHANGELOG.md",
"CONTRIBUTING.md",
"component.json",
"test.html"
],
"homepage": "https://github.com/necolas/normalize.css",
"_release": "3.0.0",
"_resolution": {
"type": "version",
"tag": "3.0.0",
"commit": "ecfe3e1788c1c79640cad011a3bc04dd6e4e1e6a"
},
"_source": "git://github.com/necolas/normalize.css.git",
"_target": "~3.0.0",
"_originalSource": "normalize-css",
"_direct": true
}

19
assets/vendor/normalize-css/LICENSE.md vendored Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) Nicolas Gallagher and Jonathan Neal
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.

55
assets/vendor/normalize-css/README.md vendored Normal file
View File

@ -0,0 +1,55 @@
# normalize.css v3
Normalize.css is a customisable CSS file that makes browsers render all
elements more consistently and in line with modern standards.
The project relies on researching the differences between default browser
styles in order to precisely target only the styles that need or benefit from
normalizing.
[View the test file](http://necolas.github.io/normalize.css/latest/test.html)
## Install
Download from the [project page](http://necolas.github.io/normalize.css/).
Install with [Bower](http://bower.io/): `bower install --save normalize-css`
Install with [Component(1)](http://component.io/): `component install necolas/normalize.css`
## What does it do?
* Preserves useful defaults, unlike many CSS resets.
* Normalizes styles for a wide range of elements.
* Corrects bugs and common browser inconsistencies.
* Improves usability with subtle improvements.
* Explains what code does using detailed comments.
## How to use it
No other styles should come before Normalize.css.
It is recommended that you include the `normalize.css` file as untouched
library code.
## Browser support
* Google Chrome (latest)
* Mozilla Firefox (latest)
* Mozilla Firefox 4
* Opera (latest)
* Apple Safari 6+
* Internet Explorer 8+
[Normalize.css v1 provides legacy browser
support](https://github.com/necolas/normalize.css/tree/v1) (IE 6+, Safari 4+),
but is no longer actively developed.
## Contributing
Please read the CONTRIBUTING.md
## Acknowledgements
Normalize.css is a project by [Nicolas Gallagher](https://github.com/necolas),
co-created with [Jonathan Neal](https://github.com/jonathantneal).

12
assets/vendor/normalize-css/bower.json vendored Normal file
View File

@ -0,0 +1,12 @@
{
"name": "normalize-css",
"version": "3.0.0",
"main": "normalize.css",
"author": "Nicolas Gallagher",
"ignore": [
"CHANGELOG.md",
"CONTRIBUTING.md",
"component.json",
"test.html"
]
}

View File

@ -0,0 +1,423 @@
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined in IE 8/9.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section,
summary {
display: block;
}
/**
* 1. Correct `inline-block` display not defined in IE 8/9.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/
audio,
canvas,
progress,
video {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9.
* Hide the `template` element in IE, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background: transparent;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* Text-level semantics
========================================================================== */
/**
* Address styling not present in IE 8/9, Safari 5, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari 5 and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari 5, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9.
*/
img {
border: 0;
}
/**
* Correct overflow displayed oddly in IE 9.
*/
svg:not(:root) {
overflow: hidden;
}
/* Grouping content
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari 5.
*/
figure {
margin: 1em 40px;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Contain overflow in all browsers.
*/
pre {
overflow: auto;
}
/**
* Address odd `em`-unit font size rendering in all browsers.
*/
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
/* Forms
========================================================================== */
/**
* Known limitation: by default, Chrome and Safari on OS X allow very limited
* styling of `select`, unless a `border` property is set.
*/
/**
* 1. Correct color not being inherited.
* Known issue: affects color of disabled elements.
* 2. Correct font properties not being inherited.
* 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
*/
button,
input,
optgroup,
select,
textarea {
color: inherit; /* 1 */
font: inherit; /* 2 */
margin: 0; /* 3 */
}
/**
* Address `overflow` set to `hidden` in IE 8/9/10.
*/
button {
overflow: visible;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Firefox, IE 8+, and Opera
* Correct `select` style inheritance in Firefox.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
input {
line-height: normal;
}
/**
* It's recommended that you don't attempt to style these elements.
* Firefox's implementation doesn't respect box-sizing, padding, or width.
*
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* Remove default vertical scrollbar in IE 8/9.
*/
textarea {
overflow: auto;
}
/**
* Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/
optgroup {
font-weight: bold;
}
/* Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}

48
assets/vendor/qtip2/.bower.json vendored Normal file
View File

@ -0,0 +1,48 @@
{
"name": "qtip2",
"description": "Introducing... qTip2. The second generation of the advanced qTip plugin for the ever popular jQuery framework.",
"version": "2.2.0",
"homepage": "http://qtip2.com",
"location": "https://github.com/qTip2/bower",
"repository": {
"type": "git",
"url": "git://github.com/Craga89/qTip2.git"
},
"authors": [
{
"name": "Craig Michael Thompson",
"email": "craig@craigsworks.com",
"url": "http://craigsworks.com/"
}
],
"license": [
"MIT",
"GPL"
],
"keywords": [
"tooltip",
"tooltips",
"jquery",
"qtip",
"qtip2",
"craig",
"thompson",
"craigsworks"
],
"main": [
"./jquery.qtip.js",
"./basic/jquery.qtip.js"
],
"ignore": [
"bin"
],
"_release": "2.2.0",
"_resolution": {
"type": "version",
"tag": "v2.2.0",
"commit": "f5300e9a698f203d47307cfdf90399504fd2f6b2"
},
"_source": "git://github.com/qTip2/bower.git",
"_target": "~2.2.0",
"_originalSource": "qtip2"
}

4
assets/vendor/qtip2/README.md vendored Normal file
View File

@ -0,0 +1,4 @@
qTip2 Bower Package
=====
Clone into an existing `qtip2` repo clone, and run the ./bin/build script to generate the files. Then push to the repo.

39
assets/vendor/qtip2/bower.json vendored Executable file
View File

@ -0,0 +1,39 @@
{
"name": "qtip2",
"description": "Introducing... qTip2. The second generation of the advanced qTip plugin for the ever popular jQuery framework.",
"version": "2.2.0",
"homepage": "http://qtip2.com",
"location": "https://github.com/qTip2/bower",
"repository": {
"type": "git",
"url": "git://github.com/Craga89/qTip2.git"
},
"authors": [
{
"name": "Craig Michael Thompson",
"email": "craig@craigsworks.com",
"url": "http://craigsworks.com/"
}
],
"license": [
"MIT",
"GPL"
],
"keywords": [
"tooltip",
"tooltips",
"jquery",
"qtip",
"qtip2",
"craig",
"thompson",
"craigsworks"
],
"main": [
"./jquery.qtip.js",
"./basic/jquery.qtip.js"
],
"ignore": [
"bin"
]
}

View File

@ -0,0 +1,7 @@
/* qTip2 v2.2.0 tips modal viewport svg imagemap ie6 | qtip2.com | Licensed MIT, GPL | Mon Nov 25 2013 11:54:49 */
/*!
* imagesLoaded v3.0.4
* JavaScript is all like "You images are done yet or what?"
*/
(function(t){"use strict";function e(t,e){for(var i in e)t[i]=e[i];return t}function i(t){return"[object Array]"===h.call(t)}function s(t){var e=[];if(i(t))e=t;else if("number"==typeof t.length)for(var s=0,o=t.length;o>s;s++)e.push(t[s]);else e.push(t);return e}function o(t,i){function o(t,i,r){if(!(this instanceof o))return new o(t,i);"string"==typeof t&&(t=document.querySelectorAll(t)),this.elements=s(t),this.options=e({},this.options),"function"==typeof i?r=i:e(this.options,i),r&&this.on("always",r),this.getImages(),n&&(this.jqDeferred=new n.Deferred);var a=this;setTimeout(function(){a.check()})}function h(t){this.img=t}o.prototype=new t,o.prototype.options={},o.prototype.getImages=function(){this.images=[];for(var t=0,e=this.elements.length;e>t;t++){var i=this.elements[t];"IMG"===i.nodeName&&this.addImage(i);for(var s=i.querySelectorAll("img"),o=0,n=s.length;n>o;o++){var r=s[o];this.addImage(r)}}},o.prototype.addImage=function(t){var e=new h(t);this.images.push(e)},o.prototype.check=function(){function t(t,o){return e.options.debug&&a&&r.log("confirm",t,o),e.progress(t),i++,i===s&&e.complete(),!0}var e=this,i=0,s=this.images.length;if(this.hasAnyBroken=!1,!s)return this.complete(),void 0;for(var o=0;s>o;o++){var n=this.images[o];n.on("confirm",t),n.check()}},o.prototype.progress=function(t){this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded;var e=this;setTimeout(function(){e.emit("progress",e,t),e.jqDeferred&&e.jqDeferred.notify(e,t)})},o.prototype.complete=function(){var t=this.hasAnyBroken?"fail":"done";this.isComplete=!0;var e=this;setTimeout(function(){if(e.emit(t,e),e.emit("always",e),e.jqDeferred){var i=e.hasAnyBroken?"reject":"resolve";e.jqDeferred[i](e)}})},n&&(n.fn.imagesLoaded=function(t,e){var i=new o(this,t,e);return i.jqDeferred.promise(n(this))});var l={};return h.prototype=new t,h.prototype.check=function(){var t=l[this.img.src];if(t)return this.useCached(t),void 0;if(l[this.img.src]=this,this.img.complete&&void 0!==this.img.naturalWidth)return this.confirm(0!==this.img.naturalWidth,"naturalWidth"),void 0;var e=this.proxyImage=new Image;i.bind(e,"load",this),i.bind(e,"error",this),e.src=this.img.src},h.prototype.useCached=function(t){if(t.isConfirmed)this.confirm(t.isLoaded,"cached was confirmed");else{var e=this;t.on("confirm",function(t){return e.confirm(t.isLoaded,"cache emitted confirmed"),!0})}},h.prototype.confirm=function(t,e){this.isConfirmed=!0,this.isLoaded=t,this.emit("confirm",this,e)},h.prototype.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindProxyEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindProxyEvents()},h.prototype.unbindProxyEvents=function(){i.unbind(this.proxyImage,"load",this),i.unbind(this.proxyImage,"error",this)},o}var n=t.jQuery,r=t.console,a=r!==void 0,h=Object.prototype.toString;"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],o):t.imagesLoaded=o(t.EventEmitter,t.eventie)})(window);
//@ sourceMappingURL=http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0/imagesloaded.pkg.min.map

View File

@ -1,9 +1,16 @@
/*! qTip2 - Pretty powerful tooltips - v2.0.0pre - 2012-11-29
* http://craigsworks.com/projects/qtip2/
* Copyright (c) 2012 Craig Michael Thompson; Licensed MIT, GPL */
/* Core qTip styles */
.qtip, .qtip{
/*
* qTip2 - Pretty powerful tooltips - v2.2.0
* http://qtip2.com
*
* Copyright (c) 2013 Craig Michael Thompson
* Released under the MIT, GPL licenses
* http://jquery.org/license
*
* Date: Mon Nov 25 2013 11:54 GMT+0000
* Plugins: tips modal viewport svg imagemap ie6
* Styles: basic css3
*/
.qtip{
position: absolute;
left: -28000px;
top: -28000px;
@ -16,6 +23,9 @@
line-height: 12px;
direction: ltr;
box-shadow: none;
padding: 0;
}
.qtip-content{
@ -63,7 +73,6 @@
display: block;
text-indent: -1000em;
direction: ltr;
vertical-align: middle;
}
.qtip-icon, .qtip-icon .ui-icon{
@ -77,6 +86,7 @@
width: 18px;
height: 14px;
line-height: 14px;
text-align: center;
text-indent: 0;
font: normal bold 10px/13px Tahoma,sans-serif;
@ -85,7 +95,6 @@
background: transparent none no-repeat -100em -100em;
}
/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
.qtip-focus{}
@ -118,6 +127,7 @@
}
/*! Light tooltip style */
.qtip-light{
background-color: white;
@ -222,7 +232,7 @@
}
/* Add shadows to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
.qtip-shadow{
-webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
-moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
@ -238,6 +248,12 @@
border-radius: 5px;
}
.qtip-rounded .qtip-titlebar{
-moz-border-radius: 4px 4px 0 0;
-webkit-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
}
/* Youtube tooltip style */
.qtip-youtube{
-moz-border-radius: 2px;
@ -373,12 +389,12 @@
}
.qtip-tipsy .qtip-titlebar{
padding: 6px 35px 0 10;
padding: 6px 35px 0 10px;
background-color: transparent;
}
.qtip-tipsy .qtip-content{
padding: 6px 10;
padding: 6px 10px;
}
.qtip-tipsy .qtip-icon{
@ -546,15 +562,23 @@
}
/* Tips plugin */
.qtip .qtip-tip{
margin: 0 auto;
overflow: hidden;
z-index: 10;
}
/* Opera bug #357 - Incorrect tip position
https://github.com/Craga89/qTip2/issues/367 */
x:-o-prefocus, .qtip .qtip-tip{
visibility: hidden;
}
.qtip .qtip-tip,
.qtip .qtip-tip .qtip-vml{
.qtip .qtip-tip .qtip-vml,
.qtip .qtip-tip canvas{
position: absolute;
color: #123456;
@ -569,11 +593,11 @@
display: inline-block;
visibility: visible;
}
/* Modal plugin */
#qtip-overlay{
position: fixed;
left: -10000em;
top: -10000em;
left: 0; top: 0;
width: 100%; height: 100%;
}
/* Applied to modals with show.modal.blur set to true */
@ -593,7 +617,7 @@
}
/* IE6 Modal plugin fix */
.qtipmodal-ie6fix{
position: absolute !important;
}

3433
assets/vendor/qtip2/jquery.qtip.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

14
assets/vendor/selectivizr/.bower.json vendored Normal file
View File

@ -0,0 +1,14 @@
{
"name": "selectivizr",
"homepage": "https://github.com/keithclark/selectivizr",
"version": "1.0.2",
"_release": "1.0.2",
"_resolution": {
"type": "version",
"tag": "1.0.2",
"commit": "994f65755ac4e7ead1d14534f6eeb90cda21e909"
},
"_source": "git://github.com/keithclark/selectivizr.git",
"_target": "~1.0.2",
"_originalSource": "selectivizr"
}

View File

@ -0,0 +1,29 @@
Selectivizr
-----------
**CSS3 selectors for IE**
_selectivizr_ is a JavaScript utility that emulates CSS3 pseudo-classes
and attribute selectors in Internet Explorer 6-8. Simply include the
script in your pages and selectivizr will do the rest.
To use the library, you'll need to include one of the supported libraries:
* jQuery (1.3+/1.4+)
* Dojo (1.5.0+)
* Prototype (1.6.1+)
* Yahoo UI Library (2.8.0+)
* DOMAssistant (2.8.0+)
* MooTools (1.3+)
* NWMatcher (1.2.3+)
Then add the following conditional comment:
<!--[if (gte IE 6)&(lte IE 8)]>
<script type="text/javascript" src="selectivizr.js"></script>
<noscript><link rel="stylesheet" href="[fallback css]" /></noscript>
<![endif]-->
This adds the `selectivizr.js` and fallback CSS file to IE6-8 while hiding
for other browsers.

112
assets/vendor/selectivizr/changelog.txt vendored Normal file
View File

@ -0,0 +1,112 @@
selectivizr - change log
========================
v1.0.2
------
* BUG - fixed Google Closure Compiler issue that added 2 global vars - sorry about that!
* NEW - removed the eval() from determineSelectorMethod()
* BUG - selectivizr incorrectly detects Yahoo! profiler as YUI selector library
* NEW - selectivizr can now be "lazy-loaded"
* NEW - switched DOMReady back to Diego Perini's (new) ContentLoaded.
* BUG - asset urls using the 'data:' scheme (i.e. background-image) resolved to a path (Chris Korhonen)
* BUG - resolveUrl() failed if the context url contained a hash followed by a '/' (Zee Agency)
* BUG - IE version detection wasn't IE>9 friendly (reported by Paul Irish)
v1.0.1
------
* BUG - @import urls not wrapped with "url()" are now correctly processed
* BUG - relative urls are now correctly resolved
* BUG - patched [*=""] selector in IE8 (returns elements it shouldn't)
v1.0.0
------
ie-css3.js is now stable enough to be released with out a beta suffix - say hello to selectivizr v1!
v0.9.7b
-------
* NEW - Complete rewrite of the stylesheet parser.
* NEW - :not() pseudo support.
* NEW - Attribute selector support in IE6 [att] [att="x"] [att~="x"] [att^="x"] [att$="x"] [att*="x"] and [att|="x"]
* NEW - Fixes native empty attribute selector support in IE7 [att^=""] [att$=""] [att*=""] and IE8 [att^=""] [att$=""]
* BUG - :enabled and :disabled elements now change state properly. (Uses polling)
* BUG - Emulation no longer fails in IE6 when more than 2 classes are applied to an element
v0.9.6b
-------
* BUG - IE8 :target pseudo-class emulation fails with jQuery (but not with Sizzle) (reported by Tom Law)
* BUG - ie-css3.js won't run if page is in an iframe (switched DOM Load detection to Dean Edwards defered script method)
* BUG - A selector that begins with a attribute selector incorrected parsed (reported by Stephanie Sullivan)
v0.9.5b
-------
* NEW - Reworked DOM Load detection (using a cut down version of Diego Perini's ContentLoaded technique)
* NEW - Enabled Dojo detection (lowest priority) - Warning: some of Dojo's CSS3 selectors seem very buggy!
* BUG - Fixed mixed content warning when using over SSL
* NEW - :target pseudo for IE8 when running standards mode. Sorry, no support for pre-IE8 or quirks mode
* NWMatcher now higher priority that DOMAssistant when auto-detecting best library
* Internal rewrites / refactoring - more features, but a smaller file :o)
v0.9.4b
-------
* NEW - added support for :hover (for IE 5.5 - 6) and :focus (for IE 5.5 - 7)
* NEW - added support for ::first-child and ::first-letter (suggested by Philip Renich)
* BUG - style sheets without href values shouldn't get parsed (reported by Jeff Smith)
* BUG - remotely hosted style sheets are now ignored when used in @imports
* BUG - @import rules now honor the <base> href if its specified (reported by Andrea and Tim)
* BUG - various minor bug fixes
v0.9.3b
-------
* No longer dependent on DOMAssistant.
* Auto-detects best suited selector library from these:
- DOMAssistant (recommended)
- NWmatcher
- Prototype
- YUI 2
- MooTools
- Sizzle / jQuery
* NEW - pseudo selectors :enabled, :disabled, :checked and :root.
* BUG - Fixed IE 5.5/6 issue with illegal character in replacement class name.
* BUG - Fixed extra spaces issue with modified class names.
* BUG - Stopped triggering a DOM redraw when there are no className changes
* Dynamic building of CSS_PSEUDOS regexp based on IE version so we only patch what's needed.
* XHR compatability test (reported from twitter.com/kangax).
* Reworked DOMLoaded detection.
v0.9.2b
-------
* CSS parser updated to crawl @import statements (suggested by Andy "Malarkey" Clarke).
* @font rules support.
v0.9.1b
-------
* Public beta release.

561
assets/vendor/selectivizr/selectivizr.js vendored Normal file
View File

@ -0,0 +1,561 @@
/*
selectivizr v1.0.2b - (c) Keith Clark, freely distributable under the terms
of the MIT license.
selectivizr.com
*/
/*
Notes about this source
-----------------------
* The #DEBUG_START and #DEBUG_END comments are used to mark blocks of code
that will be removed prior to building a final release version (using a
pre-compression script)
References:
-----------
* CSS Syntax : http://www.w3.org/TR/2003/WD-css3-syntax-20030813/#style
* Selectors : http://www.w3.org/TR/css3-selectors/#selectors
* IE Compatability : http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx
* W3C Selector Tests : http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/
*/
(function(win) {
// If browser isn't IE, then stop execution! This handles the script
// being loaded by non IE browsers because the developer didn't use
// conditional comments.
if (/*@cc_on!@*/true) return;
// =========================== Init Objects ============================
var doc = document;
var root = doc.documentElement;
var xhr = getXHRObject();
var ieVersion = /MSIE (\d+)/.exec(navigator.userAgent)[1];
// If were not in standards mode, IE is too old / new or we can't create
// an XMLHttpRequest object then we should get out now.
if (doc.compatMode != 'CSS1Compat' || ieVersion<6 || ieVersion>8 || !xhr) {
return;
}
// ========================= Common Objects ============================
// Compatiable selector engines in order of CSS3 support. Note: '*' is
// a placholder for the object key name. (basically, crude compression)
var selectorEngines = {
"NW" : "*.Dom.select",
"MooTools" : "$$",
"DOMAssistant" : "*.$",
"Prototype" : "$$",
"YAHOO" : "*.util.Selector.query",
"Sizzle" : "*",
"jQuery" : "*",
"dojo" : "*.query"
};
var selectorMethod;
var enabledWatchers = []; // array of :enabled/:disabled elements to poll
var ie6PatchID = 0; // used to solve ie6's multiple class bug
var patchIE6MultipleClasses = true; // if true adds class bloat to ie6
var namespace = "slvzr";
// Stylesheet parsing regexp's
var RE_COMMENT = /(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g;
var RE_IMPORT = /@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g;
var RE_ASSET_URL = /\burl\(\s*(["']?)(?!data:)([^"')]+)\1\s*\)/g;
var RE_PSEUDO_STRUCTURAL = /^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/;
var RE_PSEUDO_ELEMENTS = /:(:first-(?:line|letter))/g;
var RE_SELECTOR_GROUP = /(^|})\s*([^\{]*?[\[:][^{]+)/g;
var RE_SELECTOR_PARSE = /([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g;
var RE_LIBRARY_INCOMPATIBLE_PSEUDOS = /(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g;
var RE_PATCH_CLASS_NAME_REPLACE = /[^\w-]/g;
// HTML UI element regexp's
var RE_INPUT_ELEMENTS = /^(INPUT|SELECT|TEXTAREA|BUTTON)$/;
var RE_INPUT_CHECKABLE_TYPES = /^(checkbox|radio)$/;
// Broken attribute selector implementations (IE7/8 native [^=""], [$=""] and [*=""])
var BROKEN_ATTR_IMPLEMENTATIONS = ieVersion>6 ? /[\$\^*]=(['"])\1/ : null;
// Whitespace normalization regexp's
var RE_TIDY_TRAILING_WHITESPACE = /([(\[+~])\s+/g;
var RE_TIDY_LEADING_WHITESPACE = /\s+([)\]+~])/g;
var RE_TIDY_CONSECUTIVE_WHITESPACE = /\s+/g;
var RE_TIDY_TRIM_WHITESPACE = /^\s*((?:[\S\s]*\S)?)\s*$/;
// String constants
var EMPTY_STRING = "";
var SPACE_STRING = " ";
var PLACEHOLDER_STRING = "$1";
// =========================== Patching ================================
// --[ patchStyleSheet() ]----------------------------------------------
// Scans the passed cssText for selectors that require emulation and
// creates one or more patches for each matched selector.
function patchStyleSheet( cssText ) {
return cssText.replace(RE_PSEUDO_ELEMENTS, PLACEHOLDER_STRING).
replace(RE_SELECTOR_GROUP, function(m, prefix, selectorText) {
var selectorGroups = selectorText.split(",");
for (var c = 0, cs = selectorGroups.length; c < cs; c++) {
var selector = normalizeSelectorWhitespace(selectorGroups[c]) + SPACE_STRING;
var patches = [];
selectorGroups[c] = selector.replace(RE_SELECTOR_PARSE,
function(match, combinator, pseudo, attribute, index) {
if (combinator) {
if (patches.length>0) {
applyPatches( selector.substring(0, index), patches );
patches = [];
}
return combinator;
}
else {
var patch = (pseudo) ? patchPseudoClass( pseudo ) : patchAttribute( attribute );
if (patch) {
patches.push(patch);
return "." + patch.className;
}
return match;
}
}
);
}
return prefix + selectorGroups.join(",");
});
};
// --[ patchAttribute() ]-----------------------------------------------
// returns a patch for an attribute selector.
function patchAttribute( attr ) {
return (!BROKEN_ATTR_IMPLEMENTATIONS || BROKEN_ATTR_IMPLEMENTATIONS.test(attr)) ?
{ className: createClassName(attr), applyClass: true } : null;
};
// --[ patchPseudoClass() ]---------------------------------------------
// returns a patch for a pseudo-class
function patchPseudoClass( pseudo ) {
var applyClass = true;
var className = createClassName(pseudo.slice(1));
var isNegated = pseudo.substring(0, 5) == ":not(";
var activateEventName;
var deactivateEventName;
// if negated, remove :not()
if (isNegated) {
pseudo = pseudo.slice(5, -1);
}
// bracket contents are irrelevant - remove them
var bracketIndex = pseudo.indexOf("(")
if (bracketIndex > -1) {
pseudo = pseudo.substring(0, bracketIndex);
}
// check we're still dealing with a pseudo-class
if (pseudo.charAt(0) == ":") {
switch (pseudo.slice(1)) {
case "root":
applyClass = function(e) {
return isNegated ? e != root : e == root;
}
break;
case "target":
// :target is only supported in IE8
if (ieVersion == 8) {
applyClass = function(e) {
var handler = function() {
var hash = location.hash;
var hashID = hash.slice(1);
return isNegated ? (hash == EMPTY_STRING || e.id != hashID) : (hash != EMPTY_STRING && e.id == hashID);
};
addEvent( win, "hashchange", function() {
toggleElementClass(e, className, handler());
})
return handler();
}
break;
}
return false;
case "checked":
applyClass = function(e) {
if (RE_INPUT_CHECKABLE_TYPES.test(e.type)) {
addEvent( e, "propertychange", function() {
if (event.propertyName == "checked") {
toggleElementClass( e, className, e.checked !== isNegated );
}
})
}
return e.checked !== isNegated;
}
break;
case "disabled":
isNegated = !isNegated;
case "enabled":
applyClass = function(e) {
if (RE_INPUT_ELEMENTS.test(e.tagName)) {
addEvent( e, "propertychange", function() {
if (event.propertyName == "$disabled") {
toggleElementClass( e, className, e.$disabled === isNegated );
}
});
enabledWatchers.push(e);
e.$disabled = e.disabled;
return e.disabled === isNegated;
}
return pseudo == ":enabled" ? isNegated : !isNegated;
}
break;
case "focus":
activateEventName = "focus";
deactivateEventName = "blur";
case "hover":
if (!activateEventName) {
activateEventName = "mouseenter";
deactivateEventName = "mouseleave";
}
applyClass = function(e) {
addEvent( e, isNegated ? deactivateEventName : activateEventName, function() {
toggleElementClass( e, className, true );
})
addEvent( e, isNegated ? activateEventName : deactivateEventName, function() {
toggleElementClass( e, className, false );
})
return isNegated;
}
break;
// everything else
default:
// If we don't support this pseudo-class don't create
// a patch for it
if (!RE_PSEUDO_STRUCTURAL.test(pseudo)) {
return false;
}
break;
}
}
return { className: className, applyClass: applyClass };
};
// --[ applyPatches() ]-------------------------------------------------
// uses the passed selector text to find DOM nodes and patch them
function applyPatches(selectorText, patches) {
var elms;
// Although some selector libraries can find :checked :enabled etc.
// we need to find all elements that could have that state because
// it can be changed by the user.
var domSelectorText = selectorText.replace(RE_LIBRARY_INCOMPATIBLE_PSEUDOS, EMPTY_STRING);
// If the dom selector equates to an empty string or ends with
// whitespace then we need to append a universal selector (*) to it.
if (domSelectorText == EMPTY_STRING || domSelectorText.charAt(domSelectorText.length - 1) == SPACE_STRING) {
domSelectorText += "*";
}
// Ensure we catch errors from the selector library
try {
elms = selectorMethod( domSelectorText );
} catch (ex) {
// #DEBUG_START
log( "Selector '" + selectorText + "' threw exception '" + ex + "'" );
// #DEBUG_END
}
if (elms) {
for (var d = 0, dl = elms.length; d < dl; d++) {
var elm = elms[d];
var cssClasses = elm.className;
for (var f = 0, fl = patches.length; f < fl; f++) {
var patch = patches[f];
if (!hasPatch(elm, patch)) {
if (patch.applyClass && (patch.applyClass === true || patch.applyClass(elm) === true)) {
cssClasses = toggleClass(cssClasses, patch.className, true );
}
}
}
elm.className = cssClasses;
}
}
};
// --[ hasPatch() ]-----------------------------------------------------
// checks for the exsistence of a patch on an element
function hasPatch( elm, patch ) {
return new RegExp("(^|\\s)" + patch.className + "(\\s|$)").test(elm.className);
};
// =========================== Utility =================================
function createClassName( className ) {
return namespace + "-" + ((ieVersion == 6 && patchIE6MultipleClasses) ?
ie6PatchID++
:
className.replace(RE_PATCH_CLASS_NAME_REPLACE, function(a) { return a.charCodeAt(0) }));
};
// --[ log() ]----------------------------------------------------------
// #DEBUG_START
function log( message ) {
if (win.console) {
win.console.log(message);
}
};
// #DEBUG_END
// --[ trim() ]---------------------------------------------------------
// removes leading, trailing whitespace from a string
function trim( text ) {
return text.replace(RE_TIDY_TRIM_WHITESPACE, PLACEHOLDER_STRING);
};
// --[ normalizeWhitespace() ]------------------------------------------
// removes leading, trailing and consecutive whitespace from a string
function normalizeWhitespace( text ) {
return trim(text).replace(RE_TIDY_CONSECUTIVE_WHITESPACE, SPACE_STRING);
};
// --[ normalizeSelectorWhitespace() ]----------------------------------
// tidies whitespace around selector brackets and combinators
function normalizeSelectorWhitespace( selectorText ) {
return normalizeWhitespace(selectorText.
replace(RE_TIDY_TRAILING_WHITESPACE, PLACEHOLDER_STRING).
replace(RE_TIDY_LEADING_WHITESPACE, PLACEHOLDER_STRING)
);
};
// --[ toggleElementClass() ]-------------------------------------------
// toggles a single className on an element
function toggleElementClass( elm, className, on ) {
var oldClassName = elm.className;
var newClassName = toggleClass(oldClassName, className, on);
if (newClassName != oldClassName) {
elm.className = newClassName;
elm.parentNode.className += EMPTY_STRING;
}
};
// --[ toggleClass() ]--------------------------------------------------
// adds / removes a className from a string of classNames. Used to
// manage multiple class changes without forcing a DOM redraw
function toggleClass( classList, className, on ) {
var re = RegExp("(^|\\s)" + className + "(\\s|$)");
var classExists = re.test(classList);
if (on) {
return classExists ? classList : classList + SPACE_STRING + className;
} else {
return classExists ? trim(classList.replace(re, PLACEHOLDER_STRING)) : classList;
}
};
// --[ addEvent() ]-----------------------------------------------------
function addEvent(elm, eventName, eventHandler) {
elm.attachEvent("on" + eventName, eventHandler);
};
// --[ getXHRObject() ]-------------------------------------------------
function getXHRObject()
{
if (win.XMLHttpRequest) {
return new XMLHttpRequest;
}
try {
return new ActiveXObject('Microsoft.XMLHTTP');
} catch(e) {
return null;
}
};
// --[ loadStyleSheet() ]-----------------------------------------------
function loadStyleSheet( url ) {
xhr.open("GET", url, false);
xhr.send();
return (xhr.status==200) ? xhr.responseText : EMPTY_STRING;
};
// --[ resolveUrl() ]---------------------------------------------------
// Converts a URL fragment to a fully qualified URL using the specified
// context URL. Returns null if same-origin policy is broken
function resolveUrl( url, contextUrl ) {
function getProtocolAndHost( url ) {
return url.substring(0, url.indexOf("/", 8));
};
// absolute path
if (/^https?:\/\//i.test(url)) {
return getProtocolAndHost(contextUrl) == getProtocolAndHost(url) ? url : null;
}
// root-relative path
if (url.charAt(0)=="/") {
return getProtocolAndHost(contextUrl) + url;
}
// relative path
var contextUrlPath = contextUrl.split(/[?#]/)[0]; // ignore query string in the contextUrl
if (url.charAt(0) != "?" && contextUrlPath.charAt(contextUrlPath.length - 1) != "/") {
contextUrlPath = contextUrlPath.substring(0, contextUrlPath.lastIndexOf("/") + 1);
}
return contextUrlPath + url;
};
// --[ parseStyleSheet() ]----------------------------------------------
// Downloads the stylesheet specified by the URL, removes it's comments
// and recursivly replaces @import rules with their contents, ultimately
// returning the full cssText.
function parseStyleSheet( url ) {
if (url) {
return loadStyleSheet(url).replace(RE_COMMENT, EMPTY_STRING).
replace(RE_IMPORT, function( match, quoteChar, importUrl, quoteChar2, importUrl2 ) {
return parseStyleSheet(resolveUrl(importUrl || importUrl2, url));
}).
replace(RE_ASSET_URL, function( match, quoteChar, assetUrl ) {
quoteChar = quoteChar || EMPTY_STRING;
return " url(" + quoteChar + resolveUrl(assetUrl, url) + quoteChar + ") ";
});
}
return EMPTY_STRING;
};
// --[ init() ]---------------------------------------------------------
function init() {
// honour the <base> tag
var url, stylesheet;
var baseTags = doc.getElementsByTagName("BASE");
var baseUrl = (baseTags.length > 0) ? baseTags[0].href : doc.location.href;
/* Note: This code prevents IE from freezing / crashing when using
@font-face .eot files but it modifies the <head> tag and could
trigger the IE stylesheet limit. It will also cause FOUC issues.
If you choose to use it, make sure you comment out the for loop
directly below this comment.
var head = doc.getElementsByTagName("head")[0];
for (var c=doc.styleSheets.length-1; c>=0; c--) {
stylesheet = doc.styleSheets[c]
head.appendChild(doc.createElement("style"))
var patchedStylesheet = doc.styleSheets[doc.styleSheets.length-1];
if (stylesheet.href != EMPTY_STRING) {
url = resolveUrl(stylesheet.href, baseUrl)
if (url) {
patchedStylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) )
stylesheet.disabled = true
setTimeout( function () {
stylesheet.owningElement.parentNode.removeChild(stylesheet.owningElement)
})
}
}
}
*/
for (var c = 0; c < doc.styleSheets.length; c++) {
stylesheet = doc.styleSheets[c]
if (stylesheet.href != EMPTY_STRING) {
url = resolveUrl(stylesheet.href, baseUrl);
if (url) {
stylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) );
}
}
}
// :enabled & :disabled polling script (since we can't hook
// onpropertychange event when an element is disabled)
if (enabledWatchers.length > 0) {
setInterval( function() {
for (var c = 0, cl = enabledWatchers.length; c < cl; c++) {
var e = enabledWatchers[c];
if (e.disabled !== e.$disabled) {
if (e.disabled) {
e.disabled = false;
e.$disabled = true;
e.disabled = true;
}
else {
e.$disabled = e.disabled;
}
}
}
},250)
}
};
// Bind selectivizr to the ContentLoaded event.
ContentLoaded(win, function() {
// Determine the "best fit" selector engine
for (var engine in selectorEngines) {
var members, member, context = win;
if (win[engine]) {
members = selectorEngines[engine].replace("*", engine).split(".");
while ((member = members.shift()) && (context = context[member])) {}
if (typeof context == "function") {
selectorMethod = context;
init();
return;
}
}
}
});
/*!
* ContentLoaded.js by Diego Perini, modified for IE<9 only (to save space)
*
* Author: Diego Perini (diego.perini at gmail.com)
* Summary: cross-browser wrapper for DOMContentLoaded
* Updated: 20101020
* License: MIT
* Version: 1.2
*
* URL:
* http://javascript.nwbox.com/ContentLoaded/
* http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE
*
*/
// @w window reference
// @f function reference
function ContentLoaded(win, fn) {
var done = false, top = true,
init = function(e) {
if (e.type == "readystatechange" && doc.readyState != "complete") return;
(e.type == "load" ? win : doc).detachEvent("on" + e.type, init, false);
if (!done && (done = true)) fn.call(win, e.type || e);
},
poll = function() {
try { root.doScroll("left"); } catch(e) { setTimeout(poll, 50); return; }
init('poll');
};
if (doc.readyState == "complete") fn.call(win, EMPTY_STRING);
else {
if (doc.createEventObject && root.doScroll) {
try { top = !win.frameElement; } catch(e) { }
if (top) poll();
}
addEvent(doc,"readystatechange", init);
addEvent(win,"load", init);
}
};
})(this);

46
assets/vendor/zeroclipboard/.bower.json vendored Normal file
View File

@ -0,0 +1,46 @@
{
"name": "zeroclipboard",
"description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.",
"version": "1.3.2",
"main": [
"./ZeroClipboard.js",
"./ZeroClipboard.swf"
],
"keywords": [
"flash",
"clipboard",
"copy",
"cut",
"paste",
"zclip",
"clip",
"clippy"
],
"license": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE",
"authors": [
{
"name": "Jon Rohan",
"url": "http://jonrohan.me/"
},
{
"name": "James M. Greene",
"email": "james.m.greene@gmail.com",
"url": "http://jamesgreene.net/"
}
],
"homepage": "http://zeroclipboard.org/",
"repository": {
"type": "git",
"url": "https://github.com/zeroclipboard/zeroclipboard.git"
},
"location": "git://github.com/zeroclipboard/zeroclipboard.git",
"_release": "1.3.2",
"_resolution": {
"type": "version",
"tag": "v1.3.2",
"commit": "028ce9abf2f2960fd79e0fae13b3446924be0e8c"
},
"_source": "git://github.com/zeroclipboard/zeroclipboard.git",
"_target": "~1.3.2",
"_originalSource": "zeroclipboard"
}

View File

@ -0,0 +1,3 @@
node_modules
npm-debug.log
bin/*

13
assets/vendor/zeroclipboard/.jshintrc vendored Normal file
View File

@ -0,0 +1,13 @@
{
"boss": true,
"browser": true,
"camelcase": true,
"eqeqeq": true,
"eqnull": true,
"es3": true,
"es5": false,
"indent": 2,
"multistr": true,
"strict": false,
"trailing": true
}

View File

@ -0,0 +1,3 @@
docs/
test/
.DS_Store

View File

@ -0,0 +1,5 @@
language: node_js
node_js:
- "0.10"
before_script:
- npm install -g grunt-cli

View File

@ -0,0 +1,25 @@
Contributing
==============
If you find an issue, submitting a pull request is always better than a bug report! Please fork and submit your code fixes.
If you want to build some new features, we have a [roadmap.md](docs/roadmap.md) of features we want. You can add features you want there, or just code the feature and send a pull request.
### Cloning
$ git clone https://github.com/zeroclipboard/zeroclipboard.git
$ cd zeroclipboard/
$ npm install -g grunt-cli
$ npm install
$ grunt
### Developing
$ npm install
$ grunt
### Testing
$ grunt test

176
assets/vendor/zeroclipboard/Gruntfile.js vendored Normal file
View File

@ -0,0 +1,176 @@
/*jshint -W106 */
/*jshint node:true */
module.exports = function(grunt) {
'use strict';
// Metadata
var pkg = grunt.file.readJSON('package.json');
// Shared configuration
var localPort = 7320; // "ZERO"
// Project configuration.
grunt.initConfig({
// Task configuration
jshint: {
options: {
jshintrc: '.jshintrc'
},
Gruntfile: ['Gruntfile.js'],
js: ['src/javascript/ZeroClipboard/**/*.js'],
test: {
options: {
jshintrc: 'test/.jshintrc'
},
src: ['test/*.js']
}
},
clean: {
src: ['ZeroClipboard.*'],
meta: ['bower.json', 'composer.json', 'LICENSE']
},
concat: {
options: {
stripBanners: true,
process: {
data: pkg
}
},
js: {
src: [
'src/meta/source-banner.tmpl',
'src/javascript/start.js',
'src/javascript/ZeroClipboard/state.js',
'src/javascript/ZeroClipboard/utils.js',
'src/javascript/ZeroClipboard/flash.js',
'src/javascript/ZeroClipboard/client.js',
'src/javascript/ZeroClipboard/core.js',
'src/javascript/ZeroClipboard/dom.js',
'src/javascript/ZeroClipboard/event.js',
'src/javascript/ZeroClipboard/deprecated.js',
'src/javascript/end.js'
],
dest: 'ZeroClipboard.js'
}
},
uglify: {
options: {
preserveComments: 'some',
report: 'min'
},
js: {
options: {
beautify: {
beautify: true,
// `indent_level` requires jshint -W106
indent_level: 2
},
mangle: false,
compress: false
},
src: ['ZeroClipboard.js'],
dest: 'ZeroClipboard.js'
},
minjs: {
src: ['ZeroClipboard.js'],
dest: 'ZeroClipboard.min.js'
}
},
mxmlc: {
options: {
rawConfig: '-static-link-runtime-shared-libraries=true'
},
swf: {
files: {
'ZeroClipboard.swf': ['src/flash/ZeroClipboard.as']
}
}
},
template: {
options: {
data: pkg
},
bower: {
files: {
'bower.json': ['src/meta/bower.json.tmpl']
}
},
composer: {
files: {
'composer.json': ['src/meta/composer.json.tmpl']
}
},
LICENSE: {
files: {
'LICENSE': ['src/meta/LICENSE.tmpl']
}
}
},
chmod: {
options: {
mode: '444'
},
src: ['ZeroClipboard.*'],
meta: ['bower.json', 'composer.json', 'LICENSE']
},
connect: {
server: {
options: {
port: localPort
}
}
},
qunit: {
file: ['test/**/*.js.html'],
http: {
options: {
urls: grunt.file.expand(['test/**/*.js.html']).map(function(testPage) {
return 'http://localhost:' + localPort + '/' + testPage + '?noglobals=true';
})
}
}
},
watch: {
options: {
spawn: false
},
Gruntfile: {
files: '<%= jshint.Gruntfile %>',
tasks: ['jshint:Gruntfile']
},
js: {
files: '<%= jshint.js %>',
tasks: ['jshint:js', 'unittest']
},
test: {
files: '<%= jshint.test %>',
tasks: ['jshint:test', 'unittest']
}
}
});
// These plugins provide necessary tasks
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-mxmlc');
grunt.loadNpmTasks('grunt-template');
grunt.loadNpmTasks('grunt-chmod');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-watch');
//
// Task aliases and chains
//
grunt.registerTask('unittest', ['connect', 'qunit']);
grunt.registerTask('test', ['jshint', 'clean:src', 'concat', 'mxmlc', 'chmod:src', 'unittest']);
grunt.registerTask('travis', ['test']);
// Default task
grunt.registerTask('default', ['jshint', 'clean', 'concat', 'uglify', 'mxmlc', 'template', 'chmod', 'unittest']);
};

8
assets/vendor/zeroclipboard/LICENSE vendored Normal file
View File

@ -0,0 +1,8 @@
The MIT License (MIT)
Copyright (c) 2014 Jon Rohan, James M. Greene
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.

71
assets/vendor/zeroclipboard/README.md vendored Normal file
View File

@ -0,0 +1,71 @@
# ZeroClipboard
The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible [Adobe Flash](http://en.wikipedia.org/wiki/Adobe_Flash) movie and a [JavaScript](http://en.wikipedia.org/wiki/JavaScript) interface. The "Zero" signifies that the library is invisible and the user interface is left entirely up to you.
## Simple Example
``` html
<html>
<body>
<button id="copy-button" data-clipboard-text="Copy Me!" title="Click to copy me.">Copy to Clipboard</button>
<script src="ZeroClipboard.js"></script>
<script src="main.js"></script>
</body>
</html>
```
``` js
// main.js
var client = new ZeroClipboard( document.getElementById("copy-button"), {
moviePath: "/path/to/ZeroClipboard.swf"
} );
client.on( "load", function(client) {
// alert( "movie is loaded" );
client.on( "complete", function(client, args) {
// `this` is the element that was clicked
this.style.display = "none";
alert("Copied text to clipboard: " + args.text );
} );
} );
```
See the [instructions](docs/instructions.md) for more advanced options in using the library on your site.
Here is a working [test page](http://zeroclipboard.org/#demo) where you can try out ZeroClipboard in your browser.
## Testing ZeroClipboard Locally
To test the page [demo page](http://zeroclipboard.org/#demo) locally, clone the [website repo](https://github.com/zeroclipboard/zeroclipboard.org).
## Support
This library is fully compatible with Flash Player 10, which requires that the clipboard copy operation be initiated by a user click event inside the Flash movie. This is achieved by automatically floating the invisible movie on top of a [DOM](http://en.wikipedia.org/wiki/Document_Object_Model) element of your choice. Standard mouse events are even propagated out to your DOM element, so you can still have rollover and mouse down effects.
Works in IE7+ and all of the evergreen browsers.
## Contributing
see [CONTRIBUTING.md](CONTRIBUTING.md)
## Releases
Starting with version [1.1.7](https://github.com/zeroclipboard/zeroclipboard/releases/tag/v1.1.7), ZeroClipboard uses [semantic versioning](http://semver.org/).
see [releases](https://github.com/zeroclipboard/zeroclipboard/releases)
## Roadmap
see [roadmap.md](docs/roadmap.md)
## Last Build
[![Build Status](https://secure.travis-ci.org/zeroclipboard/zeroclipboard.png?branch=master)](https://travis-ci.org/zeroclipboard/zeroclipboard)

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

12
assets/vendor/zeroclipboard/bower.json vendored Normal file
View File

@ -0,0 +1,12 @@
{
"name": "zeroclipboard",
"description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.",
"version": "1.3.2",
"main": ["./ZeroClipboard.js", "./ZeroClipboard.swf"],
"keywords": ["flash","clipboard","copy","cut","paste","zclip","clip","clippy"],
"license": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE",
"authors": [{"name":"Jon Rohan","url":"http://jonrohan.me/"},{"name":"James M. Greene","email":"james.m.greene@gmail.com","url":"http://jamesgreene.net/"}],
"homepage": "http://zeroclipboard.org/",
"repository": {"type":"git","url":"https://github.com/zeroclipboard/zeroclipboard.git"},
"location": "git://github.com/zeroclipboard/zeroclipboard.git"
}

View File

@ -0,0 +1,14 @@
{
"name": "zeroclipboard/zeroclipboard",
"description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.",
"version": "1.3.2",
"type": "library",
"keywords": ["flash","clipboard","copy","cut","paste","zclip","clip","clippy"],
"license": "MIT",
"authors": [{"name":"Jon Rohan","homepage":"http://jonrohan.me/","role":"Developer"},{"name":"James M. Greene","email":"james.m.greene@gmail.com","homepage":"http://jamesgreene.net/","role":"Developer"}],
"homepage": "http://zeroclipboard.org/",
"support": {
"source": "https://github.com/zeroclipboard/zeroclipboard.git",
"issues": "https://github.com/zeroclipboard/zeroclipboard/issues"
}
}

31
assets/vendor/zeroclipboard/index.js vendored Normal file
View File

@ -0,0 +1,31 @@
/**
* Module exports.
*/
exports = module.exports = setup;
/**
* Module dependencies.
*/
var http = require('http');
var send = require('send');
var root = __dirname;
var swf = '/ZeroClipboard.swf';
function setup () {
return http.createServer(onReq);
}
function onReq (req, res) {
send(req, swf)
.root(root)
.on('error', onError)
.pipe(res);
}
function onError (err) {
res.statusCode = err.status || 500;
res.end(err.message);
}

View File

@ -0,0 +1,68 @@
{
"name": "zeroclipboard",
"title": "ZeroClipboard",
"version": "1.3.2",
"description": "The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.",
"keywords": [
"flash",
"clipboard",
"copy",
"cut",
"paste",
"zclip",
"clip",
"clippy"
],
"homepage": "http://zeroclipboard.org/",
"licenses": [
{
"type": "MIT",
"url": "https://github.com/zeroclipboard/zeroclipboard/blob/master/LICENSE"
}
],
"contributors": [
{
"name": "Jon Rohan",
"url": "http://jonrohan.me/"
},
{
"name": "James M. Greene",
"email": "james.m.greene@gmail.com",
"url": "http://jamesgreene.net/"
}
],
"repository": {
"type": "git",
"url": "https://github.com/zeroclipboard/zeroclipboard.git"
},
"bugs": {
"url": "https://github.com/zeroclipboard/zeroclipboard/issues"
},
"dependencies": {
"send": "0"
},
"devDependencies": {
"qunitjs": "~1.12.0",
"qunit-composite": "~1.0.1",
"grunt": "~0.4.2",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-jshint": "~0.7.2",
"grunt-contrib-connect": "~0.5.0",
"grunt-contrib-qunit": "~0.3.0",
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.2.7",
"grunt-chmod": "~1.0.3",
"grunt-mxmlc": "~0.2.0",
"grunt-template": "~0.2.1",
"grunt-contrib-watch": "~0.5.3"
},
"main": "./ZeroClipboard.js",
"component": {
"scripts": {
"zeroclipboard": "ZeroClipboard.js"
}
},
"scripts": {
"test": "grunt travis --verbose"
}
}

19
bower.json Normal file
View File

@ -0,0 +1,19 @@
{
"name": "choosealicense.com",
"version": "0.0.1",
"homepage": "choosealicense.com",
"authors": [
"GitHub Inc."
],
"description": "A site to provide non-judgmental guidance on choosing a license for your open source project",
"main": "index.html",
"license": "MIT",
"dependencies": {
"zeroclipboard": "~1.3.2",
"jquery": "~1.11.0",
"html5shiv": "~3.7.0",
"selectivizr": "~1.0.2",
"qtip2": "~2.2.0",
"normalize-css": "~3.0.0"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -2,8 +2,9 @@
layout: default
class: home
hide_breadcrumbs: true
title: Choosing an OSS license doesnt need to be scary
title: Choosing an OSS license doesn't need to be scary
description: A site to provide non-judgmental guidance on choosing a license for your open source project
permalink: /
---
<h2>
@ -11,20 +12,24 @@ description: A site to provide non-judgmental guidance on choosing a license for
Which of the following best describes your situation?
<span>}</span>
</h2>
<ul class="situations cf">
<li class='whatever'>
<a href="licenses/mit"><img height='57' src='images/three-arrows@2x.png' width='72'></a>
<h3><a href="licenses/mit">I want it simple and permissive.</a></h3>
<ul class="triptych situations clearfix">
<li class="whatever">
<a href="licenses/mit">
<span class="triptych-sprite three-arrows"></span>
<h3>I want it simple and permissive.</h3>
</a>
<p>
The <a href="licenses/mit">MIT License</a> is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and dont hold you liable.
The <a href="licenses/mit">MIT License</a> is a permissive license that is short and to the point. It lets people do anything they want with your code as long as they provide attribution back to you and don't hold you liable.
</p>
<p>
<strong>jQuery</strong> and <strong>Rails</strong> use the MIT&nbsp;License.
</p>
</li>
<li class='patents'>
<a href="licenses/apache"><img height='72' src='images/lightbulb@2x.png' width='43'></a>
<h3><a href="licenses/apache">Im concerned about patents.</a></h3>
<li class="patents">
<a href="licenses/apache">
<span class="triptych-sprite lightbulb"></span>
<h3>I'm concerned about patents.</h3>
</a>
<p>
The <a href="licenses/apache/">Apache License</a> is a permissive license similar to the MIT License, but also provides an express grant of patent rights from contributors to users.
</p>
@ -32,19 +37,41 @@ description: A site to provide non-judgmental guidance on choosing a license for
<strong>Apache</strong>, <strong>SVN</strong>, and <strong>NuGet</strong> use the Apache&nbsp;License.
</p>
</li>
<li class='copyleft'>
<a href="licenses/gpl-v2"><img height='69' src='images/circular@2x.png' width='72'></a>
<h3><a href="licenses/gpl-v2">I care about sharing improvements.</a></h3>
<li class="copyleft">
<a href="licenses/gpl-v2">
<span class="triptych-sprite circular"></span>
<h3>I care about sharing improvements.</h3>
</a>
<p>
The GPL (<a href="licenses/gpl-v2">V2</a> or <a href="licenses/gpl-v3">V3</a>) is a copyleft license that requires others who modify your code to disclose their changes if they redistribute it in source or binary form. V3 is similar to V2, but further restricts use in hardware that forbids software alterations.
The GPL (<a href="licenses/gpl-v2">V2</a> or <a href="licenses/gpl-v3">V3</a>) is a copyleft license that requires anyone who distributes your code or a derivative work to make the source available under the same terms. V3 is similar to V2, but further restricts use in hardware that forbids software alterations.
</p>
<p>
<strong>Linux</strong>, <strong>Git</strong>, and <strong>WordPress</strong> use the GPL.
</p>
</li>
</ul>
<div class="see-more callout">
<p>What if none of these work for me or I want to retain all of my rights? <a href="licenses">More licenses are available</a>.</p>
<p>What if I don't want to choose a license? <a href="no-license">You don't have to</a>.</p>
</div>
<h2>
<span>{</span>
What if none of these work for me?
<span>}</span>
</h2>
<ul class="triptych see-more clearfix">
<li>
<h3>My content isn't code.</h3>
<p>
Check out <a href="http://creativecommons.org/choose/">Creative Commons</a>.
</p>
</li>
<li>
<h3>I want more choices.</h3>
<p>
<a href="licenses">More licenses are available</a>.
</p>
</li>
<li>
<h3>I don't want to choose a license.</h3>
<p>
<a href="no-license">You don't have to</a>.
</p>
</li>
</ul>

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,6 +0,0 @@
/*!
* selectivizr v1.0.2 - (c) Keith Clark, freely distributable under the terms of the MIT license.
* selectivizr.com
*/
(function(j){function A(a){return a.replace(B,h).replace(C,function(a,d,b){for(var a=b.split(","),b=0,e=a.length;b<e;b++){var s=D(a[b].replace(E,h).replace(F,h))+o,l=[];a[b]=s.replace(G,function(a,b,c,d,e){if(b){if(l.length>0){var a=l,f,e=s.substring(0,e).replace(H,i);if(e==i||e.charAt(e.length-1)==o)e+="*";try{f=t(e)}catch(k){}if(f){e=0;for(c=f.length;e<c;e++){for(var d=f[e],h=d.className,j=0,m=a.length;j<m;j++){var g=a[j];if(!RegExp("(^|\\s)"+g.className+"(\\s|$)").test(d.className)&&g.b&&(g.b===!0||g.b(d)===!0))h=u(h,g.className,!0)}d.className=h}}l=[]}return b}else{if(b=c?I(c):!v||v.test(d)?{className:w(d),b:!0}:null)return l.push(b),"."+b.className;return a}})}return d+a.join(",")})}function I(a){var c=!0,d=w(a.slice(1)),b=a.substring(0,5)==":not(",e,f;b&&(a=a.slice(5,-1));var l=a.indexOf("(");l>-1&&(a=a.substring(0,l));if(a.charAt(0)==":")switch(a.slice(1)){case "root":c=function(a){return b?a!=p:a==p};break;case "target":if(m==8){c=function(a){function c(){var d=location.hash,e=d.slice(1);return b?d==i||a.id!=e:d!=i&&a.id==e}k(j,"hashchange",function(){g(a,d,c())});return c()};break}return!1;case "checked":c=function(a){J.test(a.type)&&k(a,"propertychange",function(){event.propertyName=="checked"&&g(a,d,a.checked!==b)});return a.checked!==b};break;case "disabled":b=!b;case "enabled":c=function(c){if(K.test(c.tagName))return k(c,"propertychange",function(){event.propertyName=="$disabled"&&g(c,d,c.a===b)}),q.push(c),c.a=c.disabled,c.disabled===b;return a==":enabled"?b:!b};break;case "focus":e="focus",f="blur";case "hover":e||(e="mouseenter",f="mouseleave");c=function(a){k(a,b?f:e,function(){g(a,d,!0)});k(a,b?e:f,function(){g(a,d,!1)});return b};break;default:if(!L.test(a))return!1}return{className:d,b:c}}function w(a){return M+"-"+(m==6&&N?O++:a.replace(P,function(a){return a.charCodeAt(0)}))}function D(a){return a.replace(x,h).replace(Q,o)}function g(a,c,d){var b=a.className,c=u(b,c,d);if(c!=b)a.className=c,a.parentNode.className+=i}function u(a,c,d){var b=RegExp("(^|\\s)"+c+"(\\s|$)"),e=b.test(a);return d?e?a:a+o+c:e?a.replace(b,h).replace(x,h):a}function k(a,c,d){a.attachEvent("on"+c,d)}function r(a,c){if(/^https?:\/\//i.test(a))return c.substring(0,c.indexOf("/",8))==a.substring(0,a.indexOf("/",8))?a:null;if(a.charAt(0)=="/")return c.substring(0,c.indexOf("/",8))+a;var d=c.split(/[?#]/)[0];a.charAt(0)!="?"&&d.charAt(d.length-1)!="/"&&(d=d.substring(0,d.lastIndexOf("/")+1));return d+a}function y(a){if(a)return n.open("GET",a,!1),n.send(),(n.status==200?n.responseText:i).replace(R,i).replace(S,function(c,d,b,e,f){return y(r(b||f,a))}).replace(T,function(c,d,b){d=d||i;return" url("+d+r(b,a)+d+") "});return i}function U(){var a,c;a=f.getElementsByTagName("BASE");for(var d=a.length>0?a[0].href:f.location.href,b=0;b<f.styleSheets.length;b++)if(c=f.styleSheets[b],c.href!=i&&(a=r(c.href,d)))c.cssText=A(y(a));q.length>0&&setInterval(function(){for(var a=0,c=q.length;a<c;a++){var b=q[a];if(b.disabled!==b.a)b.disabled?(b.disabled=!1,b.a=!0,b.disabled=!0):b.a=b.disabled}},250)}if(!/*@cc_on!@*/true){var f=document,p=f.documentElement,n=function(){if(j.XMLHttpRequest)return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(a){return null}}(),m=/MSIE (\d+)/.exec(navigator.userAgent)[1];if(!(f.compatMode!="CSS1Compat"||m<6||m>8||!n)){var z={NW:"*.Dom.select",MooTools:"$$",DOMAssistant:"*.$",Prototype:"$$",YAHOO:"*.util.Selector.query",Sizzle:"*",jQuery:"*",dojo:"*.query"},t,q=[],O=0,N=!0,M="slvzr",R=/(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g,S=/@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g,T=/\burl\(\s*(["']?)(?!data:)([^"')]+)\1\s*\)/g,L=/^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/,B=/:(:first-(?:line|letter))/g,C=/(^|})\s*([^\{]*?[\[:][^{]+)/g,G=/([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g,H=/(:not\()?:(hover|enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g,P=/[^\w-]/g,K=/^(INPUT|SELECT|TEXTAREA|BUTTON)$/,J=/^(checkbox|radio)$/,v=m>6?/[\$\^*]=(['"])\1/:null,E=/([(\[+~])\s+/g,F=/\s+([)\]+~])/g,Q=/\s+/g,x=/^\s*((?:[\S\s]*\S)?)\s*$/,i="",o=" ",h="$1";(function(a,c){function d(){try{p.doScroll("left")}catch(a){setTimeout(d,50);return}b("poll")}function b(d){if(!(d.type=="readystatechange"&&f.readyState!="complete")&&((d.type=="load"?a:f).detachEvent("on"+d.type,b,!1),!e&&(e=!0)))c.call(a,d.type||d)}var e=!1,g=!0;if(f.readyState=="complete")c.call(a,i);else{if(f.createEventObject&&p.doScroll){try{g=!a.frameElement}catch(h){}g&&d()}k(f,"readystatechange",b);k(a,"load",b)}})(j,function(){for(var a in z){var c,d,b=j;if(j[a]){for(c=z[a].replace("*",a).split(".");(d=c.shift())&&(b=b[d]););if(typeof b=="function"){t=b;U();break}}}})}}})(this);

View File

@ -2,36 +2,17 @@
layout: default
permalink: licenses/
class: license-types
title: Licenses
---
<h1>Featured</h1>
<h2>Featured Licenses</h2>
{% for page in site.pages %}
{% assign sorted_pages = site.pages | sort: 'path' %}
{% for page in sorted_pages %}
{% if page.layout == "license" %}
{% if page.featured %}
<table class='license-rules'>
<tr>
<th class='name'>
<a href="{{ page.permalink }}">{{ page.title }}</a>
</th>
<th class='summary'>
{{ page.description }} <a href="{{ page.permalink }}">View full license »</a>
</th>
</tr>
{% assign types = "required|permitted|forbidden" | split: "|" %}
{% for type in types %}
<tr>
<td class="label">{{ type | capitalize }}</td>
<td>
<ul class="license-{{ type }}">
{% for req in page[type] %}
<li class="{{ req }}">{{ site.rules[type][req].label }}</li>
{% endfor %}
</ul>
</td>
</tr>
{% endfor %}
</table>
{% include license-overview.html %}
{% endif %}
{% endif %}
{% endfor %}
@ -42,32 +23,10 @@ class: license-types
community. For example, Perl developers often choose the Artistic License.
</p>
{% for page in site.pages %}
{% for page in sorted_pages %}
{% if page.layout == "license" %}
{% if page.featured != true %}
<table class='license-rules'>
<tr>
<th class='name'>
<a href="{{ page.permalink }}">{{ page.title }}</a>
</th>
<th class='summary'>
{{ page.description }} <a href="{{ page.permalink }}">View full license »</a>
</th>
</tr>
{% assign types = "required|permitted|forbidden" | split: "|" %}
{% for type in types %}
<tr>
<td class="label">{{ type | capitalize }}</td>
<td>
<ul class="license-{{ type }}">
{% for req in page[type] %}
<li class="{{ req }}">{{ site.rules[type][req].label }}</li>
{% endfor %}
</ul>
</td>
</tr>
{% endfor %}
</table>
{% if page.featured != true and page.hide-from-license-list != true %}
{% include license-overview.html %}
{% endif %}
{% endif %}
{% endfor %}

View File

@ -1,6 +1,6 @@
---
comment: \
because the for loop is being filtered by layout, the normal rindex0 check
because the for loop is being filtered by layout, the normal rindex0 check
for the trailing comma doesn't work. Count the number of licenses and manually
increment an index to see if we're on the true last iteration.
---
@ -8,21 +8,21 @@ comment: \
[
{% for page in site.pages %}{% if page.layout == "license" %}
{
"title": "{{ page.title }}",
"permalink": "{{ page.permalink }}",
"featured": {% if page.featured %}true{% else %}false{% endif %},
"description": "{{ page.description | replace: '"', '\"' }}",
"how": "{{ page.how | replace: '"', '\"' }}",
"rules": {
{% for category in site.rules %}
{% assign cat = category[0] %}
"{{ cat }}": [
{% for rule in page[cat] %}
"{{ rule }}"{% if forloop.rindex0 > 0 %},{% endif %}
{% endfor %}
]{% if forloop.rindex0 > 0 %},{% endif %}
{% endfor %}
}{% assign i = i | plus: 1 %}
"title": "{{ page.title }}",
"permalink": "{{ page.permalink }}",
"featured": {% if page.featured %}true{% else %}false{% endif %},
"description": "{{ page.description | replace: '"', '\"' }}",
"how": "{{ page.how | replace: '"', '\"' }}",
"rules": {
{% for category in site.rules %}
{% assign cat = category[0] %}
"{{ cat }}": [
{% for rule in page[cat] %}
"{{ rule }}"{% if forloop.rindex0 > 0 %},{% endif %}
{% endfor %}
]{% if forloop.rindex0 > 0 %},{% endif %}
{% endfor %}
}{% assign i = i | plus: 1 %}
}{% if i < count %},{% endif %}
{% endif %}{% endfor %}
]
]

View File

@ -1,5 +1,8 @@
---
title: Affero GPL
category: GPL
tab-slug: agpl
hide-from-license-list: true
layout: license
permalink: /licenses/agpl/
source: http://www.gnu.org/licenses/agpl-3.0.txt
@ -17,14 +20,12 @@ permitted:
- commercial-use
- modifications
- distribution
- private-use
forbidden:
- no-liability
- no-sublicense
using:
Some Project: "#"
---
GNU AFFERO GENERAL PUBLIC LICENSE
@ -662,8 +663,8 @@ the "copyright" line and a pointer to where the full notice is found.
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
@ -687,4 +688,4 @@ specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
<http://www.gnu.org/licenses/>.

Some files were not shown because too many files have changed in this diff Show More