Merge remote-tracking branch 'origin/gh-pages' into content-B
8
.gitignore
vendored
@ -2,3 +2,11 @@
|
|||||||
/_site
|
/_site
|
||||||
/node_modules
|
/node_modules
|
||||||
/.bundle
|
/.bundle
|
||||||
|
assets/vendor/clipboard/src
|
||||||
|
assets/vendor/clipboard/test
|
||||||
|
assets/vendor/selectivizr/tests
|
||||||
|
assets/vendor/qtip2/basic
|
||||||
|
/vendor
|
||||||
|
Gemfile.lock
|
||||||
|
/.sass-cache
|
||||||
|
.ruby-version
|
||||||
|
@ -1 +0,0 @@
|
|||||||
2.0.0
|
|
@ -14,3 +14,10 @@ branches:
|
|||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
||||||
|
|
||||||
|
sudo: false
|
||||||
|
cache: bundler
|
||||||
|
@ -24,12 +24,12 @@ 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.
|
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.
|
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),
|
For example, to [change this file](/CONTRIBUTING.md),
|
||||||
find it in the GitHub repository. Then click the `Edit` button. Make your
|
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.
|
changes, type in a commit message, and click the `Propose File Change` button.
|
||||||
That’s it!
|
That’s 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).
|
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](/README.md).
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
|
|
||||||
|
3
Gemfile
@ -1,9 +1,10 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
ruby File.read(".ruby-version").strip
|
|
||||||
|
|
||||||
gem "github-pages"
|
gem "github-pages"
|
||||||
|
gem "jekyll-seo-tag"
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem "html-proofer"
|
gem "html-proofer"
|
||||||
gem "rake"
|
gem "rake"
|
||||||
|
gem "rspec"
|
||||||
end
|
end
|
||||||
|
81
Gemfile.lock
@ -1,81 +0,0 @@
|
|||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
RedCloth (4.2.9)
|
|
||||||
blankslate (2.1.2.4)
|
|
||||||
classifier (1.3.4)
|
|
||||||
fast-stemmer (>= 1.0.0)
|
|
||||||
colorator (0.1)
|
|
||||||
colored (1.2)
|
|
||||||
commander (4.1.5)
|
|
||||||
highline (~> 1.6.11)
|
|
||||||
ethon (0.6.2)
|
|
||||||
ffi (>= 1.3.0)
|
|
||||||
mime-types (~> 1.18)
|
|
||||||
fast-stemmer (1.0.2)
|
|
||||||
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)
|
|
||||||
liquid (~> 2.5.2)
|
|
||||||
listen (~> 1.3)
|
|
||||||
maruku (~> 0.7.0)
|
|
||||||
pygments.rb (~> 0.5.0)
|
|
||||||
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)
|
|
||||||
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
|
|
||||||
github-pages
|
|
||||||
html-proofer
|
|
||||||
rake
|
|
131
README.md
@ -1,28 +1,24 @@
|
|||||||
# 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)
|
# Choosealicense.com
|
||||||
|
|
||||||
|
[![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.
|
Like a Choose Your Own Adventure site, but only much less interesting.
|
||||||
|
|
||||||
# Intro
|
## Intro
|
||||||
|
|
||||||
A lot of repositories on GitHub.com don't have a license. GitHub provides
|
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
|
[ChooseALicense.com](http://www.choosealicense.com "Choose A Licence website") is designed to help people make an informed decision about licenses.
|
||||||
licenses.
|
|
||||||
|
|
||||||
# Immediate Goals
|
## Immediate Goals
|
||||||
|
|
||||||
* Politics Free - Let's just not get into it.
|
* Non-partisan. Our goal is to help you find a license that meets *your* goals.
|
||||||
* Well designed, but that goes without saying.
|
* Well designed, but that goes without saying.
|
||||||
* The homepage should have just enough to help 99% of folks make a decision.
|
* 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 to specific
|
* For the 1%, the site will contain a list of licenses common to specific communities and situations.
|
||||||
communities and situations.
|
* 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.
|
||||||
* 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
|
## Run It On Your Machine
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/github/choosealicense.com.git
|
git clone https://github.com/github/choosealicense.com.git
|
||||||
@ -32,49 +28,80 @@ script/server
|
|||||||
```
|
```
|
||||||
Open `http://localhost:4000` in your favorite browser.
|
Open `http://localhost:4000` in your favorite browser.
|
||||||
|
|
||||||
# Adding a license
|
## Adding a license
|
||||||
|
|
||||||
The text of the license should be wrapped to a 78 character width.
|
Licenses sit in the `/_licenses` folder. The text of the license should be wrapped to a 78 character width. 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:
|
||||||
|
|
||||||
Licenses sit in the `/licenses` folder. Each license has YAML front matter
|
### 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
|
#### Required fields
|
||||||
* `layout` - This should be `license`
|
|
||||||
* `permalink` - The absolute URL to the license, beginning with `/licenses/`
|
|
||||||
* `source` - URL to the license source text
|
|
||||||
* `note` - The note field in the sidebar (optional)
|
|
||||||
* `how` - How to use the license, also in the sidebar
|
|
||||||
* `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
|
* `title` - The SPDX-compliant, human-readable license name
|
||||||
used as the list of licenses available when creating a repository. When we
|
* `source` - The URL to the license source text
|
||||||
create a repository, we will replace certain strings in the license with
|
* `description` - A human-readable description of the license
|
||||||
variables from the repository. These can be used to create accurate copyright
|
* `how` - Instructions on how to implement the license
|
||||||
notices. The available variables are:
|
* `required` - Bulleted list of required rules
|
||||||
|
* `permitted` - Bulleted list of permitted rules
|
||||||
|
* `forbidden` - Bulleted list of forbidden rules
|
||||||
|
|
||||||
* `[fullname]` - The full name or username of the repository owner
|
#### Optional fields
|
||||||
* `[login]` - The repository owner's username
|
|
||||||
* `[email]` - The repository owner's primary email address
|
|
||||||
* `[project]` - The repository name
|
|
||||||
* `[description]` - The description of the repository
|
|
||||||
* `[year]` - The current year
|
|
||||||
|
|
||||||
# Rules
|
* `note` - Additional information about the licenses
|
||||||
|
* `using` - A list of notable projects using the license in the form of `project_name: "url"`
|
||||||
|
* `hidden` - Whether the license is hidden from the license list (defaults to false)
|
||||||
|
* `redirect_from` - Relative path(s) to redirect to the license from
|
||||||
|
* `featured` - Whether the license should be featured on the main page (defaults to false)
|
||||||
|
* `nickname` - A shorter, human-readable license name where the SPDX license name is long
|
||||||
|
* `variant` - Whether the license is a variant of a family of licenses (e.g., GPL)
|
||||||
|
* `family` - If part of a license family, the name of the license family (e.g., `GPL`)
|
||||||
|
* `tab-slug` - If part of a license family, a license slug containing only `a-z`, `0-9`, and `_` characters
|
||||||
|
|
||||||
Rules (the license's properties) are stored as a bulleted list within the
|
### Auto-populated fields
|
||||||
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 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 content of this project itself is licensed under the
|
#### Fields
|
||||||
[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
|
* `fullname` - The full name or username of the repository owner
|
||||||
is licensed under the [MIT license](http://opensource.org/licenses/mit-license.php).
|
* `login` - The repository owner's username
|
||||||
|
* `email` - The repository owner's primary email address
|
||||||
|
* `project` - The repository name
|
||||||
|
* `description` - The description of the repository
|
||||||
|
* `year` - The current year
|
||||||
|
|
||||||
|
## License properties
|
||||||
|
|
||||||
|
The license properties (rules) are stored as a bulleted list within the licenses YAML front matter. 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 `_data/rules.yml` and reference it in the appropriate license.
|
||||||
|
|
||||||
|
### Rules
|
||||||
|
|
||||||
|
#### Required
|
||||||
|
|
||||||
|
* `include-copyright` - Include a copy of the license and copyright notice with the code.
|
||||||
|
* `document-changes` - Indicate significant changes made to the code.
|
||||||
|
* `disclose-source` - Source code must be made available when distributing the software. In the case of LGPL and OSL 3.0, the source for the library (and not the entire program) must be made available.
|
||||||
|
* `network-use-disclose` - Users who interact with the software via network are given the right to receive a copy of the corresponding source code.
|
||||||
|
* `library-usage` - The library may be used within a non-open-source application.
|
||||||
|
* `rename` - You must change the name of the software if you modify it.
|
||||||
|
|
||||||
|
#### Permitted
|
||||||
|
|
||||||
|
* `commercial-use` - This software and derivatives may be used for commercial purposes.
|
||||||
|
* `modifications` - This software may be modified.
|
||||||
|
* `distribution` - You may distribute this software.
|
||||||
|
* `sublicense` - You may grant a sublicense to modify and distribute this software to third parties not included in the license.
|
||||||
|
* `private-use` - You may use and modify the software without distributing it.
|
||||||
|
* `patent-use` - This license provides an express grant of patent rights from the contributor to the recipient.
|
||||||
|
|
||||||
|
#### Forbidden
|
||||||
|
|
||||||
|
* `trademark-use` - 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.
|
||||||
|
* `no-liability` - Software is provided without warranty and the software author/license owner cannot be held liable for damages.
|
||||||
|
* `no-sublicense` - You may not grant a sublicense to modify and distribute this software to third parties not included in the license.
|
||||||
|
* `modifications` - This software may not be modified.
|
||||||
|
* `distribution` - You may not distribute this software.
|
||||||
|
* `sublicense` - You may not grant a sublicense to modify and distribute this software to third parties not included in the 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).
|
||||||
|
11
Rakefile
@ -1,7 +1,14 @@
|
|||||||
require "html/proofer"
|
require "html/proofer"
|
||||||
|
require 'rspec/core/rake_task'
|
||||||
|
|
||||||
|
desc "Run specs"
|
||||||
|
RSpec::Core::RakeTask.new do |t|
|
||||||
|
t.pattern = 'spec/**/*_spec.rb'
|
||||||
|
t.rspec_opts = ["--order", "rand", "--color"]
|
||||||
|
end
|
||||||
|
|
||||||
task :test do
|
task :test do
|
||||||
sh "bundle exec jekyll build --trace"
|
sh "bundle exec jekyll build --trace"
|
||||||
# ignore href="#" for the "Copy to clipboard" button
|
HTML::Proofer.new("./_site", :check_html => true).run
|
||||||
HTML::Proofer.new("./_site").run
|
Rake::Task["spec"].invoke
|
||||||
end
|
end
|
||||||
|
112
_config.yml
@ -1,76 +1,50 @@
|
|||||||
---
|
---
|
||||||
title: ChooseALicense.com
|
title: Choose a License
|
||||||
|
description: Non-judgmental guidance on choosing a license for your open source project
|
||||||
relative_permalinks: false
|
relative_permalinks: false
|
||||||
markdown: kramdown
|
markdown: kramdown
|
||||||
|
url: "http://choosealicense.com"
|
||||||
|
|
||||||
rules:
|
collections:
|
||||||
|
licenses:
|
||||||
|
output: true
|
||||||
|
permalink: /licenses/:path/
|
||||||
|
|
||||||
required:
|
defaults:
|
||||||
- description: Include a copy of the license and copyright notice with the code.
|
-
|
||||||
label: License and copyright notice
|
scope:
|
||||||
tag: include-copyright
|
path: ""
|
||||||
- description: Indicate significant changes made to the code.
|
type: "licenses"
|
||||||
label: State Changes
|
values:
|
||||||
tag: document-changes
|
layout: license
|
||||||
- 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.
|
featured: false
|
||||||
label: Disclose Source
|
hidden: false
|
||||||
tag: disclose-source
|
variant: false
|
||||||
- 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:
|
|
||||||
- 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:
|
|
||||||
- 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:
|
exclude:
|
||||||
- app.coffee
|
- app.coffee
|
||||||
- CNAME
|
- CNAME
|
||||||
- CONTRIBUTING.md
|
- CONTRIBUTING.md
|
||||||
- Gemfile
|
- Gemfile
|
||||||
- Gemfile.lock
|
- Gemfile.lock
|
||||||
- LICENSE.md
|
- LICENSE.md
|
||||||
- licenses.json
|
- Rakefile
|
||||||
- Rakefile
|
- README.md
|
||||||
- README.md
|
- script
|
||||||
- script
|
- vendor/bundle
|
||||||
- vendor
|
- test
|
||||||
|
- tests
|
||||||
|
- assets/vendor/selectivizr/tests
|
||||||
|
- assets/vendor/clipboard/test
|
||||||
|
|
||||||
|
gems:
|
||||||
|
- jekyll-sitemap
|
||||||
|
- jekyll-redirect-from
|
||||||
|
- jekyll-seo-tag
|
||||||
|
|
||||||
|
sass:
|
||||||
|
sass_dir: _sass
|
||||||
|
style: :compressed
|
||||||
|
|
||||||
|
twitter:
|
||||||
|
username: "@github"
|
||||||
|
23
_data/fields.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# 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:
|
||||||
|
|
||||||
|
- name: fullname
|
||||||
|
description: The full name or username of the repository owner
|
||||||
|
|
||||||
|
- name: login
|
||||||
|
description: The repository owner's username
|
||||||
|
|
||||||
|
- name: email
|
||||||
|
description: The repository owner's primary email address
|
||||||
|
|
||||||
|
- name: project
|
||||||
|
description: The repository name
|
||||||
|
|
||||||
|
- name: description
|
||||||
|
description: The description of the repository
|
||||||
|
|
||||||
|
- name: year
|
||||||
|
description: The current year
|
68
_data/meta.yml
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
# Each license has YAML front matter describing the license's properties.
|
||||||
|
# The available fields are:
|
||||||
|
|
||||||
|
- name: title
|
||||||
|
description: The SPDX-compliant, human-readable license name
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- name: source
|
||||||
|
description: The URL to the license source text
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- name: description
|
||||||
|
description: A human-readable description of the license
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- name: how
|
||||||
|
description: Instructions on how to implement the license
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- name: required
|
||||||
|
description: Bulleted list of required rules
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- name: permitted
|
||||||
|
description: Bulleted list of permitted rules
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- name: forbidden
|
||||||
|
description: Bulleted list of forbidden rules
|
||||||
|
required: true
|
||||||
|
|
||||||
|
# Optional fields
|
||||||
|
|
||||||
|
- name: note
|
||||||
|
description: Additional information about the licenses
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: using
|
||||||
|
description: 'A list of notable projects using the license in the form of `project_name: "url"`'
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: hidden
|
||||||
|
description: Whether the license is hidden from the license list (defaults to false)
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: redirect_from
|
||||||
|
description: Relative path(s) to redirect to the license from
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: featured
|
||||||
|
description: Whether the license should be featured on the main page (defaults to false)
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: nickname
|
||||||
|
description: A shorter, human-readable license name where the SPDX license name is long
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: variant
|
||||||
|
description: Whether the license is a variant of a family of licenses (e.g., GPL)
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: family
|
||||||
|
description: If part of a license family, the name of the license family (e.g., `GPL`)
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- name: tab-slug
|
||||||
|
description: If part of a license family, a license slug containing only `a-z`, `0-9`, and `_` characters
|
||||||
|
required: false
|
59
_data/rules.yml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
required:
|
||||||
|
- 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 and OSL 3.0, the source for the library (and not the entire program) must be made available.
|
||||||
|
label: Disclose Source
|
||||||
|
tag: disclose-source
|
||||||
|
- description: Users who interact with the software via network are given the right to receive a copy of the corresponding source code.
|
||||||
|
label: Network Use is Distribution
|
||||||
|
tag: network-use-disclose
|
||||||
|
- 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:
|
||||||
|
- 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 Use
|
||||||
|
tag: patent-use
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- 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
|
@ -8,4 +8,32 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "http://schema.org",
|
||||||
|
"@type": "BreadcrumbList",
|
||||||
|
"itemListElement": [{
|
||||||
|
"@type": "ListItem",
|
||||||
|
"position": 1,
|
||||||
|
"item": {
|
||||||
|
"@id": "{{ site.github.url }}/",
|
||||||
|
"name": "Home"
|
||||||
|
}
|
||||||
|
},{% if page.layout == "license" %}{
|
||||||
|
"@type": "ListItem",
|
||||||
|
"position": 2,
|
||||||
|
"item": {
|
||||||
|
"@id": "{{ site.github.url }}/licenses",
|
||||||
|
"name": "Licenses"
|
||||||
|
}
|
||||||
|
},{% endif %}{
|
||||||
|
"@type": "ListItem",
|
||||||
|
"position": {% if page.layout == "license" %}3{% else %}2{% endif %},
|
||||||
|
"item": {
|
||||||
|
"@id": "{{ site.github.url }}{{ page.url }}",
|
||||||
|
"name": {{ page.title | jsonify }}
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
</script>
|
||||||
{% endunless %}
|
{% endunless %}
|
1
_includes/css/normalize.min.css
vendored
@ -1 +0,0 @@
|
|||||||
/*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}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:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}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}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}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}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}
|
|
179
_includes/css/responsive.css
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
/* iPads (landscape) ----------- */
|
||||||
|
@media only screen and (max-width : 1050px) {
|
||||||
|
.container {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 20px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.triptych {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.triptych li {
|
||||||
|
width: 33%;
|
||||||
|
margin-left: 0;
|
||||||
|
padding: 0 20px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.triptych h3 {
|
||||||
|
width: auto;
|
||||||
|
padding: 0 30px;
|
||||||
|
}
|
||||||
|
.home h2 {
|
||||||
|
line-height: 30px;
|
||||||
|
padding: 20px 100px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.home h2 span {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
top: 50%;
|
||||||
|
margin-top: -22px;
|
||||||
|
}
|
||||||
|
.home h2 span:first-child {
|
||||||
|
left: 65px;
|
||||||
|
}
|
||||||
|
.home h2 span:last-child {
|
||||||
|
right: 65px;
|
||||||
|
}
|
||||||
|
.sidebar a.button {
|
||||||
|
margin: 14px 0 20px;
|
||||||
|
}
|
||||||
|
.license-body {
|
||||||
|
width: calc(100% - 250px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* iPads (portrait) ----------- */
|
||||||
|
@media only screen and (max-width : 800px), (max-device-width : 1050px) and (orientation : portrait) {
|
||||||
|
.triptych h3 {
|
||||||
|
width: auto;
|
||||||
|
padding: 0 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.sidebar {
|
||||||
|
float: left;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
.license-body {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.license-rules {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.license-details {
|
||||||
|
width: 65%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smartphones ----------- */
|
||||||
|
@media only screen and (max-width : 680px) {
|
||||||
|
.triptych li {
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
.home h2 {
|
||||||
|
padding: 20px 70px;
|
||||||
|
}
|
||||||
|
.home h2 span:first-child {
|
||||||
|
left: 35px;
|
||||||
|
}
|
||||||
|
.home h2 span:last-child {
|
||||||
|
right: 35px;
|
||||||
|
}
|
||||||
|
.license-family {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.license-family-heading {
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.license-details {
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.license-variations {
|
||||||
|
height: auto;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
||||||
|
.license-variations ul {
|
||||||
|
height: 31px;
|
||||||
|
}
|
||||||
|
.site-footer {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.site-footer nav, .site-footer p, .with-love {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
.site-footer nav {
|
||||||
|
margin: 0 auto 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smartphones (landscape) ----------- */
|
||||||
|
@media only screen and (max-width : 481px) {
|
||||||
|
h1 {
|
||||||
|
font-size: 30px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
.home h1 {
|
||||||
|
font-size: 33px;
|
||||||
|
}
|
||||||
|
.home h2 {
|
||||||
|
font-size: 17px;
|
||||||
|
line-height: 20px;
|
||||||
|
padding: 20px 45px;
|
||||||
|
}
|
||||||
|
.home h2 span:first-child {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
.home h2 span:last-child {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
.home h2 span {
|
||||||
|
margin-top: -16px;
|
||||||
|
}
|
||||||
|
.sidebar {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.license-body {
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
.license-body pre {
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
.license-rules:not(.license-rules-sidebar) li {
|
||||||
|
margin-right: 5px;
|
||||||
|
font-size: 10px;
|
||||||
|
-webkit-text-size-adjust: none;
|
||||||
|
}
|
||||||
|
.license-rules:not(.license-rules-sidebar) li span {
|
||||||
|
background-size: 44px;
|
||||||
|
width: 10px;
|
||||||
|
height: 10px;
|
||||||
|
top: 1px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.license-rules:not(.license-rules-sidebar) .license-required span {
|
||||||
|
background-position: -34px 0;
|
||||||
|
}
|
||||||
|
.license-rules:not(.license-rules-sidebar) .license-permitted span {
|
||||||
|
background-position: -24px 0px;
|
||||||
|
}
|
||||||
|
.license-rules:not(.license-rules-sidebar) .license-forbidden span {
|
||||||
|
background-position: -14px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Smartphones (portrait) ----------- */
|
||||||
|
@media only screen and (max-width : 321px) {
|
||||||
|
.container {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
}
|
@ -15,15 +15,21 @@
|
|||||||
|
|
||||||
</div> <!-- /container -->
|
</div> <!-- /container -->
|
||||||
|
|
||||||
{% if page.layout == "license" or page.class == "license-types" %}
|
{% if page.collection == "licenses" or page.class == "license-types" %}
|
||||||
<script src="/js/javascript.js"></script>
|
<script src="/assets/vendor/jquery/jquery.min.js"></script>
|
||||||
|
<script src="/assets/vendor/qtip2/jquery.qtip.min.js"></script>
|
||||||
|
<script src="/assets/vendor/clipboard/dist/clipboard.min.js"></script>
|
||||||
|
<script>
|
||||||
|
window.annotations = {{ site.data.rules | jsonify }};
|
||||||
|
</script>
|
||||||
|
<script src="/assets/js/app.js"></script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
!function(L,I,C,e,N,S,E){L.GoogleAnalyticsObject=N,L[N]=L[N]||function(){
|
||||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
(L[N].q=L[N].q||[]).push(arguments)},L[N].l=+new Date,S=I.createElement(C),
|
||||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
E=I.getElementsByTagName(C)[0],S.src=e,E.parentNode.insertBefore(S,E)
|
||||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
}(window,document,"script","//www.google-analytics.com/analytics.js","ga");
|
||||||
|
|
||||||
ga('create', 'UA-3769691-24', 'choosealicense.com');
|
ga('create', 'UA-3769691-24', 'choosealicense.com');
|
||||||
ga('send', 'pageview');
|
ga('send', 'pageview');
|
||||||
|
@ -1,16 +1,19 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head itemscope itemtype="http://schema.org/WebSite">
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<title>{% if page.title %}{{ page.title | markdownify | strip_html }} - {% endif %}{{ site.title}}</title>
|
|
||||||
{% if page.description %}<meta name="description" content="{{ page.description | strip_html }}">{% endif %}
|
|
||||||
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Chivo:900">
|
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Chivo:900">
|
||||||
<link rel="stylesheet" href="/css/application.css">
|
<link rel="stylesheet" href="/assets/css/application.css?v={{ site.github.build_revision }}">
|
||||||
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<script src="/js/html5shiv.js"></script>
|
<script src="/assets/vendor/html5shiv/dist/html5shiv.js"></script>
|
||||||
|
<script src="/assets/vendor/selectivizr/selectivizr.js"></script>
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
|
||||||
|
|
||||||
|
{% seo %}
|
||||||
</head>
|
</head>
|
||||||
<body class="{{ page.layout }}{% if page.class %} {{ page.class }}{% endif %}">
|
<body class="{{ page.layout }}{% if page.class %} {{ page.class }}{% endif %}">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
@ -18,5 +21,5 @@
|
|||||||
{% include breadcrumbs.html %}
|
{% include breadcrumbs.html %}
|
||||||
|
|
||||||
{% if page.title %}
|
{% if page.title %}
|
||||||
<h1>{{ page.title | markdownify | strip_html }}</h1>
|
<h1>{{ page.title | markdownify | strip_html | strip_newlines }}</h1>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
9
_includes/js/ZeroClipboard.min.js
vendored
@ -1,9 +0,0 @@
|
|||||||
var annotations = {
|
|
||||||
{% for type_hash in site.rules %}
|
|
||||||
"{{ type_hash[0] }}": {
|
|
||||||
{% for rule_hash in type_hash[1] %}
|
|
||||||
"{{ rule_hash.tag }}" : "{{ rule_hash.description }}"{% if forloop.rindex0 > 0 %},{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
}{% if forloop.rindex0 > 0 %},{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
};
|
|
@ -1,131 +0,0 @@
|
|||||||
// Generated by CoffeeScript 1.6.3
|
|
||||||
(function() {
|
|
||||||
var Choosealicense;
|
|
||||||
|
|
||||||
Choosealicense = (function() {
|
|
||||||
Choosealicense.prototype.flashAvailable = function() {
|
|
||||||
if (typeof ActiveXObject !== "undefined" && ActiveXObject !== null) {
|
|
||||||
return !!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"));
|
|
||||||
} else {
|
|
||||||
return !!navigator.mimeTypes["application/x-shockwave-flash"];
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Choosealicense.prototype.selectText = function(element) {
|
|
||||||
var range, selection;
|
|
||||||
if (document.body.createTextRange) {
|
|
||||||
range = document.body.createTextRange();
|
|
||||||
range.moveToElementText(element);
|
|
||||||
return range.select();
|
|
||||||
} else if (window.getSelection) {
|
|
||||||
selection = window.getSelection();
|
|
||||||
range = document.createRange();
|
|
||||||
range.selectNodeContents(element);
|
|
||||||
selection.removeAllRanges();
|
|
||||||
return selection.addRange(range);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Choosealicense.prototype.qtip_position = {
|
|
||||||
my: "top center",
|
|
||||||
at: "bottom center"
|
|
||||||
};
|
|
||||||
|
|
||||||
Choosealicense.prototype.categories = {
|
|
||||||
required: "Required",
|
|
||||||
permitted: "Permitted",
|
|
||||||
forbidden: "Forbidden"
|
|
||||||
};
|
|
||||||
|
|
||||||
function Choosealicense() {
|
|
||||||
this.initTooltips();
|
|
||||||
this.initClipboard();
|
|
||||||
this.initLicenseVariationNav();
|
|
||||||
}
|
|
||||||
|
|
||||||
Choosealicense.prototype.initTooltips = function() {
|
|
||||||
var category, label, rules, text, _ref;
|
|
||||||
for (category in annotations) {
|
|
||||||
rules = annotations[category];
|
|
||||||
for (label in rules) {
|
|
||||||
text = rules[label];
|
|
||||||
$(".license-rules ul.license-" + category + " li." + label).attr("title", text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ref = this.categories;
|
|
||||||
for (category in _ref) {
|
|
||||||
label = _ref[category];
|
|
||||||
$(".license-" + category + " li").qtip({
|
|
||||||
content: {
|
|
||||||
text: false,
|
|
||||||
title: {
|
|
||||||
text: label
|
|
||||||
}
|
|
||||||
},
|
|
||||||
position: this.qtip_position,
|
|
||||||
style: {
|
|
||||||
classes: "qtip-shadow qtip-" + category
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
|
|
||||||
Choosealicense.prototype.initZeroClipboard = function() {
|
|
||||||
var clip;
|
|
||||||
$(".js-clipboard-button").data("clipboard-prompt", $(".js-clipboard-button").text());
|
|
||||||
clip = new ZeroClipboard($(".js-clipboard-button"), {
|
|
||||||
moviePath: "/js/ZeroClipboard.swf"
|
|
||||||
});
|
|
||||||
clip.on("mouseout", this.clipboardMouseout);
|
|
||||||
clip.on("complete", this.clipboardComplete);
|
|
||||||
return clip;
|
|
||||||
};
|
|
||||||
|
|
||||||
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]);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
Choosealicense.prototype.initClipboard = function() {
|
|
||||||
if ((typeof ZeroClipboard !== "undefined" && ZeroClipboard !== null) && this.flashAvailable()) {
|
|
||||||
return this.initZeroClipboard();
|
|
||||||
} else {
|
|
||||||
return this.initAlternativeClipboard();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Choosealicense.prototype.clipboardMouseout = function(client, args) {
|
|
||||||
return this.innerText = $(this).data("clipboard-prompt");
|
|
||||||
};
|
|
||||||
|
|
||||||
Choosealicense.prototype.clipboardComplete = function(client, args) {
|
|
||||||
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;
|
|
||||||
|
|
||||||
})();
|
|
||||||
|
|
||||||
$(function() {
|
|
||||||
return new Choosealicense();
|
|
||||||
});
|
|
||||||
|
|
||||||
}).call(this);
|
|
6
_includes/js/jquery-1.10.2.min.js
vendored
@ -1,26 +1,49 @@
|
|||||||
<div class="license-family clearfix">
|
<div class="license-family clearfix">
|
||||||
<div class="license-family-heading">
|
<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>
|
<h3 class="license-family-name">
|
||||||
|
<a href="{{ license.url }}">
|
||||||
|
{% if license.family %}
|
||||||
|
{{ license.family }}
|
||||||
|
{% else %}
|
||||||
|
{% if license.nickname %}
|
||||||
|
{{ license.nickname }}
|
||||||
|
{% else %}
|
||||||
|
{{ license.title }}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</a>
|
||||||
|
</h3>
|
||||||
|
|
||||||
<p class="license-family-description">{{ page.description }}</p>
|
<p class="license-family-description">{{ license.description }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="license-details">
|
<div class="license-details">
|
||||||
<div class="license-variations js-license-variations">
|
<div class="license-variations js-license-variations">
|
||||||
<!-- always show this div, even w/o variations, for proper spacing -->
|
<!-- always show this div, even w/o variations, for proper spacing -->
|
||||||
{% if page.tab-slug %}
|
{% if license.family %}
|
||||||
<ul class="nav-pills js-nav-pills">
|
<ul class="nav-pills js-nav-pills">
|
||||||
{% for variation in site.pages %}
|
{% assign variations = site.licenses | where:"hidden",false | where:"family",license.family %}
|
||||||
{% if variation.category and variation.category == page.category %}
|
{% for variation in variations %}
|
||||||
<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>
|
<li{% if license.tab-slug == variation.tab-slug %} class="active"{% endif %}><a href="#{{ variation.tab-slug }}" data-selected-tab="variation-{{ variation.tab-slug }}">
|
||||||
|
{% if variation.nickname != nil %}
|
||||||
|
{{ variation.nickname }}
|
||||||
|
{% else %}
|
||||||
|
{{ variation.title }}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</a></li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% for variation in site.pages %}
|
|
||||||
{% if variation.category and variation.category == page.category %}
|
{% if license.family %}
|
||||||
<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 %}">
|
{% assign variations = site.licenses | where:"hidden",false | where:"family",license.family %}
|
||||||
|
{% else %}
|
||||||
|
{% assign variations = site.licenses | where:"title",license.title %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for variation in variations %}
|
||||||
|
<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 license.tab-slug == variation.tab-slug %} active{% endif %}">
|
||||||
<table class="license-rules">
|
<table class="license-rules">
|
||||||
<tr>
|
<tr>
|
||||||
{% assign types = "required|permitted|forbidden" | split: "|" %}
|
{% assign types = "required|permitted|forbidden" | split: "|" %}
|
||||||
@ -32,7 +55,7 @@
|
|||||||
{% for type in types %}
|
{% for type in types %}
|
||||||
<td>
|
<td>
|
||||||
<ul class="license-{{ type }}">
|
<ul class="license-{{ type }}">
|
||||||
{% assign rules = site.rules[type] | sort: "label" %}
|
{% assign rules = site.data.rules[type] | sort: "label" %}
|
||||||
{% for rule_obj in rules %}
|
{% for rule_obj in rules %}
|
||||||
{% assign req = rule_obj.tag %}
|
{% assign req = rule_obj.tag %}
|
||||||
{% if variation[type] contains req %}
|
{% if variation[type] contains req %}
|
||||||
@ -47,9 +70,8 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
<p class="small"><a href="{{ variation.permalink }}">View full {{ variation.title }} license »</a></p>
|
<p class="small"><a href="{{ variation.url }}">View full {{ variation.title }} license »</a></p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
|
|
||||||
<a href="#" data-clipboard-target="license-text" data-proofer-ignore="true" class="js-clipboard-button button">Copy license text to clipboard</a>
|
<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">
|
<div class="how-to-apply">
|
||||||
<h5>How to apply this license</h5>
|
<h5>How to apply this license</h5>
|
||||||
<p>
|
<p>
|
||||||
@ -27,7 +27,7 @@
|
|||||||
{% for type in types %}
|
{% for type in types %}
|
||||||
<h3>{{ type | capitalize }}</h3>
|
<h3>{{ type | capitalize }}</h3>
|
||||||
<ul class="license-{{ type }}">
|
<ul class="license-{{ type }}">
|
||||||
{% assign rules = site.rules[type] | sort: "label" %}
|
{% assign rules = site.data.rules[type] | sort: "label" %}
|
||||||
{% for rule_obj in rules %}
|
{% for rule_obj in rules %}
|
||||||
{% assign req = rule_obj.tag %}
|
{% assign req = rule_obj.tag %}
|
||||||
{% if page[type] contains req %}
|
{% if page[type] contains req %}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<div class="license-body">
|
<div class="license-body">
|
||||||
<pre id="license-text">{{ content | replace:"<", "[" | replace:">", "]" }}</pre>
|
<pre id="license-text">{{ content | replace:"<", "<" | replace:">", ">" }}</pre>
|
||||||
</div> <!-- /license-body -->
|
</div> <!-- /license-body -->
|
||||||
|
|
||||||
{% include sidebar.html %}
|
{% include sidebar.html %}
|
||||||
|
69
_licenses/afl-3.0.txt
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
---
|
||||||
|
title: Academic Free License v3.0
|
||||||
|
source: http://opensource.org/licenses/afl-3.0
|
||||||
|
|
||||||
|
description: The Academic Free License is a variant of the Open Source License that does not require that the source code of derivative works be disclosed. It contains explicit copyright and patent grants and reserves trademark rights in the author.
|
||||||
|
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Files licensed under OSL 3.0 must also include the notice "Licensed under the Academic Free License version 3.0" adjacent to the copyright notice.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- include-copyright
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- modifications
|
||||||
|
- distribution
|
||||||
|
- sublicense
|
||||||
|
- private-use
|
||||||
|
- patent-use
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- trademark-use
|
||||||
|
- no-liability
|
||||||
|
|
||||||
|
---
|
||||||
|
Academic Free License (“AFL”) v. 3.0
|
||||||
|
|
||||||
|
This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
|
||||||
|
|
||||||
|
Licensed under the Academic Free License version 3.0
|
||||||
|
|
||||||
|
1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following:
|
||||||
|
|
||||||
|
a) to reproduce the Original Work in copies, either alone or as part of a collective work;
|
||||||
|
b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
|
||||||
|
c) to distribute or communicate copies of the Original Work and Derivative Works to the public, under any license of your choice that does not contradict the terms and conditions, including Licensor’s reserved rights and remedies, in this Academic Free License;
|
||||||
|
d) to perform the Original Work publicly; and
|
||||||
|
e) to display the Original Work publicly.
|
||||||
|
|
||||||
|
2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
|
||||||
|
|
||||||
|
3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
|
||||||
|
|
||||||
|
4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor’s trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
|
||||||
|
|
||||||
|
5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
|
||||||
|
|
||||||
|
6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
|
||||||
|
|
||||||
|
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
|
||||||
|
|
||||||
|
8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
|
||||||
|
|
||||||
|
9) Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including “fair use” or “fair dealing”). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
|
||||||
|
|
||||||
|
10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
|
||||||
|
|
||||||
|
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
|
||||||
|
|
||||||
|
12) Attorneys’ Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
|
||||||
|
|
||||||
|
13) Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
|
||||||
|
|
||||||
|
14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
|
||||||
|
|
||||||
|
16) Modification of This License. This License is Copyright © 2005 Lawrence Rosen. Permission is granted to copy, distribute, or communicate this License without modification. Nothing in this License permits You to modify this License as applied to the Original Work or to Derivative Works. However, You may modify the text of this License and copy, distribute or communicate your modified version (the "Modified License") and apply it to other original works of authorship subject to the following conditions: (i) You may not indicate in any way that your Modified License is the "Academic Free License" or "AFL" and you may not use those names in the name of your Modified License; (ii) You must replace the notice specified in the first paragraph above with the notice "Licensed under <insert your license name here>" or with a notice of your own that is not confusingly similar to the notice in this License; and (iii) You may not claim that your original works are open source software unless your Modified License has been approved by Open Source Initiative (OSI) and You comply with its license review and certification process.
|
@ -1,25 +1,29 @@
|
|||||||
---
|
---
|
||||||
title: Affero GPL
|
title: GNU Affero General Public License v3.0
|
||||||
category: GPL
|
nickname: GNU Affero GPL v3.0
|
||||||
tab-slug: agpl
|
tab-slug: agpl-v3
|
||||||
hide-from-license-list: true
|
redirect_from: /licenses/agpl/
|
||||||
layout: license
|
family: GPL
|
||||||
permalink: /licenses/agpl/
|
variant: true
|
||||||
source: http://www.gnu.org/licenses/agpl-3.0.txt
|
source: http://www.gnu.org/licenses/agpl-3.0.txt
|
||||||
|
|
||||||
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.
|
description: "The GPL family of licenses is the most widely used free software license and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same license. The AGPL family of licenses is distinguished from GPLv2 and GPLv3 in that hosted services using the code are considered distribution and trigger the copyleft requirements."
|
||||||
|
|
||||||
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
|
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- include-copyright
|
- include-copyright
|
||||||
- document-changes
|
- document-changes
|
||||||
- disclose-source
|
- disclose-source
|
||||||
|
- network-use-disclose
|
||||||
|
|
||||||
permitted:
|
permitted:
|
||||||
- commercial-use
|
- commercial-use
|
||||||
- modifications
|
- modifications
|
||||||
- distribution
|
- distribution
|
||||||
|
- patent-use
|
||||||
- private-use
|
- private-use
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
@ -1,18 +1,15 @@
|
|||||||
---
|
---
|
||||||
title: Apache v2 License
|
title: Apache License 2.0
|
||||||
category: Apache
|
nickname: Apache
|
||||||
layout: license
|
redirect_from: /licenses/apache/
|
||||||
permalink: /licenses/apache/
|
|
||||||
|
|
||||||
featured: true
|
featured: true
|
||||||
|
source: http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
|
||||||
description: A permissive license that also provides an express grant of patent rights from contributors to users.
|
description: A permissive license that also provides an express grant of patent rights from contributors to users.
|
||||||
|
|
||||||
note: The Apache Foundation recommends taking the additional step of adding a boilerplate notice to the header of each source file. You can find the notice at the very end of the license in the appendix.
|
|
||||||
|
|
||||||
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
source: http://www.apache.org/licenses/LICENSE-2.0.html
|
note: The Apache Foundation recommends taking the additional step of adding a boilerplate notice to the header of each source file. You can find the notice at the very end of the license in the appendix.
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- include-copyright
|
- include-copyright
|
||||||
@ -23,8 +20,7 @@ permitted:
|
|||||||
- modifications
|
- modifications
|
||||||
- distribution
|
- distribution
|
||||||
- sublicense
|
- sublicense
|
||||||
- patent-grant
|
- patent-use
|
||||||
|
|
||||||
- private-use
|
- private-use
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
@ -1,8 +1,6 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
|
||||||
title: Artistic License 2.0
|
title: Artistic License 2.0
|
||||||
category: Artistic
|
redirect_from: /licenses/artistic/
|
||||||
permalink: /licenses/artistic/
|
|
||||||
source: http://www.perlfoundation.org/attachment/legal/artistic-2_0.txt
|
source: http://www.perlfoundation.org/attachment/legal/artistic-2_0.txt
|
||||||
|
|
||||||
description: Heavily favored by the Perl community, the Artistic license requires that modified versions of the software do not prevent users from running the standard version.
|
description: Heavily favored by the Perl community, the Artistic license requires that modified versions of the software do not prevent users from running the standard version.
|
||||||
@ -23,7 +21,9 @@ permitted:
|
|||||||
forbidden:
|
forbidden:
|
||||||
- no-liability
|
- no-liability
|
||||||
- trademark-use
|
- trademark-use
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
The Artistic License 2.0
|
The Artistic License 2.0
|
||||||
|
|
||||||
Copyright (c) [year] [fullname]
|
Copyright (c) [year] [fullname]
|
@ -1,17 +1,16 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
title: BSD 2-clause "Simplified" License
|
||||||
title: BSD 2-Clause license
|
nickname: Simplified BSD
|
||||||
category: BSD
|
|
||||||
tab-slug: bsd
|
tab-slug: bsd
|
||||||
hide-from-license-list: false
|
redirect_from: /licenses/bsd/
|
||||||
permalink: /licenses/bsd/
|
family: BSD
|
||||||
|
variant: true
|
||||||
|
source: http://opensource.org/licenses/BSD-2-Clause
|
||||||
|
|
||||||
description: A permissive license that comes in two variants, the <a href="/licenses/bsd">BSD 2-Clause</a> and <a href="/licenses/bsd-3-clause">BSD 3-Clause</a>. Both have very minute differences to the MIT license.
|
description: A permissive license that comes in two variants, the <a href="/licenses/bsd">BSD 2-Clause</a> and <a href="/licenses/bsd-3-clause">BSD 3-Clause</a>. Both have very minute differences to the MIT license.
|
||||||
|
|
||||||
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders.
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders.
|
||||||
|
|
||||||
source: http://opensource.org/licenses/BSD-2-Clause
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- include-copyright
|
- include-copyright
|
||||||
|
|
63
_licenses/bsd-3-clause-clear.txt
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
---
|
||||||
|
title: BSD 3-clause Clear License
|
||||||
|
nickname: Clear BSD
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
family: BSD
|
||||||
|
tab-slug: bsd-3-clear
|
||||||
|
variant: true
|
||||||
|
|
||||||
|
description: A permissive license that comes in two variants, the <a href="/licenses/bsd">BSD 2-Clause</a> and <a href="/licenses/bsd-3-clause">BSD 3-Clause</a>. Both have very minute differences to the MIT license. The three clause variant prohibits others from using the name of the project or its contributors to promote derivative works without written consent.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. Replace [project] with the project organization, if any, that sponsors this work.
|
||||||
|
|
||||||
|
source: https://spdx.org/licenses/BSD-3-Clause-Clear.html
|
||||||
|
|
||||||
|
required:
|
||||||
|
- include-copyright
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- modifications
|
||||||
|
- distribution
|
||||||
|
- sublicense
|
||||||
|
- private-use
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- no-liability
|
||||||
|
- trademark-use
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
The Clear BSD License
|
||||||
|
|
||||||
|
Copyright (c) [year], [fullname]
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted (subject to the limitations in the disclaimer
|
||||||
|
below) provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the name of [project] nor the names of its contributors may be used
|
||||||
|
to endorse or promote products derived from this software without specific
|
||||||
|
prior written permission.
|
||||||
|
|
||||||
|
NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED BY THIS
|
||||||
|
LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||||
|
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
|
DAMAGE.
|
@ -1,15 +1,15 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
title: BSD 3-clause "New" or "Revised" License
|
||||||
title: BSD (3-Clause) License
|
nickname: New BSD
|
||||||
category: BSD
|
|
||||||
tab-slug: bsd-3
|
tab-slug: bsd-3
|
||||||
hide-from-license-list: true
|
family: BSD
|
||||||
permalink: /licenses/bsd-3-clause/
|
variant: true
|
||||||
|
|
||||||
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. Replace {organization} with the organization, if any, that sponsors this work.
|
|
||||||
|
|
||||||
source: http://opensource.org/licenses/BSD-3-Clause
|
source: http://opensource.org/licenses/BSD-3-Clause
|
||||||
|
|
||||||
|
description: A permissive license that comes in two variants, the <a href="/licenses/bsd">BSD 2-Clause</a> and <a href="/licenses/bsd-3-clause">BSD 3-Clause</a>. Both have very minute differences to the MIT license. The three clause variant prohibits others from using the name of the project or its contributors to promote derivative works without written consent.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders. Replace [project] with the project organization, if any, that sponsors this work.
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- include-copyright
|
- include-copyright
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ modification, are permitted provided that the following conditions are met:
|
|||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
* Neither the name of the {organization} nor the names of its
|
* Neither the name of [project] nor the names of its
|
||||||
contributors may be used to endorse or promote products derived from
|
contributors may be used to endorse or promote products derived from
|
||||||
this software without specific prior written permission.
|
this software without specific prior written permission.
|
||||||
|
|
@ -1,13 +1,10 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
title: Creative Commons Zero v1.0 Universal
|
||||||
title: CC0 1.0 Universal
|
nickname: CC0 1.0 Universal
|
||||||
category: Public Domain Dedication
|
|
||||||
tab-slug: cc0
|
tab-slug: cc0
|
||||||
permalink: /licenses/cc0/
|
redirect_from: /licenses/cc0/
|
||||||
class: license-types
|
family: Public Domain Dedication
|
||||||
hide-from-license-list: true
|
variant: true
|
||||||
filename: LICENSE
|
|
||||||
|
|
||||||
source: http://creativecommons.org/publicdomain/zero/1.0/
|
source: http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
|
||||||
description: The <a href="http://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 Public Domain Dedication</a> waives copyright interest in any a work you've created and dedicates it to the world-wide public domain. Use CC0 to opt out of copyright entirely and ensure your work has the widest reach. As with the Unlicense and typical software licenses, CC0 disclaims warranties. CC0 is very similar to the Unlicense.
|
description: The <a href="http://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 Public Domain Dedication</a> waives copyright interest in any a work you've created and dedicates it to the world-wide public domain. Use CC0 to opt out of copyright entirely and ensure your work has the widest reach. As with the Unlicense and typical software licenses, CC0 disclaims warranties. CC0 is very similar to the Unlicense.
|
||||||
@ -25,7 +22,10 @@ permitted:
|
|||||||
forbidden:
|
forbidden:
|
||||||
- no-liability
|
- no-liability
|
||||||
|
|
||||||
|
required: []
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
CC0 1.0 Universal
|
CC0 1.0 Universal
|
||||||
|
|
||||||
Statement of Purpose
|
Statement of Purpose
|
@ -1,11 +1,12 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
title: Eclipse Public License 1.0
|
||||||
title: Eclipse Public License v1.0
|
redirect_from: /licenses/eclipse/
|
||||||
category: Eclipse
|
source: http://www.eclipse.org/legal/epl-v10.html
|
||||||
permalink: /licenses/eclipse/
|
|
||||||
|
|
||||||
description: This commercially-friendly copyleft license provides the ability to commercially license binaries; a modern royalty-free patent license grant; and the ability for linked works to use other licenses, including commercial ones.
|
description: This commercially-friendly copyleft license provides the ability to commercially license binaries; a modern royalty-free patent license grant; and the ability for linked works to use other licenses, including commercial ones.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
using:
|
using:
|
||||||
The Eclipse Foundation: "http://www.eclipse.org"
|
The Eclipse Foundation: "http://www.eclipse.org"
|
||||||
OpenDaylight: "http://www.opendaylight.org/"
|
OpenDaylight: "http://www.opendaylight.org/"
|
||||||
@ -14,10 +15,6 @@ using:
|
|||||||
Ruby: "https://github.com/jruby/jruby"
|
Ruby: "https://github.com/jruby/jruby"
|
||||||
Mondrian: "http://en.wikipedia.org/wiki/Mondrian_OLAP_server"
|
Mondrian: "http://en.wikipedia.org/wiki/Mondrian_OLAP_server"
|
||||||
|
|
||||||
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
|
||||||
|
|
||||||
source: http://www.eclipse.org/legal/epl-v10.html
|
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- disclose-source
|
- disclose-source
|
||||||
- include-copyright
|
- include-copyright
|
||||||
@ -27,13 +24,14 @@ permitted:
|
|||||||
- distribution
|
- distribution
|
||||||
- modifications
|
- modifications
|
||||||
- sublicense
|
- sublicense
|
||||||
- patent-grant
|
- patent-use
|
||||||
- private-use
|
- private-use
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
||||||
- no-liability
|
- no-liability
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Eclipse Public License - v 1.0
|
Eclipse Public License - v 1.0
|
||||||
|
|
||||||
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
|
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
|
@ -1,16 +1,14 @@
|
|||||||
---
|
---
|
||||||
title: GPL v2
|
title: GNU General Public License v2.0
|
||||||
category: GPL
|
nickname: GNU GPL v2.0
|
||||||
tab-slug: gpl-v2
|
tab-slug: gpl-v2
|
||||||
hide-from-license-list: false
|
redirect_from: /licenses/gpl-v2/
|
||||||
layout: license
|
family: GPL
|
||||||
permalink: /licenses/gpl-v2/
|
featured: true
|
||||||
source: http://www.gnu.org/licenses/gpl-2.0.txt
|
source: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||||
|
|
||||||
description: GPL is the most widely used free software license and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same license. There are multiple variants of the GPL, each with different requirements.
|
description: GPL is the most widely used free software license and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same license. There are multiple variants of the GPL, each with different requirements.
|
||||||
|
|
||||||
featured: true
|
|
||||||
|
|
||||||
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.
|
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.
|
||||||
@ -24,7 +22,7 @@ permitted:
|
|||||||
- commercial-use
|
- commercial-use
|
||||||
- modifications
|
- modifications
|
||||||
- distribution
|
- distribution
|
||||||
- patent-grant
|
- patent-use
|
||||||
- private-use
|
- private-use
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
@ -1,12 +1,14 @@
|
|||||||
---
|
---
|
||||||
title: GPL v3
|
title: GNU General Public License v3.0
|
||||||
category: GPL
|
nickname: GNU GPL v3.0
|
||||||
tab-slug: gpl-v3
|
tab-slug: gpl-v3
|
||||||
hide-from-license-list: true
|
redirect_from: /licenses/gpl-v3/
|
||||||
layout: license
|
family: GPL
|
||||||
permalink: /licenses/gpl-v3/
|
variant: true
|
||||||
source: http://www.gnu.org/licenses/gpl-3.0.txt
|
source: http://www.gnu.org/licenses/gpl-3.0.txt
|
||||||
|
|
||||||
|
description: GPL is the most widely used free software license and has a strong copyleft requirement. When distributing derived works, the source code of the work must be made available under the same license.
|
||||||
|
|
||||||
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.
|
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.
|
||||||
@ -20,14 +22,14 @@ permitted:
|
|||||||
- commercial-use
|
- commercial-use
|
||||||
- modifications
|
- modifications
|
||||||
- distribution
|
- distribution
|
||||||
- patent-grant
|
- patent-use
|
||||||
- private-use
|
- private-use
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
||||||
- no-liability
|
- no-liability
|
||||||
- no-sublicense
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
GNU GENERAL PUBLIC LICENSE
|
GNU GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
38
_licenses/isc.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
title: ISC License
|
||||||
|
tab-slug: isc
|
||||||
|
family: BSD
|
||||||
|
source: http://opensource.org/licenses/isc-license
|
||||||
|
|
||||||
|
description: A permissive license lets people do anything with your code with proper attribution and without warranty. The ISC license is functionally equivalent to the <a href="/licenses/bsd">BSD 2-Clause</a> and <a href="/licenses/mit">MIT</a> licenses, removing some language that is no longer necessary.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Replace [year] with the current year and [fullname] with the name (or names) of the copyright holders.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- include-copyright
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- distribution
|
||||||
|
- modifications
|
||||||
|
- private-use
|
||||||
|
- sublicense
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- no-liability
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Copyright (c) [year], [fullname]
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
title: GNU Lesser General Public License v2.1
|
||||||
title: LGPL v2.1
|
nickname: GNU LGPL v2.1
|
||||||
category: LGPL
|
|
||||||
tab-slug: lgpl-v2_1
|
tab-slug: lgpl-v2_1
|
||||||
permalink: /licenses/lgpl-v2.1/
|
redirect_from: /licenses/lgpl-v2.1/
|
||||||
|
family: LGPL
|
||||||
source: http://www.gnu.org/licenses/lgpl-2.1.txt
|
source: http://www.gnu.org/licenses/lgpl-2.1.txt
|
||||||
|
|
||||||
description: Primarily used for software libraries, LGPL requires that derived works be licensed under the same license, but works that only link to it do not fall under this restriction. There are two commonly used versions of the LGPL.
|
description: Primarily used for software libraries, LGPL requires that derived works be licensed under the same license, but works that only link to it do not fall under this restriction. There are two commonly used versions of the LGPL.
|
||||||
@ -22,7 +22,7 @@ permitted:
|
|||||||
- modifications
|
- modifications
|
||||||
- distribution
|
- distribution
|
||||||
- sublicense
|
- sublicense
|
||||||
- patent-grant
|
- patent-use
|
||||||
- private-use
|
- private-use
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
@ -1,17 +1,17 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
title: GNU Lesser General Public License v3.0
|
||||||
title: LGPL v3
|
nickname: GNU LGPL v3.0
|
||||||
category: LGPL
|
|
||||||
tab-slug: lgpl-v3
|
tab-slug: lgpl-v3
|
||||||
hide-from-license-list: true
|
redirect_from: /licenses/lgpl-v3/
|
||||||
permalink: /licenses/lgpl-v3/
|
family: LGPL
|
||||||
|
variant: true
|
||||||
source: http://www.gnu.org/licenses/lgpl-3.0.txt
|
source: http://www.gnu.org/licenses/lgpl-3.0.txt
|
||||||
|
|
||||||
description: Version 3 of the LGPL is an additional set of permissions to the <a href="/licenses/gpl-v3">GPL v3 license</a> that requires that derived works be licensed under the same license, but works that only link to it do not fall under this restriction.
|
description: Version 3 of the LGPL is an additional set of permissions to the <a href="/licenses/GPL-3.0">GPL v3 license</a> that requires that derived works be licensed under the same license, but works that only link to it do not fall under this restriction.
|
||||||
|
|
||||||
how: This license is an additional set of permissions to the <a href="/licenses/gpl-v3">GPL v3</a> license. Follow the instructions to apply the GPL v3 license. Then either paste this text to the bottom of that file OR add a separate file (typically named COPYING.lesser or LICENSE.lesser) in the root of your source code and copy the text.
|
how: This license is an additional set of permissions to the <a href="/licenses/gpl-3.0">GPL v3</a> license. Follow the instructions to apply the GPL v3. Then either paste this text to the bottom of the created file OR add a separate file (typically named COPYING.lesser or LICENSE.lesser) in the root of your source code and copy the text.
|
||||||
|
|
||||||
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.
|
note: The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the <a href="/licenses/gpl-3.0">GPL v3 license</a>. Insert the word “Lesser” before “General” in all three places in the boilerplate notice to make sure that you refer to the LGPL v3 and not the GPL v3.
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- include-copyright
|
- include-copyright
|
||||||
@ -23,13 +23,14 @@ permitted:
|
|||||||
- modifications
|
- modifications
|
||||||
- distribution
|
- distribution
|
||||||
- sublicense
|
- sublicense
|
||||||
- patent-grant
|
- patent-use
|
||||||
- private-use
|
- private-use
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
||||||
- no-liability
|
- no-liability
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
GNU LESSER GENERAL PUBLIC LICENSE
|
GNU LESSER GENERAL PUBLIC LICENSE
|
||||||
Version 3, 29 June 2007
|
Version 3, 29 June 2007
|
||||||
|
|
@ -1,11 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
|
||||||
title: MIT License
|
title: MIT License
|
||||||
category: MIT
|
|
||||||
permalink: /licenses/mit/
|
|
||||||
source: http://opensource.org/licenses/MIT
|
|
||||||
|
|
||||||
featured: true
|
featured: true
|
||||||
|
source: http://opensource.org/licenses/MIT
|
||||||
|
|
||||||
description: A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty.
|
description: A permissive license that is short and to the point. It lets people do anything with your code with proper attribution and without warranty.
|
||||||
|
|
400
_licenses/mpl-2.0.txt
Normal file
@ -0,0 +1,400 @@
|
|||||||
|
---
|
||||||
|
title: Mozilla Public License 2.0
|
||||||
|
redirect_from: /licenses/mozilla/
|
||||||
|
source: https://www.mozilla.org/media/MPL/2.0/index.txt
|
||||||
|
|
||||||
|
description: The Mozilla Public License (MPL 2.0) is maintained by the Mozilla foundation. This license attempts to be a compromise between the permissive BSD license and the reciprocal GPL license.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- disclose-source
|
||||||
|
- include-copyright
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- modifications
|
||||||
|
- distribution
|
||||||
|
- sublicense
|
||||||
|
- patent-use
|
||||||
|
- private-use
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- no-liability
|
||||||
|
- trademark-use
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Mozilla Public License Version 2.0
|
||||||
|
==================================
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
--------------
|
||||||
|
|
||||||
|
1.1. "Contributor"
|
||||||
|
means each individual or legal entity that creates, contributes to
|
||||||
|
the creation of, or owns Covered Software.
|
||||||
|
|
||||||
|
1.2. "Contributor Version"
|
||||||
|
means the combination of the Contributions of others (if any) used
|
||||||
|
by a Contributor and that particular Contributor's Contribution.
|
||||||
|
|
||||||
|
1.3. "Contribution"
|
||||||
|
means Covered Software of a particular Contributor.
|
||||||
|
|
||||||
|
1.4. "Covered Software"
|
||||||
|
means Source Code Form to which the initial Contributor has attached
|
||||||
|
the notice in Exhibit A, the Executable Form of such Source Code
|
||||||
|
Form, and Modifications of such Source Code Form, in each case
|
||||||
|
including portions thereof.
|
||||||
|
|
||||||
|
1.5. "Incompatible With Secondary Licenses"
|
||||||
|
means
|
||||||
|
|
||||||
|
(a) that the initial Contributor has attached the notice described
|
||||||
|
in Exhibit B to the Covered Software; or
|
||||||
|
|
||||||
|
(b) that the Covered Software was made available under the terms of
|
||||||
|
version 1.1 or earlier of the License, but not also under the
|
||||||
|
terms of a Secondary License.
|
||||||
|
|
||||||
|
1.6. "Executable Form"
|
||||||
|
means any form of the work other than Source Code Form.
|
||||||
|
|
||||||
|
1.7. "Larger Work"
|
||||||
|
means a work that combines Covered Software with other material, in
|
||||||
|
a separate file or files, that is not Covered Software.
|
||||||
|
|
||||||
|
1.8. "License"
|
||||||
|
means this document.
|
||||||
|
|
||||||
|
1.9. "Licensable"
|
||||||
|
means having the right to grant, to the maximum extent possible,
|
||||||
|
whether at the time of the initial grant or subsequently, any and
|
||||||
|
all of the rights conveyed by this License.
|
||||||
|
|
||||||
|
1.10. "Modifications"
|
||||||
|
means any of the following:
|
||||||
|
|
||||||
|
(a) any file in Source Code Form that results from an addition to,
|
||||||
|
deletion from, or modification of the contents of Covered
|
||||||
|
Software; or
|
||||||
|
|
||||||
|
(b) any new file in Source Code Form that contains any Covered
|
||||||
|
Software.
|
||||||
|
|
||||||
|
1.11. "Patent Claims" of a Contributor
|
||||||
|
means any patent claim(s), including without limitation, method,
|
||||||
|
process, and apparatus claims, in any patent Licensable by such
|
||||||
|
Contributor that would be infringed, but for the grant of the
|
||||||
|
License, by the making, using, selling, offering for sale, having
|
||||||
|
made, import, or transfer of either its Contributions or its
|
||||||
|
Contributor Version.
|
||||||
|
|
||||||
|
1.12. "Secondary License"
|
||||||
|
means either the GNU General Public License, Version 2.0, the GNU
|
||||||
|
Lesser General Public License, Version 2.1, the GNU Affero General
|
||||||
|
Public License, Version 3.0, or any later versions of those
|
||||||
|
licenses.
|
||||||
|
|
||||||
|
1.13. "Source Code Form"
|
||||||
|
means the form of the work preferred for making modifications.
|
||||||
|
|
||||||
|
1.14. "You" (or "Your")
|
||||||
|
means an individual or a legal entity exercising rights under this
|
||||||
|
License. For legal entities, "You" includes any entity that
|
||||||
|
controls, is controlled by, or is under common control with You. For
|
||||||
|
purposes of this definition, "control" means (a) the power, direct
|
||||||
|
or indirect, to cause the direction or management of such entity,
|
||||||
|
whether by contract or otherwise, or (b) ownership of more than
|
||||||
|
fifty percent (50%) of the outstanding shares or beneficial
|
||||||
|
ownership of such entity.
|
||||||
|
|
||||||
|
2. License Grants and Conditions
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
2.1. Grants
|
||||||
|
|
||||||
|
Each Contributor hereby grants You a world-wide, royalty-free,
|
||||||
|
non-exclusive license:
|
||||||
|
|
||||||
|
(a) under intellectual property rights (other than patent or trademark)
|
||||||
|
Licensable by such Contributor to use, reproduce, make available,
|
||||||
|
modify, display, perform, distribute, and otherwise exploit its
|
||||||
|
Contributions, either on an unmodified basis, with Modifications, or
|
||||||
|
as part of a Larger Work; and
|
||||||
|
|
||||||
|
(b) under Patent Claims of such Contributor to make, use, sell, offer
|
||||||
|
for sale, have made, import, and otherwise transfer either its
|
||||||
|
Contributions or its Contributor Version.
|
||||||
|
|
||||||
|
2.2. Effective Date
|
||||||
|
|
||||||
|
The licenses granted in Section 2.1 with respect to any Contribution
|
||||||
|
become effective for each Contribution on the date the Contributor first
|
||||||
|
distributes such Contribution.
|
||||||
|
|
||||||
|
2.3. Limitations on Grant Scope
|
||||||
|
|
||||||
|
The licenses granted in this Section 2 are the only rights granted under
|
||||||
|
this License. No additional rights or licenses will be implied from the
|
||||||
|
distribution or licensing of Covered Software under this License.
|
||||||
|
Notwithstanding Section 2.1(b) above, no patent license is granted by a
|
||||||
|
Contributor:
|
||||||
|
|
||||||
|
(a) for any code that a Contributor has removed from Covered Software;
|
||||||
|
or
|
||||||
|
|
||||||
|
(b) for infringements caused by: (i) Your and any other third party's
|
||||||
|
modifications of Covered Software, or (ii) the combination of its
|
||||||
|
Contributions with other software (except as part of its Contributor
|
||||||
|
Version); or
|
||||||
|
|
||||||
|
(c) under Patent Claims infringed by Covered Software in the absence of
|
||||||
|
its Contributions.
|
||||||
|
|
||||||
|
This License does not grant any rights in the trademarks, service marks,
|
||||||
|
or logos of any Contributor (except as may be necessary to comply with
|
||||||
|
the notice requirements in Section 3.4).
|
||||||
|
|
||||||
|
2.4. Subsequent Licenses
|
||||||
|
|
||||||
|
No Contributor makes additional grants as a result of Your choice to
|
||||||
|
distribute the Covered Software under a subsequent version of this
|
||||||
|
License (see Section 10.2) or under the terms of a Secondary License (if
|
||||||
|
permitted under the terms of Section 3.3).
|
||||||
|
|
||||||
|
2.5. Representation
|
||||||
|
|
||||||
|
Each Contributor represents that the Contributor believes its
|
||||||
|
Contributions are its original creation(s) or it has sufficient rights
|
||||||
|
to grant the rights to its Contributions conveyed by this License.
|
||||||
|
|
||||||
|
2.6. Fair Use
|
||||||
|
|
||||||
|
This License is not intended to limit any rights You have under
|
||||||
|
applicable copyright doctrines of fair use, fair dealing, or other
|
||||||
|
equivalents.
|
||||||
|
|
||||||
|
2.7. Conditions
|
||||||
|
|
||||||
|
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
|
||||||
|
in Section 2.1.
|
||||||
|
|
||||||
|
3. Responsibilities
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
3.1. Distribution of Source Form
|
||||||
|
|
||||||
|
All distribution of Covered Software in Source Code Form, including any
|
||||||
|
Modifications that You create or to which You contribute, must be under
|
||||||
|
the terms of this License. You must inform recipients that the Source
|
||||||
|
Code Form of the Covered Software is governed by the terms of this
|
||||||
|
License, and how they can obtain a copy of this License. You may not
|
||||||
|
attempt to alter or restrict the recipients' rights in the Source Code
|
||||||
|
Form.
|
||||||
|
|
||||||
|
3.2. Distribution of Executable Form
|
||||||
|
|
||||||
|
If You distribute Covered Software in Executable Form then:
|
||||||
|
|
||||||
|
(a) such Covered Software must also be made available in Source Code
|
||||||
|
Form, as described in Section 3.1, and You must inform recipients of
|
||||||
|
the Executable Form how they can obtain a copy of such Source Code
|
||||||
|
Form by reasonable means in a timely manner, at a charge no more
|
||||||
|
than the cost of distribution to the recipient; and
|
||||||
|
|
||||||
|
(b) You may distribute such Executable Form under the terms of this
|
||||||
|
License, or sublicense it under different terms, provided that the
|
||||||
|
license for the Executable Form does not attempt to limit or alter
|
||||||
|
the recipients' rights in the Source Code Form under this License.
|
||||||
|
|
||||||
|
3.3. Distribution of a Larger Work
|
||||||
|
|
||||||
|
You may create and distribute a Larger Work under terms of Your choice,
|
||||||
|
provided that You also comply with the requirements of this License for
|
||||||
|
the Covered Software. If the Larger Work is a combination of Covered
|
||||||
|
Software with a work governed by one or more Secondary Licenses, and the
|
||||||
|
Covered Software is not Incompatible With Secondary Licenses, this
|
||||||
|
License permits You to additionally distribute such Covered Software
|
||||||
|
under the terms of such Secondary License(s), so that the recipient of
|
||||||
|
the Larger Work may, at their option, further distribute the Covered
|
||||||
|
Software under the terms of either this License or such Secondary
|
||||||
|
License(s).
|
||||||
|
|
||||||
|
3.4. Notices
|
||||||
|
|
||||||
|
You may not remove or alter the substance of any license notices
|
||||||
|
(including copyright notices, patent notices, disclaimers of warranty,
|
||||||
|
or limitations of liability) contained within the Source Code Form of
|
||||||
|
the Covered Software, except that You may alter any license notices to
|
||||||
|
the extent required to remedy known factual inaccuracies.
|
||||||
|
|
||||||
|
3.5. Application of Additional Terms
|
||||||
|
|
||||||
|
You may choose to offer, and to charge a fee for, warranty, support,
|
||||||
|
indemnity or liability obligations to one or more recipients of Covered
|
||||||
|
Software. However, You may do so only on Your own behalf, and not on
|
||||||
|
behalf of any Contributor. You must make it absolutely clear that any
|
||||||
|
such warranty, support, indemnity, or liability obligation is offered by
|
||||||
|
You alone, and You hereby agree to indemnify every Contributor for any
|
||||||
|
liability incurred by such Contributor as a result of warranty, support,
|
||||||
|
indemnity or liability terms You offer. You may include additional
|
||||||
|
disclaimers of warranty and limitations of liability specific to any
|
||||||
|
jurisdiction.
|
||||||
|
|
||||||
|
4. Inability to Comply Due to Statute or Regulation
|
||||||
|
---------------------------------------------------
|
||||||
|
|
||||||
|
If it is impossible for You to comply with any of the terms of this
|
||||||
|
License with respect to some or all of the Covered Software due to
|
||||||
|
statute, judicial order, or regulation then You must: (a) comply with
|
||||||
|
the terms of this License to the maximum extent possible; and (b)
|
||||||
|
describe the limitations and the code they affect. Such description must
|
||||||
|
be placed in a text file included with all distributions of the Covered
|
||||||
|
Software under this License. Except to the extent prohibited by statute
|
||||||
|
or regulation, such description must be sufficiently detailed for a
|
||||||
|
recipient of ordinary skill to be able to understand it.
|
||||||
|
|
||||||
|
5. Termination
|
||||||
|
--------------
|
||||||
|
|
||||||
|
5.1. The rights granted under this License will terminate automatically
|
||||||
|
if You fail to comply with any of its terms. However, if You become
|
||||||
|
compliant, then the rights granted under this License from a particular
|
||||||
|
Contributor are reinstated (a) provisionally, unless and until such
|
||||||
|
Contributor explicitly and finally terminates Your grants, and (b) on an
|
||||||
|
ongoing basis, if such Contributor fails to notify You of the
|
||||||
|
non-compliance by some reasonable means prior to 60 days after You have
|
||||||
|
come back into compliance. Moreover, Your grants from a particular
|
||||||
|
Contributor are reinstated on an ongoing basis if such Contributor
|
||||||
|
notifies You of the non-compliance by some reasonable means, this is the
|
||||||
|
first time You have received notice of non-compliance with this License
|
||||||
|
from such Contributor, and You become compliant prior to 30 days after
|
||||||
|
Your receipt of the notice.
|
||||||
|
|
||||||
|
5.2. If You initiate litigation against any entity by asserting a patent
|
||||||
|
infringement claim (excluding declaratory judgment actions,
|
||||||
|
counter-claims, and cross-claims) alleging that a Contributor Version
|
||||||
|
directly or indirectly infringes any patent, then the rights granted to
|
||||||
|
You by any and all Contributors for the Covered Software under Section
|
||||||
|
2.1 of this License shall terminate.
|
||||||
|
|
||||||
|
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
|
||||||
|
end user license agreements (excluding distributors and resellers) which
|
||||||
|
have been validly granted by You or Your distributors under this License
|
||||||
|
prior to termination shall survive termination.
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
* *
|
||||||
|
* 6. Disclaimer of Warranty *
|
||||||
|
* ------------------------- *
|
||||||
|
* *
|
||||||
|
* Covered Software is provided under this License on an "as is" *
|
||||||
|
* basis, without warranty of any kind, either expressed, implied, or *
|
||||||
|
* statutory, including, without limitation, warranties that the *
|
||||||
|
* Covered Software is free of defects, merchantable, fit for a *
|
||||||
|
* particular purpose or non-infringing. The entire risk as to the *
|
||||||
|
* quality and performance of the Covered Software is with You. *
|
||||||
|
* Should any Covered Software prove defective in any respect, You *
|
||||||
|
* (not any Contributor) assume the cost of any necessary servicing, *
|
||||||
|
* repair, or correction. This disclaimer of warranty constitutes an *
|
||||||
|
* essential part of this License. No use of any Covered Software is *
|
||||||
|
* authorized under this License except under this disclaimer. *
|
||||||
|
* *
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
************************************************************************
|
||||||
|
* *
|
||||||
|
* 7. Limitation of Liability *
|
||||||
|
* -------------------------- *
|
||||||
|
* *
|
||||||
|
* Under no circumstances and under no legal theory, whether tort *
|
||||||
|
* (including negligence), contract, or otherwise, shall any *
|
||||||
|
* Contributor, or anyone who distributes Covered Software as *
|
||||||
|
* permitted above, be liable to You for any direct, indirect, *
|
||||||
|
* special, incidental, or consequential damages of any character *
|
||||||
|
* including, without limitation, damages for lost profits, loss of *
|
||||||
|
* goodwill, work stoppage, computer failure or malfunction, or any *
|
||||||
|
* and all other commercial damages or losses, even if such party *
|
||||||
|
* shall have been informed of the possibility of such damages. This *
|
||||||
|
* limitation of liability shall not apply to liability for death or *
|
||||||
|
* personal injury resulting from such party's negligence to the *
|
||||||
|
* extent applicable law prohibits such limitation. Some *
|
||||||
|
* jurisdictions do not allow the exclusion or limitation of *
|
||||||
|
* incidental or consequential damages, so this exclusion and *
|
||||||
|
* limitation may not apply to You. *
|
||||||
|
* *
|
||||||
|
************************************************************************
|
||||||
|
|
||||||
|
8. Litigation
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Any litigation relating to this License may be brought only in the
|
||||||
|
courts of a jurisdiction where the defendant maintains its principal
|
||||||
|
place of business and such litigation shall be governed by laws of that
|
||||||
|
jurisdiction, without reference to its conflict-of-law provisions.
|
||||||
|
Nothing in this Section shall prevent a party's ability to bring
|
||||||
|
cross-claims or counter-claims.
|
||||||
|
|
||||||
|
9. Miscellaneous
|
||||||
|
----------------
|
||||||
|
|
||||||
|
This License represents the complete agreement concerning the subject
|
||||||
|
matter hereof. If any provision of this License is held to be
|
||||||
|
unenforceable, such provision shall be reformed only to the extent
|
||||||
|
necessary to make it enforceable. Any law or regulation which provides
|
||||||
|
that the language of a contract shall be construed against the drafter
|
||||||
|
shall not be used to construe this License against a Contributor.
|
||||||
|
|
||||||
|
10. Versions of the License
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
10.1. New Versions
|
||||||
|
|
||||||
|
Mozilla Foundation is the license steward. Except as provided in Section
|
||||||
|
10.3, no one other than the license steward has the right to modify or
|
||||||
|
publish new versions of this License. Each version will be given a
|
||||||
|
distinguishing version number.
|
||||||
|
|
||||||
|
10.2. Effect of New Versions
|
||||||
|
|
||||||
|
You may distribute the Covered Software under the terms of the version
|
||||||
|
of the License under which You originally received the Covered Software,
|
||||||
|
or under the terms of any subsequent version published by the license
|
||||||
|
steward.
|
||||||
|
|
||||||
|
10.3. Modified Versions
|
||||||
|
|
||||||
|
If you create software not governed by this License, and you want to
|
||||||
|
create a new license for such software, you may create and use a
|
||||||
|
modified version of this License if you rename the license and remove
|
||||||
|
any references to the name of the license steward (except to note that
|
||||||
|
such modified license differs from this License).
|
||||||
|
|
||||||
|
10.4. Distributing Source Code Form that is Incompatible With Secondary
|
||||||
|
Licenses
|
||||||
|
|
||||||
|
If You choose to distribute Source Code Form that is Incompatible With
|
||||||
|
Secondary Licenses under the terms of this version of the License, the
|
||||||
|
notice described in Exhibit B of this License must be attached.
|
||||||
|
|
||||||
|
Exhibit A - Source Code Form License Notice
|
||||||
|
-------------------------------------------
|
||||||
|
|
||||||
|
This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
If it is not possible or desirable to put the notice in a particular
|
||||||
|
file, then You may include the notice in a location (such as a LICENSE
|
||||||
|
file in a relevant directory) where a recipient would be likely to look
|
||||||
|
for such a notice.
|
||||||
|
|
||||||
|
You may add additional accurate notices of copyright ownership.
|
||||||
|
|
||||||
|
Exhibit B - "Incompatible With Secondary Licenses" Notice
|
||||||
|
---------------------------------------------------------
|
||||||
|
|
||||||
|
This Source Code Form is "Incompatible With Secondary Licenses", as
|
||||||
|
defined by the Mozilla Public License, v. 2.0.
|
47
_licenses/ms-pl.txt
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
---
|
||||||
|
title: Microsoft Public License
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
source: http://opensource.org/licenses/ms-pl
|
||||||
|
|
||||||
|
description: "Microsoft Open Source"
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- include-copyright
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- modifications
|
||||||
|
- distribution
|
||||||
|
- patent-use
|
||||||
|
- private-use
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- no-liability
|
||||||
|
- trademark-use
|
||||||
|
---
|
||||||
|
|
||||||
|
Microsoft Public License (MS-PL)
|
||||||
|
|
||||||
|
This license governs use of the accompanying software. If you use the software, you
|
||||||
|
accept this license. If you do not accept the license, do not use the software.
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the
|
||||||
|
same meaning here as under U.S. copyright law.
|
||||||
|
A "contribution" is the original software, or any additions or changes to the software.
|
||||||
|
A "contributor" is any person that distributes its contribution under this license.
|
||||||
|
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
|
||||||
|
|
||||||
|
2. Grant of Rights
|
||||||
|
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
|
||||||
|
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
|
||||||
|
|
||||||
|
3. Conditions and Limitations
|
||||||
|
(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
|
||||||
|
(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
|
||||||
|
(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
|
||||||
|
(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
|
||||||
|
(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
|
46
_licenses/ms-rl.txt
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
---
|
||||||
|
title: Microsoft Reciprocal License
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
source: http://opensource.org/licenses/ms-pl
|
||||||
|
|
||||||
|
description: "Microsoft Open Source"
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- include-copyright
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- modifications
|
||||||
|
- distribution
|
||||||
|
- patent-use
|
||||||
|
- private-use
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- no-liability
|
||||||
|
- trademark-use
|
||||||
|
---
|
||||||
|
|
||||||
|
Microsoft Reciprocal License (MS-RL)
|
||||||
|
|
||||||
|
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
|
||||||
|
|
||||||
|
1. Definitions
|
||||||
|
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
|
||||||
|
A "contribution" is the original software, or any additions or changes to the software.
|
||||||
|
A "contributor" is any person that distributes its contribution under this license.
|
||||||
|
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
|
||||||
|
|
||||||
|
2. Grant of Rights
|
||||||
|
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
|
||||||
|
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
|
||||||
|
|
||||||
|
3. Conditions and Limitations
|
||||||
|
(A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose.
|
||||||
|
(B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
|
||||||
|
(C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
|
||||||
|
(D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
|
||||||
|
(E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
|
||||||
|
(F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
|
@ -1,16 +1,13 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
|
||||||
permalink: /licenses/no-license/
|
|
||||||
category: No License
|
|
||||||
class: license-types
|
|
||||||
title: No License
|
title: No License
|
||||||
|
source: "http://choosealicense.com/no-license/"
|
||||||
|
|
||||||
description: You retain all rights and do not permit distribution, reproduction, or derivative works. You may grant some rights in cases where you publish your source code to a site that requires accepting terms of service. For example, publishing code in a public repository on GitHub requires that you allow others to view and fork your code.
|
description: You retain all rights and do not permit distribution, reproduction, or derivative works. You may grant some rights in cases where you publish your source code to a site that requires accepting terms of service. For example, publishing code in a public repository on GitHub requires that you allow others to view and fork your code.
|
||||||
|
|
||||||
note: This option may be subject to the Terms Of Use of the site where you publish your source code.
|
|
||||||
|
|
||||||
how: Simply do nothing, though including a copyright notice is recommended.
|
how: Simply do nothing, though including a copyright notice is recommended.
|
||||||
|
|
||||||
|
note: This option may be subject to the Terms Of Use of the site where you publish your source code.
|
||||||
|
|
||||||
required:
|
required:
|
||||||
- include-copyright
|
- include-copyright
|
||||||
|
|
119
_licenses/ofl-1.1.txt
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
---
|
||||||
|
title: SIL Open Font License 1.1
|
||||||
|
redirect_from: /licenses/ofl/
|
||||||
|
hidden: true
|
||||||
|
source: http://scripts.sil.org/OFL_web
|
||||||
|
|
||||||
|
description: The Open Font License (OFL) is maintained by SIL International. It attempts to be a compromise between the values of the free software and typeface design communities. It is used for almost all open source font projects, including those by Adobe, Google and Mozilla.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your font source and copy the text of the license into the file. Replace [year] with the current year and [fullname] ([email]) with the name and contact email address of each copyright holder. You may take the additional step of appending a Reserved Font Name notice. This option requires anyone making modifications to change the font's name, and is not ideal for web fonts (which all users will modify by changing formats and subsetting for their own needs.)
|
||||||
|
|
||||||
|
note: This license doesn't require source provision, but recommends it. All files derived from OFL files must remain licensed under the OFL.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- include-copyright
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- private-use
|
||||||
|
- commercial-use
|
||||||
|
- modifications
|
||||||
|
- distribution
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- no-liability
|
||||||
|
- trademark-use
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Copyright (c) [year] [fullname] ([email])
|
||||||
|
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION AND CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
209
_licenses/osl-3.0.txt
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
---
|
||||||
|
title: Open Software License 3.0
|
||||||
|
hidden: true
|
||||||
|
source: http://opensource.org/licenses/OSL-3.0
|
||||||
|
|
||||||
|
description: OSL 3.0 is a copyleft license that does not require reciprocal licensing on linked works. It also provides an express grant of patent rights from contributors to users, with a termination clause triggered if a user files a patent infringement lawsuit.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file. Files licensed under OSL 3.0 must also include the notice "Licensed under the Open Software License version 3.0" adjacent to the copyright notice.
|
||||||
|
|
||||||
|
note: OSL 3.0's author has <a href="http://rosenlaw.com/OSL3.0-explained.htm">provided an explanation</a> behind the creation of the license.
|
||||||
|
|
||||||
|
using:
|
||||||
|
Magento Community Edition: "http://magento.com/"
|
||||||
|
Parsimony: "https://github.com/parsimony/parsimony"
|
||||||
|
PrestaShop: "https://www.prestashop.com"
|
||||||
|
Mulgara: "http://mulgara.org"
|
||||||
|
AbanteCart: "http://www.abantecart.com/"
|
||||||
|
|
||||||
|
required:
|
||||||
|
- include-copyright
|
||||||
|
- disclose-source
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- distribution
|
||||||
|
- modifications
|
||||||
|
- patent-use
|
||||||
|
- private-use
|
||||||
|
- sublicense
|
||||||
|
|
||||||
|
|
||||||
|
forbidden:
|
||||||
|
- trademark-use
|
||||||
|
- no-liability
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Open Software License ("OSL") v 3.0
|
||||||
|
|
||||||
|
This Open Software License (the "License") applies to any original work of
|
||||||
|
authorship (the "Original Work") whose owner (the "Licensor") has placed the
|
||||||
|
following licensing notice adjacent to the copyright notice for the Original
|
||||||
|
Work:
|
||||||
|
|
||||||
|
Licensed under the Open Software License version 3.0
|
||||||
|
|
||||||
|
1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free,
|
||||||
|
non-exclusive, sublicensable license, for the duration of the copyright, to do
|
||||||
|
the following:
|
||||||
|
|
||||||
|
a) to reproduce the Original Work in copies, either alone or as part of a
|
||||||
|
collective work;
|
||||||
|
|
||||||
|
b) to translate, adapt, alter, transform, modify, or arrange the Original
|
||||||
|
Work, thereby creating derivative works ("Derivative Works") based upon the
|
||||||
|
Original Work;
|
||||||
|
|
||||||
|
c) to distribute or communicate copies of the Original Work and Derivative
|
||||||
|
Works to the public, with the proviso that copies of Original Work or
|
||||||
|
Derivative Works that You distribute or communicate shall be licensed under
|
||||||
|
this Open Software License;
|
||||||
|
|
||||||
|
d) to perform the Original Work publicly; and
|
||||||
|
|
||||||
|
e) to display the Original Work publicly.
|
||||||
|
|
||||||
|
2) Grant of Patent License. Licensor grants You a worldwide, royalty- free,
|
||||||
|
non-exclusive, sublicensable license, under patent claims owned or controlled
|
||||||
|
by the Licensor that are embodied in the Original Work as furnished by the
|
||||||
|
Licensor, for the duration of the patents, to make, use, sell, offer for sale,
|
||||||
|
have made, and import the Original Work and Derivative Works.
|
||||||
|
|
||||||
|
3) Grant of Source Code License. The term "Source Code" means the preferred
|
||||||
|
form of the Original Work for making modifications to it and all available
|
||||||
|
documentation describing how to modify the Original Work. Licensor agrees to
|
||||||
|
provide a machine-readable copy of the Source Code of the Original Work along
|
||||||
|
with each copy of the Original Work that Licensor distributes. Licensor
|
||||||
|
reserves the right to satisfy this obligation by placing a machine-readable
|
||||||
|
copy of the Source Code in an information repository reasonably calculated to
|
||||||
|
permit inexpensive and convenient access by You for as long as Licensor
|
||||||
|
continues to distribute the Original Work.
|
||||||
|
|
||||||
|
4) Exclusions From License Grant. Neither the names of Licensor, nor the names
|
||||||
|
of any contributors to the Original Work, nor any of their trademarks or
|
||||||
|
service marks, may be used to endorse or promote products derived from this
|
||||||
|
Original Work without express prior permission of the Licensor. Except as
|
||||||
|
expressly stated herein, nothing in this License grants any license to
|
||||||
|
Licensor's trademarks, copyrights, patents, trade secrets or any other
|
||||||
|
intellectual property. No patent license is granted to make, use, sell, offer
|
||||||
|
for sale, have made, or import embodiments of any patent claims other than the
|
||||||
|
licensed claims defined in Section 2. No license is granted to the trademarks
|
||||||
|
of Licensor even if such marks are included in the Original Work. Nothing in
|
||||||
|
this License shall be interpreted to prohibit Licensor from licensing under
|
||||||
|
terms different from this License any Original Work that Licensor otherwise
|
||||||
|
would have a right to license.
|
||||||
|
|
||||||
|
5) External Deployment. The term "External Deployment" means the use,
|
||||||
|
distribution, or communication of the Original Work or Derivative Works in any
|
||||||
|
way such that the Original Work or Derivative Works may be used by anyone
|
||||||
|
other than You, whether those works are distributed or communicated to those
|
||||||
|
persons or made available as an application intended for use over a network.
|
||||||
|
As an express condition for the grants of license hereunder, You must treat
|
||||||
|
any External Deployment by You of the Original Work or a Derivative Work as a
|
||||||
|
distribution under section 1(c).
|
||||||
|
|
||||||
|
6) Attribution Rights. You must retain, in the Source Code of any Derivative
|
||||||
|
Works that You create, all copyright, patent, or trademark notices from the
|
||||||
|
Source Code of the Original Work, as well as any notices of licensing and any
|
||||||
|
descriptive text identified therein as an "Attribution Notice." You must cause
|
||||||
|
the Source Code for any Derivative Works that You create to carry a prominent
|
||||||
|
Attribution Notice reasonably calculated to inform recipients that You have
|
||||||
|
modified the Original Work.
|
||||||
|
|
||||||
|
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
|
||||||
|
the copyright in and to the Original Work and the patent rights granted herein
|
||||||
|
by Licensor are owned by the Licensor or are sublicensed to You under the
|
||||||
|
terms of this License with the permission of the contributor(s) of those
|
||||||
|
copyrights and patent rights. Except as expressly stated in the immediately
|
||||||
|
preceding sentence, the Original Work is provided under this License on an "AS
|
||||||
|
IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without
|
||||||
|
limitation, the warranties of non-infringement, merchantability or fitness for
|
||||||
|
a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK
|
||||||
|
IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this
|
||||||
|
License. No license to the Original Work is granted by this License except
|
||||||
|
under this disclaimer.
|
||||||
|
|
||||||
|
8) Limitation of Liability. Under no circumstances and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise, shall the
|
||||||
|
Licensor be liable to anyone for any indirect, special, incidental, or
|
||||||
|
consequential damages of any character arising as a result of this License or
|
||||||
|
the use of the Original Work including, without limitation, damages for loss
|
||||||
|
of goodwill, work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses. This limitation of liability shall not
|
||||||
|
apply to the extent applicable law prohibits such limitation.
|
||||||
|
|
||||||
|
9) Acceptance and Termination. If, at any time, You expressly assented to this
|
||||||
|
License, that assent indicates your clear and irrevocable acceptance of this
|
||||||
|
License and all of its terms and conditions. If You distribute or communicate
|
||||||
|
copies of the Original Work or a Derivative Work, You must make a reasonable
|
||||||
|
effort under the circumstances to obtain the express assent of recipients to
|
||||||
|
the terms of this License. This License conditions your rights to undertake
|
||||||
|
the activities listed in Section 1, including your right to create Derivative
|
||||||
|
Works based upon the Original Work, and doing so without honoring these terms
|
||||||
|
and conditions is prohibited by copyright law and international treaty.
|
||||||
|
Nothing in this License is intended to affect copyright exceptions and
|
||||||
|
limitations (including "fair use" or "fair dealing"). This License shall
|
||||||
|
terminate immediately and You may no longer exercise any of the rights granted
|
||||||
|
to You by this License upon your failure to honor the conditions in Section
|
||||||
|
1(c).
|
||||||
|
|
||||||
|
10) Termination for Patent Action. This License shall terminate automatically
|
||||||
|
and You may no longer exercise any of the rights granted to You by this
|
||||||
|
License as of the date You commence an action, including a cross-claim or
|
||||||
|
counterclaim, against Licensor or any licensee alleging that the Original Work
|
||||||
|
infringes a patent. This termination provision shall not apply for an action
|
||||||
|
alleging patent infringement by combinations of the Original Work with other
|
||||||
|
software or hardware.
|
||||||
|
|
||||||
|
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
|
||||||
|
License may be brought only in the courts of a jurisdiction wherein the
|
||||||
|
Licensor resides or in which Licensor conducts its primary business, and under
|
||||||
|
the laws of that jurisdiction excluding its conflict-of-law provisions. The
|
||||||
|
application of the United Nations Convention on Contracts for the
|
||||||
|
International Sale of Goods is expressly excluded. Any use of the Original
|
||||||
|
Work outside the scope of this License or after its termination shall be
|
||||||
|
subject to the requirements and penalties of copyright or patent law in the
|
||||||
|
appropriate jurisdiction. This section shall survive the termination of this
|
||||||
|
License.
|
||||||
|
|
||||||
|
12) Attorneys' Fees. In any action to enforce the terms of this License or
|
||||||
|
seeking damages relating thereto, the prevailing party shall be entitled to
|
||||||
|
recover its costs and expenses, including, without limitation, reasonable
|
||||||
|
attorneys' fees and costs incurred in connection with such action, including
|
||||||
|
any appeal of such action. This section shall survive the termination of this
|
||||||
|
License.
|
||||||
|
|
||||||
|
13) Miscellaneous. If any provision of this License is held to be
|
||||||
|
unenforceable, such provision shall be reformed only to the extent necessary
|
||||||
|
to make it enforceable.
|
||||||
|
|
||||||
|
14) Definition of "You" in This License. "You" throughout this License,
|
||||||
|
whether in upper or lower case, means an individual or a legal entity
|
||||||
|
exercising rights under, and complying with all of the terms of, this License.
|
||||||
|
For legal entities, "You" includes any entity that controls, is controlled by,
|
||||||
|
or is under common control with you. For purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the direction or
|
||||||
|
management of such entity, whether by contract or otherwise, or (ii) ownership
|
||||||
|
of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
|
||||||
|
ownership of such entity.
|
||||||
|
|
||||||
|
15) Right to Use. You may use the Original Work in all ways not otherwise
|
||||||
|
restricted or conditioned by this License or by law, and Licensor promises not
|
||||||
|
to interfere with or be responsible for such uses by You.
|
||||||
|
|
||||||
|
16) Modification of This License. This License is Copyright © 2005 Lawrence
|
||||||
|
Rosen. Permission is granted to copy, distribute, or communicate this License
|
||||||
|
without modification. Nothing in this License permits You to modify this
|
||||||
|
License as applied to the Original Work or to Derivative Works. However, You
|
||||||
|
may modify the text of this License and copy, distribute or communicate your
|
||||||
|
modified version (the "Modified License") and apply it to other original works
|
||||||
|
of authorship subject to the following conditions: (i) You may not indicate in
|
||||||
|
any way that your Modified License is the "Open Software License" or "OSL" and
|
||||||
|
you may not use those names in the name of your Modified License; (ii) You
|
||||||
|
must replace the notice specified in the first paragraph above with the notice
|
||||||
|
"Licensed under <insert your license name here>" or with a notice of your own
|
||||||
|
that is not confusingly similar to the notice in this License; and (iii) You
|
||||||
|
may not claim that your original works are open source software unless your
|
||||||
|
Modified License has been approved by Open Source Initiative (OSI) and You
|
||||||
|
comply with its license review and certification process.
|
@ -1,12 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: license
|
|
||||||
title: The Unlicense
|
title: The Unlicense
|
||||||
category: Public Domain Dedication
|
|
||||||
tab-slug: unlicense
|
tab-slug: unlicense
|
||||||
permalink: /licenses/unlicense/
|
family: Public Domain Dedication
|
||||||
class: license-types
|
|
||||||
filename: UNLICENSE
|
|
||||||
|
|
||||||
source: http://unlicense.org/UNLICENSE
|
source: http://unlicense.org/UNLICENSE
|
||||||
|
|
||||||
description: Because copyright is automatic in most countries, <a href="http://unlicense.org">the Unlicense</a> is a template to waive copyright interest in software you've written and dedicate it to the public domain. Use the Unlicense to opt out of copyright entirely. It also includes the no-warranty statement from the MIT/X11 license.
|
description: Because copyright is automatic in most countries, <a href="http://unlicense.org">the Unlicense</a> is a template to waive copyright interest in software you've written and dedicate it to the public domain. Use the Unlicense to opt out of copyright entirely. It also includes the no-warranty statement from the MIT/X11 license.
|
||||||
@ -16,15 +11,19 @@ how: Create a text file (typically named UNLICENSE or UNLICENSE.txt) in the root
|
|||||||
required:
|
required:
|
||||||
|
|
||||||
permitted:
|
permitted:
|
||||||
|
- private-use
|
||||||
- commercial-use
|
- commercial-use
|
||||||
- modifications
|
- modifications
|
||||||
- distribution
|
- distribution
|
||||||
- private-use
|
- sublicense
|
||||||
|
|
||||||
forbidden:
|
forbidden:
|
||||||
- no-liability
|
- no-liability
|
||||||
|
|
||||||
|
required: []
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This is free and unencumbered software released into the public domain.
|
This is free and unencumbered software released into the public domain.
|
||||||
|
|
||||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
Anyone is free to copy, modify, publish, use, compile, sell, or
|
35
_licenses/wtfpl.txt
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
title: "Do What The F*ck You Want To Public License"
|
||||||
|
hidden: true
|
||||||
|
source: http://www.wtfpl.net/
|
||||||
|
|
||||||
|
description: The easiest licence out there. It gives the user permissions to do whatever they want with your code.
|
||||||
|
|
||||||
|
how: Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.
|
||||||
|
|
||||||
|
required: []
|
||||||
|
|
||||||
|
permitted:
|
||||||
|
- commercial-use
|
||||||
|
- modifications
|
||||||
|
- distribution
|
||||||
|
- sublicense
|
||||||
|
- private-use
|
||||||
|
|
||||||
|
forbidden: []
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
Version 2, December 2004
|
||||||
|
|
||||||
|
Copyright (C) 2004 [fullname] <[email]>
|
||||||
|
|
||||||
|
Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
copies of this license document, and changing it is allowed as long
|
||||||
|
as the name is changed.
|
||||||
|
|
||||||
|
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
1
_sass/jquery.qtip.scss
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../assets/vendor/qtip2/jquery.qtip.css
|
1
_sass/normalize.scss
vendored
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../assets/vendor/normalize-css/normalize.css
|
4
about.md
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: default
|
layout: default
|
||||||
permalink: /about/
|
permalink: /about/
|
||||||
title: What’s this about?
|
title: What's this about?
|
||||||
---
|
---
|
||||||
|
|
||||||
GitHub wants to help developers choose a license for their source code.
|
GitHub wants to help developers choose a license for their source code.
|
||||||
@ -17,7 +17,7 @@ This site is not a comprehensive directory of open source licenses. We think th
|
|||||||
* [Open Source Initiative](http://opensource.org/licenses/) - comprehensive list of open source licenses
|
* [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
|
* [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/)
|
* [License differentiator](http://www.oss-watch.ac.uk/apps/licdiff/) from [OSS Watch](http://www.oss-watch.ac.uk/)
|
||||||
* [TLDRLegal](http://www.tldrlegal.com/)
|
* [TLDRLegal](https://tldrlegal.com/)
|
||||||
{: .bullets}
|
{: .bullets}
|
||||||
|
|
||||||
### Tools
|
### Tools
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
---
|
---
|
||||||
layout: nil
|
|
||||||
---
|
---
|
||||||
|
|
||||||
{% include css/normalize.min.css %}
|
@import "normalize";
|
||||||
{% include css/jquery.qtip.min.css %}
|
@import "jquery.qtip";
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-image: url(../img/bg.jpg);
|
background: #fafafa;
|
||||||
color: #5c5855;
|
color: #5c5855;
|
||||||
font: 14px/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif;
|
font: 14px/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||||
}
|
}
|
||||||
@ -22,14 +21,14 @@ a:hover {
|
|||||||
}
|
}
|
||||||
|
|
||||||
h1, h2, h3, h5 {
|
h1, h2, h3, h5 {
|
||||||
color: #443a33;
|
color: #444;
|
||||||
font-family: Chivo, "Helvetica Neue", Helvetica, Arial, serif;
|
font-family: Chivo, "Helvetica Neue", Helvetica, Arial, serif;
|
||||||
font-weight: 900;
|
font-weight: 900;
|
||||||
line-height: 1.1;
|
line-height: 1.1;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 40px;
|
font-size: 35px;
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +59,7 @@ ol, ul { padding: 0; margin: 0; list-style-type: none; }
|
|||||||
th, td { text-align: left; font-weight: normal; }
|
th, td { text-align: left; font-weight: normal; }
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
color: #443b34;
|
color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
@ -73,7 +72,7 @@ strong {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.home h1 {
|
.home h1 {
|
||||||
font-size: 63px;
|
font-size: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.home h2 {
|
.home h2 {
|
||||||
@ -86,7 +85,7 @@ strong {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.home h2 span {
|
.home h2 span {
|
||||||
color: #e9e6e2;
|
color: #f1f1f1;
|
||||||
font-size: 70px;
|
font-size: 70px;
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -104,7 +103,7 @@ strong {
|
|||||||
margin-left: 27px;
|
margin-left: 27px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.triptych .first-li {
|
.triptych li:first-child {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -174,11 +173,11 @@ strong {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.license-family-description {
|
.license-family-description {
|
||||||
color: #5c5855;
|
color: #555;
|
||||||
}
|
}
|
||||||
|
|
||||||
.license-rules {
|
.license-rules {
|
||||||
border-bottom: solid 1px #d9d7d2;
|
border-bottom: solid 1px #ddd;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
line-height: 1.3;
|
line-height: 1.3;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
@ -204,7 +203,7 @@ strong {
|
|||||||
-webkit-box-sizing: content-box;
|
-webkit-box-sizing: content-box;
|
||||||
-moz-box-sizing: content-box;
|
-moz-box-sizing: content-box;
|
||||||
box-sizing: content-box;
|
box-sizing: content-box;
|
||||||
border-right: solid 1px #d9d7d2;
|
border-right: solid 1px #ddd;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
width: 280px;
|
width: 280px;
|
||||||
}
|
}
|
||||||
@ -232,7 +231,7 @@ strong {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.license-rules li:hover {
|
.license-rules li:hover {
|
||||||
color: #443a33;
|
color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
.license-sprite {
|
.license-sprite {
|
||||||
@ -261,8 +260,7 @@ strong {
|
|||||||
font-family: Consolas, Monaco, Courier, monospace;
|
font-family: Consolas, Monaco, Courier, monospace;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
background-color: rgba(255, 255, 255, 0.8);
|
border: 1px solid #eee;
|
||||||
border: 1px solid #e9e6e1;
|
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-ms-border-radius: 3px;
|
-ms-border-radius: 3px;
|
||||||
@ -317,18 +315,18 @@ strong {
|
|||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border-color: #ceccc9 #b6b4b1 #a6a4a2 #b6b4b1;
|
border-color: #ccc #bbb #aaa #bbb;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-width: 1px;
|
border-width: 1px;
|
||||||
color: #443b34;
|
color: #444;
|
||||||
-webkit-box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px, rgba(255, 255, 255, 0.8) 0 1px 0 0 inset;
|
-webkit-box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px, rgba(255, 255, 255, 0.8) 0 1px 0 0 inset;
|
||||||
-moz-box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px, rgba(255, 255, 255, 0.8) 0 1px 0 0 inset;
|
-moz-box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px, rgba(255, 255, 255, 0.8) 0 1px 0 0 inset;
|
||||||
box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px, rgba(255, 255, 255, 0.8) 0 1px 0 0 inset;
|
box-shadow: rgba(0, 0, 0, 0.1) 0 2px 4px, rgba(255, 255, 255, 0.8) 0 1px 0 0 inset;
|
||||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e5e0), color-stop(100%, #d5d3cf));
|
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eee), color-stop(100%, #ddd));
|
||||||
background-image: -webkit-linear-gradient(#e7e5e0, #d5d3cf);
|
background-image: -webkit-linear-gradient(#eee, #ddd);
|
||||||
background-image: -moz-linear-gradient(#e7e5e0, #d5d3cf);
|
background-image: -moz-linear-gradient(#eee, #ddd);
|
||||||
background-image: -o-linear-gradient(#e7e5e0, #d5d3cf);
|
background-image: -o-linear-gradient(#eee, #ddd);
|
||||||
background-image: linear-gradient(#e7e5e0, #d5d3cf);
|
background-image: linear-gradient(#eee, #ddd);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
@ -339,11 +337,11 @@ strong {
|
|||||||
|
|
||||||
.button:hover {
|
.button:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #e7e5e0), color-stop(100%, #d0ceca));
|
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #eee), color-stop(100%, #ccc));
|
||||||
background-image: -webkit-linear-gradient(#e7e5e0, #d0ceca);
|
background-image: -webkit-linear-gradient(#eee, #ccc);
|
||||||
background-image: -moz-linear-gradient(#e7e5e0, #d0ceca);
|
background-image: -moz-linear-gradient(#eee, #ccc);
|
||||||
background-image: -o-linear-gradient(#e7e5e0, #d0ceca);
|
background-image: -o-linear-gradient(#eee, #ccc);
|
||||||
background-image: linear-gradient(#e7e5e0, #d0ceca);
|
background-image: linear-gradient(#eee, #ccc);
|
||||||
}
|
}
|
||||||
|
|
||||||
.projects-with-license li {
|
.projects-with-license li {
|
||||||
@ -351,17 +349,17 @@ strong {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.site-footer {
|
.site-footer {
|
||||||
border-top: 1px solid #e9e6e1;
|
border-top: 1px solid #eee;
|
||||||
margin-top: 30px;
|
margin-top: 30px;
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
color: #5c5855;
|
color: #555;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
line-height: 1.5;
|
line-height: 1.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.site-footer a {
|
.site-footer a {
|
||||||
color: #443a33;
|
color: #444;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -492,3 +490,5 @@ strong {
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{% include css/responsive.css %}
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 639 B After Width: | Height: | Size: 639 B |
Before Width: | Height: | Size: 742 B After Width: | Height: | Size: 742 B |
@ -1,12 +1,7 @@
|
|||||||
|
---
|
||||||
|
---
|
||||||
|
|
||||||
class Choosealicense
|
class Choosealicense
|
||||||
|
|
||||||
# Checks if Flash is available in the client.
|
|
||||||
flashAvailable: ->
|
|
||||||
if ActiveXObject?
|
|
||||||
!!(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))
|
|
||||||
else
|
|
||||||
!!navigator.mimeTypes["application/x-shockwave-flash"]
|
|
||||||
|
|
||||||
# Selects the content of a given element
|
# Selects the content of a given element
|
||||||
selectText: (element) ->
|
selectText: (element) ->
|
||||||
if document.body.createTextRange
|
if document.body.createTextRange
|
||||||
@ -26,8 +21,8 @@ class Choosealicense
|
|||||||
my: "top center"
|
my: "top center"
|
||||||
at: "bottom center"
|
at: "bottom center"
|
||||||
|
|
||||||
# Annotation categories as defined in `_config.yml`
|
# Annotation rule types as defined in `_config.yml`
|
||||||
categories:
|
ruletypes:
|
||||||
required: "Required"
|
required: "Required"
|
||||||
permitted: "Permitted"
|
permitted: "Permitted"
|
||||||
forbidden: "Forbidden"
|
forbidden: "Forbidden"
|
||||||
@ -42,56 +37,40 @@ class Choosealicense
|
|||||||
initTooltips: ->
|
initTooltips: ->
|
||||||
|
|
||||||
# Dynamically add annotations as title attribute to rule list items
|
# Dynamically add annotations as title attribute to rule list items
|
||||||
for category, rules of annotations
|
for ruletype, rules of window.annotations
|
||||||
for label, text of rules
|
for rule in rules
|
||||||
$(".license-rules ul.license-#{category} li.#{label}").attr "title", text
|
$(".license-rules ul.license-#{ruletype} li.#{rule["tag"]}").attr "title", rule["description"]
|
||||||
|
|
||||||
# Init tooltips on all rule list items
|
# Init tooltips on all rule list items
|
||||||
for category, label of @categories
|
for ruletype, label of @ruletypes
|
||||||
$(".license-#{category} li").qtip
|
$(".license-#{ruletype} li").qtip
|
||||||
content:
|
content:
|
||||||
text: false
|
text: false
|
||||||
title:
|
title:
|
||||||
text: label
|
text: label
|
||||||
position: @qtip_position
|
position: @qtip_position
|
||||||
style:
|
style:
|
||||||
classes: "qtip-shadow qtip-#{category}"
|
classes: "qtip-shadow qtip-#{ruletype}"
|
||||||
|
|
||||||
false
|
false
|
||||||
|
|
||||||
# Initializes ZeroClipboard
|
# Initializes Clipboard.js
|
||||||
initZeroClipboard: ->
|
initClipboard: ->
|
||||||
# Backup the clipboard button's original text.
|
# Backup the clipboard button's original text.
|
||||||
$(".js-clipboard-button").data "clipboard-prompt", $(".js-clipboard-button").text()
|
$(".js-clipboard-button").data "clipboard-prompt", $(".js-clipboard-button").text()
|
||||||
|
|
||||||
# Hook up copy to clipboard buttons
|
# Hook up copy to clipboard buttons
|
||||||
clip = new ZeroClipboard $(".js-clipboard-button"),
|
clip = new Clipboard ".js-clipboard-button"
|
||||||
moviePath: "/js/ZeroClipboard.swf"
|
|
||||||
clip.on "mouseout", @clipboardMouseout
|
clip.on "mouseout", @clipboardMouseout
|
||||||
clip.on "complete", @clipboardComplete
|
clip.on "complete", @clipboardComplete
|
||||||
clip
|
|
||||||
|
|
||||||
# Initializes an alternative way to copy the license for non-flash compatible
|
|
||||||
# browsers
|
|
||||||
initAlternativeClipboard: ->
|
|
||||||
$(".js-clipboard-button").click (e) =>
|
|
||||||
target = "#" + $(e.target).data("clipboard-target")
|
|
||||||
@selectText $(target)[0]
|
|
||||||
|
|
||||||
# if Zero Clipboard is present, bind to button and init
|
|
||||||
initClipboard: ->
|
|
||||||
if ZeroClipboard? && @flashAvailable()
|
|
||||||
@initZeroClipboard()
|
|
||||||
else
|
|
||||||
@initAlternativeClipboard()
|
|
||||||
|
|
||||||
# Callback to restore the clipboard button's original text
|
# Callback to restore the clipboard button's original text
|
||||||
clipboardMouseout: (client, args) ->
|
clipboardMouseout: (client, args) ->
|
||||||
@innerText = $(this).data("clipboard-prompt")
|
@textContent = $(this).data("clipboard-prompt")
|
||||||
|
|
||||||
# Post-copy user feedback callback
|
# Post-copy user feedback callback
|
||||||
clipboardComplete: (client, args) ->
|
clipboardComplete: (client, args) ->
|
||||||
@innerText = "Copied!"
|
@textContent = "Copied!"
|
||||||
|
|
||||||
# Initializes pill navigation for license variations
|
# Initializes pill navigation for license variations
|
||||||
initLicenseVariationNav: ->
|
initLicenseVariationNav: ->
|
31
assets/vendor/clipboard/.bower.json
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"name": "clipboard",
|
||||||
|
"version": "1.4.3",
|
||||||
|
"description": "Modern copy to clipboard. No Flash. Just 2kb",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "dist/clipboard.js",
|
||||||
|
"ignore": [
|
||||||
|
"/.*/",
|
||||||
|
"/example/",
|
||||||
|
"/test/",
|
||||||
|
"/.*",
|
||||||
|
"/bower.json",
|
||||||
|
"/karma.conf.js"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"clipboard",
|
||||||
|
"copy",
|
||||||
|
"cut"
|
||||||
|
],
|
||||||
|
"homepage": "https://github.com/zenorocha/clipboard.js",
|
||||||
|
"_release": "1.4.3",
|
||||||
|
"_resolution": {
|
||||||
|
"type": "version",
|
||||||
|
"tag": "v1.4.3",
|
||||||
|
"commit": "705e2dbefdf40911ee2fe266a514b982d3edd0b6"
|
||||||
|
},
|
||||||
|
"_source": "git://github.com/zenorocha/clipboard.js.git",
|
||||||
|
"_target": "~1.4.3",
|
||||||
|
"_originalSource": "clipboard",
|
||||||
|
"_direct": true
|
||||||
|
}
|
20
assets/vendor/clipboard/bower.json
vendored
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"name": "clipboard",
|
||||||
|
"version": "1.4.3",
|
||||||
|
"description": "Modern copy to clipboard. No Flash. Just 2kb",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "dist/clipboard.js",
|
||||||
|
"ignore": [
|
||||||
|
"/.*/",
|
||||||
|
"/example/",
|
||||||
|
"/test/",
|
||||||
|
"/.*",
|
||||||
|
"/bower.json",
|
||||||
|
"/karma.conf.js"
|
||||||
|
],
|
||||||
|
"keywords": [
|
||||||
|
"clipboard",
|
||||||
|
"copy",
|
||||||
|
"cut"
|
||||||
|
]
|
||||||
|
}
|
28
assets/vendor/clipboard/contributing.md
vendored
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Contributing guide
|
||||||
|
|
||||||
|
Want to contribute to Clipboard.js? Awesome!
|
||||||
|
There are many ways you can contribute, see below.
|
||||||
|
|
||||||
|
## Opening issues
|
||||||
|
|
||||||
|
Open an issue to report bugs or to propose new features.
|
||||||
|
|
||||||
|
- Reporting bugs: describe the bug as clearly as you can, including steps to reproduce, what happened and what you were expecting to happen. Also include browser version, OS and other related software's (npm, Node.js, etc) versions when applicable.
|
||||||
|
|
||||||
|
- Proposing features: explain the proposed feature, what it should do, why it is useful, how users should use it. Give us as much info as possible so it will be easier to discuss, access and implement the proposed feature. When you're unsure about a certain aspect of the feature, feel free to leave it open for others to discuss and find an appropriate solution.
|
||||||
|
|
||||||
|
## Proposing pull requests
|
||||||
|
|
||||||
|
Pull requests are very welcome. Note that if you are going to propose drastic changes, be sure to open an issue for discussion first, to make sure that your PR will be accepted before you spend effort coding it.
|
||||||
|
|
||||||
|
Fork the Clipboard.js repository, clone it locally and create a branch for your proposed bug fix or new feature. Avoid working directly on the master branch.
|
||||||
|
|
||||||
|
Implement your bug fix or feature, write tests to cover it and make sure all tests are passing (run a final `npm test` to make sure everything is correct). Then commit your changes, push your bug fix/feature branch to the origin (your forked repo) and open a pull request to the upstream (the repository you originally forked)'s master branch.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
Documentation is extremely important and takes a fair deal of time and effort to write and keep updated. Please submit any and all improvements you can make to the repository's docs.
|
||||||
|
|
||||||
|
## Known issues
|
||||||
|
If you're using npm@3 you'll probably face some issues related to peerDependencies.
|
||||||
|
https://github.com/npm/npm/issues/9204
|
587
assets/vendor/clipboard/dist/clipboard.js
vendored
Normal file
@ -0,0 +1,587 @@
|
|||||||
|
/*!
|
||||||
|
* clipboard.js v1.4.3
|
||||||
|
* https://zenorocha.github.io/clipboard.js
|
||||||
|
*
|
||||||
|
* Licensed MIT © Zeno Rocha
|
||||||
|
*/
|
||||||
|
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
|
||||||
|
var matches = require('matches-selector')
|
||||||
|
|
||||||
|
module.exports = function (element, selector, checkYoSelf) {
|
||||||
|
var parent = checkYoSelf ? element : element.parentNode
|
||||||
|
|
||||||
|
while (parent && parent !== document) {
|
||||||
|
if (matches(parent, selector)) return parent;
|
||||||
|
parent = parent.parentNode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
},{"matches-selector":2}],2:[function(require,module,exports){
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Element prototype.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var proto = Element.prototype;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Vendor function.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var vendor = proto.matchesSelector
|
||||||
|
|| proto.webkitMatchesSelector
|
||||||
|
|| proto.mozMatchesSelector
|
||||||
|
|| proto.msMatchesSelector
|
||||||
|
|| proto.oMatchesSelector;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expose `match()`.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = match;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Match `el` to `selector`.
|
||||||
|
*
|
||||||
|
* @param {Element} el
|
||||||
|
* @param {String} selector
|
||||||
|
* @return {Boolean}
|
||||||
|
* @api public
|
||||||
|
*/
|
||||||
|
|
||||||
|
function match(el, selector) {
|
||||||
|
if (vendor) return vendor.call(el, selector);
|
||||||
|
var nodes = el.parentNode.querySelectorAll(selector);
|
||||||
|
for (var i = 0; i < nodes.length; ++i) {
|
||||||
|
if (nodes[i] == el) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
},{}],3:[function(require,module,exports){
|
||||||
|
var closest = require('closest');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegate event `type` to `selector`
|
||||||
|
* and invoke `fn(e)`. A callback function
|
||||||
|
* is returned which may be passed to `.unbind()`.
|
||||||
|
*
|
||||||
|
* @param {Element} el
|
||||||
|
* @param {String} selector
|
||||||
|
* @param {String} type
|
||||||
|
* @param {Function} fn
|
||||||
|
* @param {Boolean} capture
|
||||||
|
* @return {Function}
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.bind = function(el, selector, type, fn, capture){
|
||||||
|
return el.addEventListener(type, function(e){
|
||||||
|
var target = e.target || e.srcElement;
|
||||||
|
e.delegateTarget = closest(target, selector, true, el);
|
||||||
|
if (e.delegateTarget) fn.call(el, e);
|
||||||
|
}, capture);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unbind event `type`'s callback `fn`.
|
||||||
|
*
|
||||||
|
* @param {Element} el
|
||||||
|
* @param {String} type
|
||||||
|
* @param {Function} fn
|
||||||
|
* @param {Boolean} capture
|
||||||
|
*/
|
||||||
|
|
||||||
|
exports.unbind = function(el, type, fn, capture){
|
||||||
|
el.removeEventListener(type, fn, capture);
|
||||||
|
};
|
||||||
|
|
||||||
|
},{"closest":1}],4:[function(require,module,exports){
|
||||||
|
function select(element) {
|
||||||
|
var selection = window.getSelection();
|
||||||
|
|
||||||
|
if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
|
||||||
|
element.selectionStart = 0;
|
||||||
|
element.selectionEnd = element.value.length;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var range = document.createRange();
|
||||||
|
|
||||||
|
range.selectNodeContents(element);
|
||||||
|
selection.removeAllRanges();
|
||||||
|
selection.addRange(range);
|
||||||
|
}
|
||||||
|
|
||||||
|
return selection.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = select;
|
||||||
|
|
||||||
|
},{}],5:[function(require,module,exports){
|
||||||
|
function E () {
|
||||||
|
// Keep this empty so it's easier to inherit from
|
||||||
|
// (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)
|
||||||
|
}
|
||||||
|
|
||||||
|
E.prototype = {
|
||||||
|
on: function (name, callback, ctx) {
|
||||||
|
var e = this.e || (this.e = {});
|
||||||
|
|
||||||
|
(e[name] || (e[name] = [])).push({
|
||||||
|
fn: callback,
|
||||||
|
ctx: ctx
|
||||||
|
});
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
once: function (name, callback, ctx) {
|
||||||
|
var self = this;
|
||||||
|
function listener () {
|
||||||
|
self.off(name, listener);
|
||||||
|
callback.apply(ctx, arguments);
|
||||||
|
};
|
||||||
|
|
||||||
|
listener._ = callback
|
||||||
|
return this.on(name, listener, ctx);
|
||||||
|
},
|
||||||
|
|
||||||
|
emit: function (name) {
|
||||||
|
var data = [].slice.call(arguments, 1);
|
||||||
|
var evtArr = ((this.e || (this.e = {}))[name] || []).slice();
|
||||||
|
var i = 0;
|
||||||
|
var len = evtArr.length;
|
||||||
|
|
||||||
|
for (i; i < len; i++) {
|
||||||
|
evtArr[i].fn.apply(evtArr[i].ctx, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
|
off: function (name, callback) {
|
||||||
|
var e = this.e || (this.e = {});
|
||||||
|
var evts = e[name];
|
||||||
|
var liveEvents = [];
|
||||||
|
|
||||||
|
if (evts && callback) {
|
||||||
|
for (var i = 0, len = evts.length; i < len; i++) {
|
||||||
|
if (evts[i].fn !== callback && evts[i].fn._ !== callback)
|
||||||
|
liveEvents.push(evts[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove event from queue to prevent memory leak
|
||||||
|
// Suggested by https://github.com/lazd
|
||||||
|
// Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910
|
||||||
|
|
||||||
|
(liveEvents.length)
|
||||||
|
? e[name] = liveEvents
|
||||||
|
: delete e[name];
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = E;
|
||||||
|
|
||||||
|
},{}],6:[function(require,module,exports){
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
exports.__esModule = true;
|
||||||
|
|
||||||
|
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
|
||||||
|
|
||||||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
||||||
|
|
||||||
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
||||||
|
|
||||||
|
var _select = require('select');
|
||||||
|
|
||||||
|
var _select2 = _interopRequireDefault(_select);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inner class which performs selection from either `text` or `target`
|
||||||
|
* properties and then executes copy or cut operations.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var ClipboardAction = (function () {
|
||||||
|
/**
|
||||||
|
* @param {Object} options
|
||||||
|
*/
|
||||||
|
|
||||||
|
function ClipboardAction(options) {
|
||||||
|
_classCallCheck(this, ClipboardAction);
|
||||||
|
|
||||||
|
this.resolveOptions(options);
|
||||||
|
this.initSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines base properties passed from constructor.
|
||||||
|
* @param {Object} options
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.resolveOptions = function resolveOptions() {
|
||||||
|
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
||||||
|
|
||||||
|
this.action = options.action;
|
||||||
|
this.emitter = options.emitter;
|
||||||
|
this.target = options.target;
|
||||||
|
this.text = options.text;
|
||||||
|
this.trigger = options.trigger;
|
||||||
|
|
||||||
|
this.selectedText = '';
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decides which selection strategy is going to be applied based
|
||||||
|
* on the existence of `text` and `target` properties.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.initSelection = function initSelection() {
|
||||||
|
if (this.text && this.target) {
|
||||||
|
throw new Error('Multiple attributes declared, use either "target" or "text"');
|
||||||
|
} else if (this.text) {
|
||||||
|
this.selectFake();
|
||||||
|
} else if (this.target) {
|
||||||
|
this.selectTarget();
|
||||||
|
} else {
|
||||||
|
throw new Error('Missing required attributes, use either "target" or "text"');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a fake textarea element, sets its value from `text` property,
|
||||||
|
* and makes a selection on it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.selectFake = function selectFake() {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
this.removeFake();
|
||||||
|
|
||||||
|
this.fakeHandler = document.body.addEventListener('click', function () {
|
||||||
|
return _this.removeFake();
|
||||||
|
});
|
||||||
|
|
||||||
|
this.fakeElem = document.createElement('textarea');
|
||||||
|
this.fakeElem.style.position = 'absolute';
|
||||||
|
this.fakeElem.style.left = '-9999px';
|
||||||
|
this.fakeElem.style.top = (window.pageYOffset || document.documentElement.scrollTop) + 'px';
|
||||||
|
this.fakeElem.setAttribute('readonly', '');
|
||||||
|
this.fakeElem.value = this.text;
|
||||||
|
|
||||||
|
document.body.appendChild(this.fakeElem);
|
||||||
|
|
||||||
|
this.selectedText = _select2['default'](this.fakeElem);
|
||||||
|
this.copyText();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only removes the fake element after another click event, that way
|
||||||
|
* a user can hit `Ctrl+C` to copy because selection still exists.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.removeFake = function removeFake() {
|
||||||
|
if (this.fakeHandler) {
|
||||||
|
document.body.removeEventListener('click');
|
||||||
|
this.fakeHandler = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.fakeElem) {
|
||||||
|
document.body.removeChild(this.fakeElem);
|
||||||
|
this.fakeElem = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Selects the content from element passed on `target` property.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.selectTarget = function selectTarget() {
|
||||||
|
this.selectedText = _select2['default'](this.target);
|
||||||
|
this.copyText();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes the copy operation based on the current selection.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.copyText = function copyText() {
|
||||||
|
var succeeded = undefined;
|
||||||
|
|
||||||
|
try {
|
||||||
|
succeeded = document.execCommand(this.action);
|
||||||
|
} catch (err) {
|
||||||
|
succeeded = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.handleResult(succeeded);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fires an event based on the copy operation result.
|
||||||
|
* @param {Boolean} succeeded
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.handleResult = function handleResult(succeeded) {
|
||||||
|
if (succeeded) {
|
||||||
|
this.emitter.emit('success', {
|
||||||
|
action: this.action,
|
||||||
|
text: this.selectedText,
|
||||||
|
trigger: this.trigger,
|
||||||
|
clearSelection: this.clearSelection.bind(this)
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.emitter.emit('error', {
|
||||||
|
action: this.action,
|
||||||
|
trigger: this.trigger,
|
||||||
|
clearSelection: this.clearSelection.bind(this)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes current selection and focus from `target` element.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.clearSelection = function clearSelection() {
|
||||||
|
if (this.target) {
|
||||||
|
this.target.blur();
|
||||||
|
}
|
||||||
|
|
||||||
|
window.getSelection().removeAllRanges();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the `action` to be performed which can be either 'copy' or 'cut'.
|
||||||
|
* @param {String} action
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroy lifecycle.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ClipboardAction.prototype.destroy = function destroy() {
|
||||||
|
this.removeFake();
|
||||||
|
};
|
||||||
|
|
||||||
|
_createClass(ClipboardAction, [{
|
||||||
|
key: 'action',
|
||||||
|
set: function set() {
|
||||||
|
var action = arguments.length <= 0 || arguments[0] === undefined ? 'copy' : arguments[0];
|
||||||
|
|
||||||
|
this._action = action;
|
||||||
|
|
||||||
|
if (this._action !== 'copy' && this._action !== 'cut') {
|
||||||
|
throw new Error('Invalid "action" value, use either "copy" or "cut"');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the `action` property.
|
||||||
|
* @return {String}
|
||||||
|
*/
|
||||||
|
get: function get() {
|
||||||
|
return this._action;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the `target` property using an element
|
||||||
|
* that will be have its content copied.
|
||||||
|
* @param {Element} target
|
||||||
|
*/
|
||||||
|
}, {
|
||||||
|
key: 'target',
|
||||||
|
set: function set(target) {
|
||||||
|
if (target !== undefined) {
|
||||||
|
if (target && typeof target === 'object' && target.nodeType === 1) {
|
||||||
|
this._target = target;
|
||||||
|
} else {
|
||||||
|
throw new Error('Invalid "target" value, use a valid Element');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the `target` property.
|
||||||
|
* @return {String|HTMLElement}
|
||||||
|
*/
|
||||||
|
get: function get() {
|
||||||
|
return this._target;
|
||||||
|
}
|
||||||
|
}]);
|
||||||
|
|
||||||
|
return ClipboardAction;
|
||||||
|
})();
|
||||||
|
|
||||||
|
exports['default'] = ClipboardAction;
|
||||||
|
module.exports = exports['default'];
|
||||||
|
|
||||||
|
},{"select":4}],7:[function(require,module,exports){
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
exports.__esModule = true;
|
||||||
|
|
||||||
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
||||||
|
|
||||||
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
||||||
|
|
||||||
|
function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
|
||||||
|
|
||||||
|
var _clipboardAction = require('./clipboard-action');
|
||||||
|
|
||||||
|
var _clipboardAction2 = _interopRequireDefault(_clipboardAction);
|
||||||
|
|
||||||
|
var _delegate = require('delegate');
|
||||||
|
|
||||||
|
var _delegate2 = _interopRequireDefault(_delegate);
|
||||||
|
|
||||||
|
var _tinyEmitter = require('tiny-emitter');
|
||||||
|
|
||||||
|
var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base class which takes a selector, delegates a click event to it,
|
||||||
|
* and instantiates a new `ClipboardAction` on each click.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Clipboard = (function (_Emitter) {
|
||||||
|
_inherits(Clipboard, _Emitter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {String} selector
|
||||||
|
* @param {Object} options
|
||||||
|
*/
|
||||||
|
|
||||||
|
function Clipboard(selector, options) {
|
||||||
|
_classCallCheck(this, Clipboard);
|
||||||
|
|
||||||
|
_Emitter.call(this);
|
||||||
|
|
||||||
|
this.resolveOptions(options);
|
||||||
|
this.delegateClick(selector);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to retrieve attribute value.
|
||||||
|
* @param {String} suffix
|
||||||
|
* @param {Element} element
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines if attributes would be resolved using internal setter functions
|
||||||
|
* or custom functions that were passed in the constructor.
|
||||||
|
* @param {Object} options
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.resolveOptions = function resolveOptions() {
|
||||||
|
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
||||||
|
|
||||||
|
this.action = typeof options.action === 'function' ? options.action : this.defaultAction;
|
||||||
|
this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;
|
||||||
|
this.text = typeof options.text === 'function' ? options.text : this.defaultText;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delegates a click event on the passed selector.
|
||||||
|
* @param {String} selector
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.delegateClick = function delegateClick(selector) {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
this.binding = _delegate2['default'].bind(document.body, selector, 'click', function (e) {
|
||||||
|
return _this.onClick(e);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Undelegates a click event on body.
|
||||||
|
* @param {String} selector
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.undelegateClick = function undelegateClick() {
|
||||||
|
_delegate2['default'].unbind(document.body, 'click', this.binding);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Defines a new `ClipboardAction` on each click event.
|
||||||
|
* @param {Event} e
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.onClick = function onClick(e) {
|
||||||
|
if (this.clipboardAction) {
|
||||||
|
this.clipboardAction = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.clipboardAction = new _clipboardAction2['default']({
|
||||||
|
action: this.action(e.delegateTarget),
|
||||||
|
target: this.target(e.delegateTarget),
|
||||||
|
text: this.text(e.delegateTarget),
|
||||||
|
trigger: e.delegateTarget,
|
||||||
|
emitter: this
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default `action` lookup function.
|
||||||
|
* @param {Element} trigger
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.defaultAction = function defaultAction(trigger) {
|
||||||
|
return getAttributeValue('action', trigger);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default `target` lookup function.
|
||||||
|
* @param {Element} trigger
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.defaultTarget = function defaultTarget(trigger) {
|
||||||
|
var selector = getAttributeValue('target', trigger);
|
||||||
|
|
||||||
|
if (selector) {
|
||||||
|
return document.querySelector(selector);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default `text` lookup function.
|
||||||
|
* @param {Element} trigger
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.defaultText = function defaultText(trigger) {
|
||||||
|
return getAttributeValue('text', trigger);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroy lifecycle.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Clipboard.prototype.destroy = function destroy() {
|
||||||
|
this.undelegateClick();
|
||||||
|
|
||||||
|
if (this.clipboardAction) {
|
||||||
|
this.clipboardAction.destroy();
|
||||||
|
this.clipboardAction = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return Clipboard;
|
||||||
|
})(_tinyEmitter2['default']);
|
||||||
|
|
||||||
|
function getAttributeValue(suffix, element) {
|
||||||
|
var attribute = 'data-clipboard-' + suffix;
|
||||||
|
|
||||||
|
if (!element.hasAttribute(attribute)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return element.getAttribute(attribute);
|
||||||
|
}
|
||||||
|
|
||||||
|
exports['default'] = Clipboard;
|
||||||
|
module.exports = exports['default'];
|
||||||
|
|
||||||
|
},{"./clipboard-action":6,"delegate":3,"tiny-emitter":5}]},{},[7])(7)
|
||||||
|
});
|
7
assets/vendor/clipboard/dist/clipboard.min.js
vendored
Normal file
12
assets/vendor/clipboard/package.js
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// Package metadata for Meteor.js.
|
||||||
|
|
||||||
|
Package.describe({
|
||||||
|
name: "zenorocha:clipboard",
|
||||||
|
summary: "Modern copy to clipboard. No Flash. Just 2kb.",
|
||||||
|
version: "1.4.2",
|
||||||
|
git: "https://github.com/zenorocha/clipboard.js"
|
||||||
|
});
|
||||||
|
|
||||||
|
Package.onUse(function(api) {
|
||||||
|
api.addFiles("dist/clipboard.min.js", "client");
|
||||||
|
});
|
53
assets/vendor/clipboard/package.json
vendored
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"name": "clipboard",
|
||||||
|
"version": "1.4.3",
|
||||||
|
"description": "Modern copy to clipboard. No Flash. Just 2kb",
|
||||||
|
"repository": "zenorocha/clipboard.js",
|
||||||
|
"license": "MIT",
|
||||||
|
"main": "dist/clipboard.js",
|
||||||
|
"browser": "src/clipboard.js",
|
||||||
|
"browserify": {
|
||||||
|
"transform": [
|
||||||
|
[
|
||||||
|
"babelify",
|
||||||
|
{
|
||||||
|
"loose": "all"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"clipboard",
|
||||||
|
"copy",
|
||||||
|
"cut"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"babelify": "^6.3.0",
|
||||||
|
"browserify": "^11.2.0",
|
||||||
|
"delegate": "^1.0.0",
|
||||||
|
"select": "^1.0.0",
|
||||||
|
"tiny-emitter": "^1.0.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"karma": "^0.13.10",
|
||||||
|
"karma-browserify": "^4.4.0",
|
||||||
|
"karma-chai": "^0.1.0",
|
||||||
|
"karma-mocha": "^0.2.0",
|
||||||
|
"karma-phantomjs-launcher": "^0.2.1",
|
||||||
|
"karma-sinon": "^1.0.4",
|
||||||
|
"mocha": "^2.3.3",
|
||||||
|
"phantomjs-polyfill": "0.0.1",
|
||||||
|
"uglify-js": "^2.4.24",
|
||||||
|
"watchify": "^3.4.0",
|
||||||
|
"bannerify": "Vekat/bannerify#feature-option"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "npm run build-debug && npm run build-min",
|
||||||
|
"build-debug": "browserify src/clipboard.js -s Clipboard -p [bannerify --file .banner ] -o dist/clipboard.js",
|
||||||
|
"build-min": "uglifyjs dist/clipboard.js --comments '/!/' -m screw_ie8=true -c screw_ie8=true,unused=false -o dist/clipboard.min.js",
|
||||||
|
"build-watch": "watchify src/clipboard.js -s Clipboard -o dist/clipboard.js -v",
|
||||||
|
"test": "npm run test-browser && npm run test-server",
|
||||||
|
"test-browser": "karma start --single-run",
|
||||||
|
"test-server": "mocha test/module-systems.js"
|
||||||
|
}
|
||||||
|
}
|
183
assets/vendor/clipboard/readme.md
vendored
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
# clipboard.js
|
||||||
|
|
||||||
|
[![Build Status](http://img.shields.io/travis/zenorocha/clipboard.js/master.svg?style=flat)](https://travis-ci.org/zenorocha/clipboard.js)
|
||||||
|
![Killing Flash](https://img.shields.io/badge/killing-flash-brightgreen.svg?style=flat)
|
||||||
|
|
||||||
|
> Modern copy to clipboard. No Flash. Just 2kb
|
||||||
|
|
||||||
|
<a href="http://clipboardjs.com/"><img width="728" src="https://cloud.githubusercontent.com/assets/398893/9983535/5ab0a950-5fb4-11e5-9602-e73c0b661883.jpg" alt="Demo"></a>
|
||||||
|
|
||||||
|
## Why
|
||||||
|
|
||||||
|
Copying text to the clipboard shouldn't be hard. It shouldn't require dozens of steps to configure or hundreds of KBs to load. But most of all, it shouldn't depend on Flash or any bloated framework.
|
||||||
|
|
||||||
|
That's why clipboard.js exists.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
You can get it on npm.
|
||||||
|
|
||||||
|
```
|
||||||
|
npm install clipboard --save
|
||||||
|
```
|
||||||
|
|
||||||
|
Or bower, too.
|
||||||
|
|
||||||
|
```
|
||||||
|
bower install clipboard --save
|
||||||
|
```
|
||||||
|
|
||||||
|
If you're not into package management, just [download a ZIP](https://github.com/zenorocha/clipboard.js/archive/master.zip) file.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
First, include the script located on the `dist` folder.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script src="dist/clipboard.min.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
Or load it from a CDN.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script src="https://cdn.rawgit.com/zenorocha/clipboard.js/master/dist/clipboard.min.js"></script>
|
||||||
|
```
|
||||||
|
|
||||||
|
Now, you need to instantiate it using a DOM selector. This selector corresponds to the trigger element(s), for example `<button class="btn">`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
new Clipboard('.btn');
|
||||||
|
```
|
||||||
|
|
||||||
|
Internally, we need to fetch all elements that matches with your selector and attach event listeners for each one. But guess what? If you have hundreds of matches, this operation can consume a lot of memory.
|
||||||
|
|
||||||
|
For this reason we use [event delegation](http://stackoverflow.com/questions/1687296/what-is-dom-event-delegation) which replaces multiple event listeners with just a single listener. After all, [#perfmatters](https://twitter.com/hashtag/perfmatters).
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
We're living a _declarative renaissance_, that's why we decided to take advantage of [HTML5 data attributes](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes) for better usability.
|
||||||
|
|
||||||
|
### Copy text from another element
|
||||||
|
|
||||||
|
A pretty common use case is to copy content from another element. You can do that by adding a `data-clipboard-target` attribute in your trigger element.
|
||||||
|
|
||||||
|
The value you include on this attribute needs to match another's element selector.
|
||||||
|
|
||||||
|
<a href="http://clipboardjs.com/#example-target"><img width="473" alt="example-2" src="https://cloud.githubusercontent.com/assets/398893/9983467/a4946aaa-5fb1-11e5-9780-f09fcd7ca6c8.png"></a>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!-- Target -->
|
||||||
|
<input id="foo" value="https://github.com/zenorocha/clipboard.js.git">
|
||||||
|
|
||||||
|
<!-- Trigger -->
|
||||||
|
<button class="btn" data-clipboard-target="#foo">
|
||||||
|
<img src="assets/clippy.svg" alt="Copy to clipboard">
|
||||||
|
</button>
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cut text from another element
|
||||||
|
|
||||||
|
Additionally, you can define a `data-clipboard-action` attribute to specify if you want to either `copy` or `cut` content.
|
||||||
|
|
||||||
|
If you omit this attribute, `copy` will be used by default.
|
||||||
|
|
||||||
|
<a href="http://clipboardjs.com/#example-action"><img width="473" alt="example-3" src="https://cloud.githubusercontent.com/assets/398893/10000358/7df57b9c-6050-11e5-9cd1-fbc51d2fd0a7.png"></a>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!-- Target -->
|
||||||
|
<textarea id="bar">Mussum ipsum cacilds...</textarea>
|
||||||
|
|
||||||
|
<!-- Trigger -->
|
||||||
|
<button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar">
|
||||||
|
Cut to clipboard
|
||||||
|
</button>
|
||||||
|
```
|
||||||
|
|
||||||
|
As you may expect, the `cut` action only works on `<input>` or `<textarea>` elements.
|
||||||
|
|
||||||
|
### Copy text from attribute
|
||||||
|
|
||||||
|
Truth is, you don't even need another element to copy its content from. You can just include a `data-clipboard-text` attribute in your trigger element.
|
||||||
|
|
||||||
|
<a href="http://clipboardjs.com/#example-text"><img width="147" alt="example-1" src="https://cloud.githubusercontent.com/assets/398893/10000347/6e16cf8c-6050-11e5-9883-1c5681f9ec45.png"></a>
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!-- Trigger -->
|
||||||
|
<button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js">
|
||||||
|
Copy to clipboard
|
||||||
|
</button>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Events
|
||||||
|
|
||||||
|
There are cases where you'd like to show some user feedback or capture what has been selected after a copy/cut operation.
|
||||||
|
|
||||||
|
That's why we fire custom events such as `success` and `error` for you to listen and implement your custom logic.
|
||||||
|
|
||||||
|
```js
|
||||||
|
var clipboard = new Clipboard('.btn');
|
||||||
|
|
||||||
|
clipboard.on('success', function(e) {
|
||||||
|
console.info('Action:', e.action);
|
||||||
|
console.info('Text:', e.text);
|
||||||
|
console.info('Trigger:', e.trigger);
|
||||||
|
|
||||||
|
e.clearSelection();
|
||||||
|
});
|
||||||
|
|
||||||
|
clipboard.on('error', function(e) {
|
||||||
|
console.error('Action:', e.action);
|
||||||
|
console.error('Trigger:', e.trigger);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
For a live demonstration, open this [site](http://clipboardjs.com/) and just your console :)
|
||||||
|
|
||||||
|
## Advanced Options
|
||||||
|
|
||||||
|
If you don't want to modify your HTML, there's a pretty handy imperative API for you to use. All you need to do is declare a function, do your thing, and return a value.
|
||||||
|
|
||||||
|
For instance, if you want to dynamically set a `target`, you'll need to return a Node.
|
||||||
|
|
||||||
|
```js
|
||||||
|
new Clipboard('.btn', {
|
||||||
|
target: function(trigger) {
|
||||||
|
return trigger.nextElementSibling;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
If you want to dynamically set a `text`, you'll return a String.
|
||||||
|
|
||||||
|
```js
|
||||||
|
new Clipboard('.btn', {
|
||||||
|
text: function(trigger) {
|
||||||
|
return trigger.getAttribute('aria-label');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Also, with are working with single page apps, you may want to manage the lifecycle of the DOM more precisely. Here's how you clean up the events and objects that we create.
|
||||||
|
|
||||||
|
```js
|
||||||
|
var clipboard = new Clipboard('.btn');
|
||||||
|
clipboard.destroy();
|
||||||
|
```
|
||||||
|
|
||||||
|
## Browser Support
|
||||||
|
|
||||||
|
This library relies on both [Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection) and [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) APIs. The second one is supported in the following browsers.
|
||||||
|
|
||||||
|
| <img src="http://clipboardjs.com/assets/images/chrome.png" width="48px" height="48px" alt="Chrome logo"> | <img src="http://clipboardjs.com/assets/images/firefox.png" width="48px" height="48px" alt="Firefox logo"> | <img src="http://clipboardjs.com/assets/images/ie.png" width="48px" height="48px" alt="Internet Explorer logo"> | <img src="http://clipboardjs.com/assets/images/opera.png" width="48px" height="48px" alt="Opera logo"> | <img src="http://clipboardjs.com/assets/images/safari.png" width="48px" height="48px" alt="Safari logo"> |
|
||||||
|
|:---:|:---:|:---:|:---:|:---:|
|
||||||
|
| 42+ ✔ | 41+ ✔ | 9+ ✔ | 29+ ✔ | Nope ✘ |
|
||||||
|
|
||||||
|
Although copy/cut operations with [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) aren't supported on Safari yet (including mobile), it gracefully degrades because [Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection) is supported.
|
||||||
|
|
||||||
|
That means you can show a tooltip saying `Copied!` when `success` event is called and `Press Ctrl+C to copy` when `error` event is called because the text is already selected.
|
||||||
|
|
||||||
|
For a live demonstration, open this [site](http://clipboardjs.com) on Safari.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[MIT License](http://zenorocha.mit-license.org/) © Zeno Rocha
|
26
assets/vendor/html5shiv/.bower.json
vendored
Normal 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"
|
||||||
|
}
|
11
assets/vendor/html5shiv/dist/html5shiv-printshiv.js
vendored
Normal 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);
|
143
assets/vendor/html5shiv/readme.md
vendored
Normal 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
@ -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
@ -0,0 +1 @@
|
|||||||
|
build
|
11
assets/vendor/jquery/README.md
vendored
Normal 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
@ -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
@ -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
@ -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
@ -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 );
|
3
assets/vendor/jquery/jquery-migrate.min.js
vendored
Normal file
10337
assets/vendor/jquery/jquery.js
vendored
Normal file
4
assets/vendor/jquery/jquery.min.js
vendored
Normal file
1
assets/vendor/jquery/jquery.min.map
vendored
Normal file
7
assets/vendor/jquery/package.json
vendored
Normal 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
@ -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
@ -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
@ -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
@ -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"
|
||||||
|
]
|
||||||
|
}
|
423
assets/vendor/normalize-css/normalize.css
vendored
Normal 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
@ -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
@ -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
@ -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"
|
||||||
|
]
|
||||||
|
}
|
7
assets/vendor/qtip2/imagesloaded.pkg.min.js
vendored
Normal 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
|
623
assets/vendor/qtip2/jquery.qtip.css
vendored
Normal file
@ -0,0 +1,623 @@
|
|||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
max-width: 280px;
|
||||||
|
min-width: 50px;
|
||||||
|
|
||||||
|
font-size: 10.5px;
|
||||||
|
line-height: 12px;
|
||||||
|
|
||||||
|
direction: ltr;
|
||||||
|
|
||||||
|
box-shadow: none;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-content{
|
||||||
|
position: relative;
|
||||||
|
padding: 5px 9px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
text-align: left;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-titlebar{
|
||||||
|
position: relative;
|
||||||
|
padding: 5px 35px 5px 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
border-width: 0 0 1px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-titlebar + .qtip-content{ border-top-width: 0 !important; }
|
||||||
|
|
||||||
|
/* Default close button class */
|
||||||
|
.qtip-close{
|
||||||
|
position: absolute;
|
||||||
|
right: -9px; top: -9px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
outline: medium none;
|
||||||
|
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-titlebar .qtip-close{
|
||||||
|
right: 4px; top: 50%;
|
||||||
|
margin-top: -9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
* html .qtip-titlebar .qtip-close{ top: 16px; } /* IE fix */
|
||||||
|
|
||||||
|
.qtip-titlebar .ui-icon,
|
||||||
|
.qtip-icon .ui-icon{
|
||||||
|
display: block;
|
||||||
|
text-indent: -1000em;
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-icon, .qtip-icon .ui-icon{
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
border-radius: 3px;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-icon .ui-icon{
|
||||||
|
width: 18px;
|
||||||
|
height: 14px;
|
||||||
|
|
||||||
|
line-height: 14px;
|
||||||
|
text-align: center;
|
||||||
|
text-indent: 0;
|
||||||
|
font: normal bold 10px/13px Tahoma,sans-serif;
|
||||||
|
|
||||||
|
color: inherit;
|
||||||
|
background: transparent none no-repeat -100em -100em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
|
||||||
|
.qtip-focus{}
|
||||||
|
|
||||||
|
/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */
|
||||||
|
.qtip-hover{}
|
||||||
|
|
||||||
|
/* Default tooltip style */
|
||||||
|
.qtip-default{
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: #F1D031;
|
||||||
|
|
||||||
|
background-color: #FFFFA3;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-default .qtip-titlebar{
|
||||||
|
background-color: #FFEF93;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-default .qtip-icon{
|
||||||
|
border-color: #CCC;
|
||||||
|
background: #F1F1F1;
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-default .qtip-titlebar .qtip-close{
|
||||||
|
border-color: #AAA;
|
||||||
|
color: #111;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*! Light tooltip style */
|
||||||
|
.qtip-light{
|
||||||
|
background-color: white;
|
||||||
|
border-color: #E2E2E2;
|
||||||
|
color: #454545;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-light .qtip-titlebar{
|
||||||
|
background-color: #f1f1f1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! Dark tooltip style */
|
||||||
|
.qtip-dark{
|
||||||
|
background-color: #505050;
|
||||||
|
border-color: #303030;
|
||||||
|
color: #f3f3f3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-dark .qtip-titlebar{
|
||||||
|
background-color: #404040;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-dark .qtip-icon{
|
||||||
|
border-color: #444;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-dark .qtip-titlebar .ui-state-hover{
|
||||||
|
border-color: #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! Cream tooltip style */
|
||||||
|
.qtip-cream{
|
||||||
|
background-color: #FBF7AA;
|
||||||
|
border-color: #F9E98E;
|
||||||
|
color: #A27D35;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-cream .qtip-titlebar{
|
||||||
|
background-color: #F0DE7D;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-cream .qtip-close .qtip-icon{
|
||||||
|
background-position: -82px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! Red tooltip style */
|
||||||
|
.qtip-red{
|
||||||
|
background-color: #F78B83;
|
||||||
|
border-color: #D95252;
|
||||||
|
color: #912323;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-red .qtip-titlebar{
|
||||||
|
background-color: #F06D65;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-red .qtip-close .qtip-icon{
|
||||||
|
background-position: -102px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-red .qtip-icon{
|
||||||
|
border-color: #D95252;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-red .qtip-titlebar .ui-state-hover{
|
||||||
|
border-color: #D95252;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! Green tooltip style */
|
||||||
|
.qtip-green{
|
||||||
|
background-color: #CAED9E;
|
||||||
|
border-color: #90D93F;
|
||||||
|
color: #3F6219;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-green .qtip-titlebar{
|
||||||
|
background-color: #B0DE78;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-green .qtip-close .qtip-icon{
|
||||||
|
background-position: -42px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*! Blue tooltip style */
|
||||||
|
.qtip-blue{
|
||||||
|
background-color: #E5F6FE;
|
||||||
|
border-color: #ADD9ED;
|
||||||
|
color: #5E99BD;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-blue .qtip-titlebar{
|
||||||
|
background-color: #D0E9F5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-blue .qtip-close .qtip-icon{
|
||||||
|
background-position: -2px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.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);
|
||||||
|
box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
|
||||||
|
.qtip-rounded,
|
||||||
|
.qtip-tipsy,
|
||||||
|
.qtip-bootstrap{
|
||||||
|
-moz-border-radius: 5px;
|
||||||
|
-webkit-border-radius: 5px;
|
||||||
|
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;
|
||||||
|
-webkit-border-radius: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 0 0 3px #333;
|
||||||
|
-moz-box-shadow: 0 0 3px #333;
|
||||||
|
box-shadow: 0 0 3px #333;
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
border-width: 0;
|
||||||
|
|
||||||
|
background: #4A4A4A;
|
||||||
|
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));
|
||||||
|
background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||||
|
background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||||
|
background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||||
|
background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-youtube .qtip-titlebar{
|
||||||
|
background-color: #4A4A4A;
|
||||||
|
background-color: rgba(0,0,0,0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-youtube .qtip-content{
|
||||||
|
padding: .75em;
|
||||||
|
font: 12px arial,sans-serif;
|
||||||
|
|
||||||
|
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);";
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-youtube .qtip-icon{
|
||||||
|
border-color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-youtube .qtip-titlebar .ui-state-hover{
|
||||||
|
border-color: #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* jQuery TOOLS Tooltip style */
|
||||||
|
.qtip-jtools{
|
||||||
|
background: #232323;
|
||||||
|
background: rgba(0, 0, 0, 0.7);
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323));
|
||||||
|
background-image: -moz-linear-gradient(top, #717171, #232323);
|
||||||
|
background-image: -webkit-linear-gradient(top, #717171, #232323);
|
||||||
|
background-image: -ms-linear-gradient(top, #717171, #232323);
|
||||||
|
background-image: -o-linear-gradient(top, #717171, #232323);
|
||||||
|
|
||||||
|
border: 2px solid #ddd;
|
||||||
|
border: 2px solid rgba(241,241,241,1);
|
||||||
|
|
||||||
|
-moz-border-radius: 2px;
|
||||||
|
-webkit-border-radius: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
|
||||||
|
-webkit-box-shadow: 0 0 12px #333;
|
||||||
|
-moz-box-shadow: 0 0 12px #333;
|
||||||
|
box-shadow: 0 0 12px #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* IE Specific */
|
||||||
|
.qtip-jtools .qtip-titlebar{
|
||||||
|
background-color: transparent;
|
||||||
|
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";
|
||||||
|
}
|
||||||
|
.qtip-jtools .qtip-content{
|
||||||
|
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-jtools .qtip-titlebar,
|
||||||
|
.qtip-jtools .qtip-content{
|
||||||
|
background: transparent;
|
||||||
|
color: white;
|
||||||
|
border: 0 dashed transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-jtools .qtip-icon{
|
||||||
|
border-color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-jtools .qtip-titlebar .ui-state-hover{
|
||||||
|
border-color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Cluetip style */
|
||||||
|
.qtip-cluetip{
|
||||||
|
-webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
|
||||||
|
-moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
|
||||||
|
box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
|
||||||
|
|
||||||
|
background-color: #D9D9C2;
|
||||||
|
color: #111;
|
||||||
|
border: 0 dashed transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-cluetip .qtip-titlebar{
|
||||||
|
background-color: #87876A;
|
||||||
|
color: white;
|
||||||
|
border: 0 dashed transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-cluetip .qtip-icon{
|
||||||
|
border-color: #808064;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-cluetip .qtip-titlebar .ui-state-hover{
|
||||||
|
border-color: #696952;
|
||||||
|
color: #696952;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Tipsy style */
|
||||||
|
.qtip-tipsy{
|
||||||
|
background: black;
|
||||||
|
background: rgba(0, 0, 0, .87);
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
border: 0 solid transparent;
|
||||||
|
|
||||||
|
font-size: 11px;
|
||||||
|
font-family: 'Lucida Grande', sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 16px;
|
||||||
|
text-shadow: 0 1px black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-tipsy .qtip-titlebar{
|
||||||
|
padding: 6px 35px 0 10px;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-tipsy .qtip-content{
|
||||||
|
padding: 6px 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-tipsy .qtip-icon{
|
||||||
|
border-color: #222;
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-tipsy .qtip-titlebar .ui-state-hover{
|
||||||
|
border-color: #303030;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Tipped style */
|
||||||
|
.qtip-tipped{
|
||||||
|
border: 3px solid #959FA9;
|
||||||
|
|
||||||
|
-moz-border-radius: 3px;
|
||||||
|
-webkit-border-radius: 3px;
|
||||||
|
border-radius: 3px;
|
||||||
|
|
||||||
|
background-color: #F9F9F9;
|
||||||
|
color: #454545;
|
||||||
|
|
||||||
|
font-weight: normal;
|
||||||
|
font-family: serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-tipped .qtip-titlebar{
|
||||||
|
border-bottom-width: 0;
|
||||||
|
|
||||||
|
color: white;
|
||||||
|
background: #3A79B8;
|
||||||
|
background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D));
|
||||||
|
background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D);
|
||||||
|
background-image: -moz-linear-gradient(top, #3A79B8, #2E629D);
|
||||||
|
background-image: -ms-linear-gradient(top, #3A79B8, #2E629D);
|
||||||
|
background-image: -o-linear-gradient(top, #3A79B8, #2E629D);
|
||||||
|
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-tipped .qtip-icon{
|
||||||
|
border: 2px solid #285589;
|
||||||
|
background: #285589;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-tipped .qtip-icon .ui-icon{
|
||||||
|
background-color: #FBFBFB;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Twitter Bootstrap style.
|
||||||
|
*
|
||||||
|
* Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11.
|
||||||
|
* Does not work with IE 7.
|
||||||
|
*/
|
||||||
|
.qtip-bootstrap{
|
||||||
|
/** Taken from Bootstrap body */
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 20px;
|
||||||
|
color: #333333;
|
||||||
|
|
||||||
|
/** Taken from Bootstrap .popover */
|
||||||
|
padding: 1px;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||||
|
-webkit-border-radius: 6px;
|
||||||
|
-moz-border-radius: 6px;
|
||||||
|
border-radius: 6px;
|
||||||
|
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
-webkit-background-clip: padding-box;
|
||||||
|
-moz-background-clip: padding;
|
||||||
|
background-clip: padding-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-bootstrap .qtip-titlebar{
|
||||||
|
/** Taken from Bootstrap .popover-title */
|
||||||
|
padding: 8px 14px;
|
||||||
|
margin: 0;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: normal;
|
||||||
|
line-height: 18px;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
border-bottom: 1px solid #ebebeb;
|
||||||
|
-webkit-border-radius: 5px 5px 0 0;
|
||||||
|
-moz-border-radius: 5px 5px 0 0;
|
||||||
|
border-radius: 5px 5px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-bootstrap .qtip-titlebar .qtip-close{
|
||||||
|
/**
|
||||||
|
* Overrides qTip2:
|
||||||
|
* .qtip-titlebar .qtip-close{
|
||||||
|
* [...]
|
||||||
|
* right: 4px;
|
||||||
|
* top: 50%;
|
||||||
|
* [...]
|
||||||
|
* border-style: solid;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
right: 11px;
|
||||||
|
top: 45%;
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-bootstrap .qtip-content{
|
||||||
|
/** Taken from Bootstrap .popover-content */
|
||||||
|
padding: 9px 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-bootstrap .qtip-icon{
|
||||||
|
/**
|
||||||
|
* Overrides qTip2:
|
||||||
|
* .qtip-default .qtip-icon {
|
||||||
|
* border-color: #CCC;
|
||||||
|
* background: #F1F1F1;
|
||||||
|
* color: #777;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-bootstrap .qtip-icon .ui-icon{
|
||||||
|
/**
|
||||||
|
* Overrides qTip2:
|
||||||
|
* .qtip-icon .ui-icon{
|
||||||
|
* width: 18px;
|
||||||
|
* height: 14px;
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
width: auto;
|
||||||
|
height: auto;
|
||||||
|
|
||||||
|
/* Taken from Bootstrap .close */
|
||||||
|
float: right;
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 18px;
|
||||||
|
color: #000000;
|
||||||
|
text-shadow: 0 1px 0 #ffffff;
|
||||||
|
opacity: 0.2;
|
||||||
|
filter: alpha(opacity=20);
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip-bootstrap .qtip-icon .ui-icon:hover{
|
||||||
|
/* Taken from Bootstrap .close:hover */
|
||||||
|
color: #000000;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
opacity: 0.4;
|
||||||
|
filter: alpha(opacity=40);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* IE9 fix - removes all filters */
|
||||||
|
.qtip:not(.ie9haxors) div.qtip-content,
|
||||||
|
.qtip:not(.ie9haxors) div.qtip-titlebar{
|
||||||
|
filter: none;
|
||||||
|
-ms-filter: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.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 canvas{
|
||||||
|
position: absolute;
|
||||||
|
|
||||||
|
color: #123456;
|
||||||
|
background: transparent;
|
||||||
|
border: 0 dashed transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qtip .qtip-tip canvas{ top: 0; left: 0; }
|
||||||
|
|
||||||
|
.qtip .qtip-tip .qtip-vml{
|
||||||
|
behavior: url(#default#VML);
|
||||||
|
display: inline-block;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
#qtip-overlay{
|
||||||
|
position: fixed;
|
||||||
|
left: 0; top: 0;
|
||||||
|
width: 100%; height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Applied to modals with show.modal.blur set to true */
|
||||||
|
#qtip-overlay.blurs{ cursor: pointer; }
|
||||||
|
|
||||||
|
/* Change opacity of overlay here */
|
||||||
|
#qtip-overlay div{
|
||||||
|
position: absolute;
|
||||||
|
left: 0; top: 0;
|
||||||
|
width: 100%; height: 100%;
|
||||||
|
|
||||||
|
background-color: black;
|
||||||
|
|
||||||
|
opacity: 0.7;
|
||||||
|
filter:alpha(opacity=70);
|
||||||
|
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.qtipmodal-ie6fix{
|
||||||
|
position: absolute !important;
|
||||||
|
}
|
3433
assets/vendor/qtip2/jquery.qtip.js
vendored
Normal file
1
assets/vendor/qtip2/jquery.qtip.min.map
vendored
Normal file
14
assets/vendor/selectivizr/.bower.json
vendored
Normal 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"
|
||||||
|
}
|
29
assets/vendor/selectivizr/README.markdown
vendored
Normal 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
@ -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
@ -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);
|
19
bower.json
Normal 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": {
|
||||||
|
"jquery": "~1.11.0",
|
||||||
|
"html5shiv": "~3.7.0",
|
||||||
|
"selectivizr": "~1.0.2",
|
||||||
|
"qtip2": "~2.2.0",
|
||||||
|
"normalize-css": "~3.0.0",
|
||||||
|
"clipboard": "~1.4.3"
|
||||||
|
}
|
||||||
|
}
|