├── .github ├── CODEOWNERS ├── .DS_Store ├── workflows │ ├── dependabot.yml │ ├── cd.yaml │ └── jenkins-security-scan.yml └── dependabot.yml ├── .mvn ├── maven.config └── extensions.xml ├── docs └── images │ ├── colorpicker.png │ ├── multilevel.png │ ├── screenshot.jpg │ ├── nameparameter.png │ ├── script-security.png │ ├── demo-json-parameter.png │ ├── json-parameter-config.png │ ├── extended-choice-parameter-config.png │ └── hudson-extended-choice-parameter-plugin.png ├── src └── main │ ├── webapp │ ├── fonts │ │ ├── foundation-icons.eot │ │ ├── foundation-icons.ttf │ │ ├── foundation-icons.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── help-globalConfig.html │ ├── css │ │ ├── jquery.jsonview.css │ │ ├── general_foundicons.css │ │ ├── selectize.css │ │ ├── selectize.bootstrap2.css │ │ ├── foundation-icons.css │ │ ├── font-awesome4.css │ │ └── font-awesome3.css │ └── js │ │ └── jquery.jsonview.min.js │ ├── resources │ ├── com │ │ └── cwctravel │ │ │ └── hudson │ │ │ └── plugins │ │ │ └── extended_choice_parameter │ │ │ ├── ExtendedChoiceParameterDefinition │ │ │ ├── help-defaultPropertyFile.html │ │ │ ├── help.html │ │ │ ├── help-name.html │ │ │ ├── help-projectName.html │ │ │ ├── help-defaultValue.html │ │ │ ├── help-multiSelectDelimiter.html │ │ │ ├── help-propertyKey.html │ │ │ ├── textboxContent.jelly │ │ │ ├── help-value.html │ │ │ ├── help-propertyFile.html │ │ │ ├── selectContent.jelly │ │ │ ├── radioContent.jelly │ │ │ ├── checkboxContent.jelly │ │ │ ├── help-type.html │ │ │ ├── index.jelly │ │ │ ├── jsonContent.jelly │ │ │ ├── multiLevel.jelly │ │ │ └── config.jelly │ │ │ ├── Messages.properties │ │ │ ├── JSONEditorPageDecorator │ │ │ └── header.jelly │ │ │ └── ExtendedChoiceParameterValue │ │ │ └── value.jelly │ └── index.jelly │ └── java │ └── com │ └── cwctravel │ └── hudson │ └── plugins │ └── extended_choice_parameter │ ├── JSONEditorPageDecorator.java │ ├── ParameterDefinitionInfo.java │ └── ExtendedChoiceParameterValue.java ├── .gitignore ├── Jenkinsfile ├── LICENSE.md ├── pom.xml ├── README.md └── CHANGELOG.adoc /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @jenkinsci/extended-choice-parameter-plugin-developers 2 | -------------------------------------------------------------------------------- /.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Pconsume-incrementals 2 | -Pmight-produce-incrementals 3 | -Dchangelist.format=%d.v%s 4 | -------------------------------------------------------------------------------- /.github/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/.github/.DS_Store -------------------------------------------------------------------------------- /docs/images/colorpicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/colorpicker.png -------------------------------------------------------------------------------- /docs/images/multilevel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/multilevel.png -------------------------------------------------------------------------------- /docs/images/screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/screenshot.jpg -------------------------------------------------------------------------------- /docs/images/nameparameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/nameparameter.png -------------------------------------------------------------------------------- /docs/images/script-security.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/script-security.png -------------------------------------------------------------------------------- /docs/images/demo-json-parameter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/demo-json-parameter.png -------------------------------------------------------------------------------- /docs/images/json-parameter-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/json-parameter-config.png -------------------------------------------------------------------------------- /src/main/webapp/fonts/foundation-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/src/main/webapp/fonts/foundation-icons.eot -------------------------------------------------------------------------------- /src/main/webapp/fonts/foundation-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/src/main/webapp/fonts/foundation-icons.ttf -------------------------------------------------------------------------------- /src/main/webapp/fonts/foundation-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/src/main/webapp/fonts/foundation-icons.woff -------------------------------------------------------------------------------- /docs/images/extended-choice-parameter-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/extended-choice-parameter-config.png -------------------------------------------------------------------------------- /docs/images/hudson-extended-choice-parameter-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/docs/images/hudson-extended-choice-parameter-plugin.png -------------------------------------------------------------------------------- /src/main/webapp/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/src/main/webapp/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/webapp/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/src/main/webapp/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/webapp/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/extended-choice-parameter-plugin/HEAD/src/main/webapp/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | 3 | # mvn hpi:run 4 | work 5 | 6 | # IntelliJ IDEA project files 7 | *.iml 8 | *.iws 9 | *.ipr 10 | .idea 11 | 12 | # Eclipse project files 13 | .settings 14 | .classpath 15 | .project 16 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-defaultPropertyFile.html: -------------------------------------------------------------------------------- 1 |
2 | Absolute path (specified without using environment variables). 3 |
4 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | This parameter adds various types of choice fields to the Pipeline Input Step. 4 |

5 |
-------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | /* 2 | See the documentation for more options: 3 | https://github.com/jenkins-infra/pipeline-library/ 4 | */ 5 | buildPlugin( 6 | useContainerAgent: true, 7 | configurations: [ 8 | [platform: 'linux', jdk: 21], 9 | [platform: 'windows', jdk: 17] 10 | ]) 11 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-name.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
8 | The name of the parameter. 9 |
-------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-projectName.html: -------------------------------------------------------------------------------- 1 |
2 | If specified, this adds a currentProject entry to the groovy script context. The entry's 3 | value is set to the specified Jenkins project. 4 |
-------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-defaultValue.html: -------------------------------------------------------------------------------- 1 |
2 | Initial selection of the single-select or mult-select box. 3 |

In case of the multi-select box, default value can be a comma separated string. 4 |
5 | -------------------------------------------------------------------------------- /src/main/webapp/help-globalConfig.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | This HTML fragment will be injected into the configuration screen 4 | when the user clicks the 'help' icon. See global.jelly for how the 5 | form decides which page to load. 6 | You can have any HTML fragment here. 7 |

8 |
9 | -------------------------------------------------------------------------------- /src/main/java/com/cwctravel/hudson/plugins/extended_choice_parameter/JSONEditorPageDecorator.java: -------------------------------------------------------------------------------- 1 | package com.cwctravel.hudson.plugins.extended_choice_parameter; 2 | 3 | import hudson.Extension; 4 | import hudson.model.PageDecorator; 5 | 6 | @Extension 7 | public class JSONEditorPageDecorator extends PageDecorator { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /.github/workflows/dependabot.yml: -------------------------------------------------------------------------------- 1 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates 2 | 3 | version: 2 4 | updates: 5 | - package-ecosystem: maven 6 | directory: / 7 | schedule: 8 | interval: monthly 9 | - package-ecosystem: github-actions 10 | directory: / 11 | schedule: 12 | interval: monthly 13 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates 2 | --- 3 | version: 2 4 | updates: 5 | - package-ecosystem: maven 6 | directory: / 7 | schedule: 8 | interval: weekly 9 | - package-ecosystem: github-actions 10 | directory: / 11 | schedule: 12 | interval: weekly 13 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-multiSelectDelimiter.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |
8 |

Inserts this value between selections when the parameter is a multi-select.

9 |

The default when empty is ','

10 |
-------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-propertyKey.html: -------------------------------------------------------------------------------- 1 |
2 | The property of the property file to use. 3 |

4 | For example, if the property file was the following: 5 |
6 | prop1=a,b,c,d,e
7 | prop2=1,2,3,4 8 |
9 | Then you could specify the property as either prop1 or prop2. 10 |
-------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/textboxContent.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/resources/index.jelly: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 13 |
14 | Adds extended functionality to Choice parameter 15 |
-------------------------------------------------------------------------------- /.mvn/extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | io.jenkins.tools.incrementals 4 | git-changelist-maven-extension 5 | 1.8 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-value.html: -------------------------------------------------------------------------------- 1 |
2 | Comma separated list of values for the single select or multi-select box. 3 |

This field can be left blank if the comma separated values need to be 4 | picked up from a properties file (set via 'Property File' and 'Property Key'). 5 |

6 | This value has different meaning for multi-level select -- see the parameter type help for more 7 | info. 8 |
9 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/Messages.properties: -------------------------------------------------------------------------------- 1 | ExtendedChoiceParameterDefinition.DisplayName=Extended Choice Parameter 2 | ExtendedChoiceParameterDefinition.PropertyFileDoesntExist=%s doesn't seem to exist. 3 | ExtendedChoiceParameterDefinition.PropertyFileExistsButProvidedKeyIsInvalid=%s exists, but the provided key \"%s\" doesn't exist in this property file. 4 | ExtendedChoiceParameterDefinition.PropertyFileExistsButNoProvidedKey=%s exists, but you have to provide a property key as well. 5 | -------------------------------------------------------------------------------- /.github/workflows/cd.yaml: -------------------------------------------------------------------------------- 1 | # Note: additional setup is required, see https://www.jenkins.io/redirect/continuous-delivery-of-plugins 2 | 3 | name: cd 4 | on: 5 | workflow_dispatch: 6 | check_run: 7 | types: 8 | - completed 9 | 10 | permissions: 11 | checks: read 12 | contents: write 13 | 14 | jobs: 15 | maven-cd: 16 | uses: jenkins-infra/github-reusable-workflows/.github/workflows/maven-cd.yml@v1 17 | secrets: 18 | MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} 19 | MAVEN_TOKEN: ${{ secrets.MAVEN_TOKEN }} 20 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-propertyFile.html: -------------------------------------------------------------------------------- 1 |
2 | The properties file 3 | is a collection of key,value pairs of the form key=value1,value2,... 4 |

5 | Properties may reference other properties. For example: 6 |
7 | prop1=a,b,c,d,e
8 | prop2=${prop1},f,g,h 9 |
10 | The properties file can be placed anywhere on the file-system that Jenkins can access. 11 |

12 | This property file has different meaning for multi-level select -- see the parameter type help for 13 | more info. 14 |
15 | -------------------------------------------------------------------------------- /.github/workflows/jenkins-security-scan.yml: -------------------------------------------------------------------------------- 1 | name: Jenkins Security Scan 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | types: [ opened, synchronize, reopened ] 9 | workflow_dispatch: 10 | 11 | permissions: 12 | security-events: write 13 | contents: read 14 | actions: read 15 | 16 | jobs: 17 | security-scan: 18 | uses: jenkins-infra/jenkins-security-scan/.github/workflows/jenkins-security-scan.yaml@v2 19 | with: 20 | java-cache: 'maven' # Optionally enable use of a build dependency cache. Specify 'maven' or 'gradle' as appropriate. 21 | # java-version: 21 # Optionally specify what version of Java to set up for the build, or remove to use a recent default. 22 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright 2022 4 | 5 | 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: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | 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. -------------------------------------------------------------------------------- /src/main/java/com/cwctravel/hudson/plugins/extended_choice_parameter/ParameterDefinitionInfo.java: -------------------------------------------------------------------------------- 1 | package com.cwctravel.hudson.plugins.extended_choice_parameter; 2 | 3 | import java.util.Map; 4 | 5 | public class ParameterDefinitionInfo { 6 | private String effectiveValue; 7 | private Map defaultValueMap; 8 | private Map descriptionPropertyValueMap; 9 | 10 | public String getEffectiveValue() { 11 | return effectiveValue; 12 | } 13 | 14 | public void setEffectiveValue(String effectiveValue) { 15 | this.effectiveValue = effectiveValue; 16 | } 17 | 18 | public Map getDefaultValueMap() { 19 | return defaultValueMap; 20 | } 21 | 22 | public void setDefaultValueMap(Map defaultValueMap) { 23 | this.defaultValueMap = defaultValueMap; 24 | } 25 | 26 | public Map getDescriptionPropertyValueMap() { 27 | return descriptionPropertyValueMap; 28 | } 29 | 30 | public void setDescriptionPropertyValueMap(Map descriptionPropertyValueMap) { 31 | this.descriptionPropertyValueMap = descriptionPropertyValueMap; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/selectContent.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/main/webapp/css/jquery.jsonview.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | .jsonview { 3 | font-family: monospace; 4 | font-size: 1.1em; 5 | white-space: pre-wrap; } 6 | .jsonview .prop { 7 | font-weight: bold; } 8 | .jsonview .null { 9 | color: red; } 10 | .jsonview .bool { 11 | color: blue; } 12 | .jsonview .num { 13 | color: blue; } 14 | .jsonview .string { 15 | color: green; 16 | white-space: pre-wrap; } 17 | .jsonview .string.multiline { 18 | display: inline-block; 19 | vertical-align: text-top; } 20 | .jsonview .collapser { 21 | position: absolute; 22 | left: -1em; 23 | cursor: pointer; } 24 | .jsonview .collapsible { 25 | transition: width 1.2s, height 1.2s; } 26 | .jsonview .collapsible.collapsed { 27 | height: .8em; 28 | width: 1em; 29 | display: inline-block; 30 | overflow: hidden; 31 | margin: 0; } 32 | .jsonview .collapsible.collapsed:before { 33 | content: "…"; 34 | width: 1em; 35 | margin-left: .2em; } 36 | .jsonview .collapser.collapsed { 37 | transform: rotate(0deg); } 38 | .jsonview .q { 39 | display: inline-block; 40 | width: 0; 41 | color: transparent; } 42 | .jsonview li { 43 | position: relative; } 44 | .jsonview ul { 45 | list-style: none; 46 | margin: 0 0 0 2em; 47 | padding: 0; } 48 | .jsonview h1 { 49 | font-size: 1.2em; } 50 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/JSONEditorPageDecorator/header.jelly: -------------------------------------------------------------------------------- 1 | 2 | 4 | 16 | 18 | 20 | 22 | 23 | 24 | 26 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterValue/value.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 20 | 21 | 23 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | 35 |
36 | 37 | ${it.value} 38 | 39 |
40 |
41 |
42 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/radioContent.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 28 | 29 | 30 | 31 |
20 | 22 | 24 | 27 |
32 |
33 | 59 |
60 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/checkboxContent.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 28 | 29 | 30 | 31 |
20 | 22 | 24 | 27 |
32 |
33 | 59 |
-------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/help-type.html: -------------------------------------------------------------------------------- 1 |
2 | The type of parameter: 3 |
    4 |
  • Single Select: user chooses a single selection from a drop down menu, populated by either 5 | explicit values (see Value field below) or a property file (see Property File and Property Key 6 | fields below)

  • 7 |
  • Multi Select: a user can choose multiple selections from a multi-line box, populated by 8 | either explicit values (see Value field below) or a property file (see Property File and 9 | Property Key fields below)

  • 10 |
  • Check Boxes: user can check off zero or more check boxes, labeled by either explicit values 11 | (see Value field below) or a property file (see Property File and Property Key fields 12 | below)

  • 13 |
  • Multi-Level Single Select: user chooses a selection from a drop down, and then a another 14 | drop down appears with selections that depend on the first value, and upon second selection a 15 | third drop down may appear depending on the first two selections, and so on.

    16 | The property file is a tab delimited file, with levels defined in columns and choices defined 17 | in rows. For example, to have a 2 level selection where you first select a country and then a 18 | city, you could specify a file such as the following:

    19 |
    20 | Country	City
    21 | United States	San Francisco
    22 | United States	Chicago
    23 | Mexico	Mexico City
    24 | Mexico	Cancun
    25 |             
    26 | This would result in a first drop down with the options "Select a country...", "United 27 | States", and "Mexico" (the initial selection is "Select a country...", which serves as a label 28 | for the drop down). After the user selects a country, a "City" drop down would appear. If 29 | United States was chosen first, then San Francisco and Chicago would be options, but if Mexico 30 | was selected then instead Mexico City and Cancun would be options. 31 |

    32 | The columns that should represent levels must be specified in the value field. For example 33 | "Country,City" could be valid values. 34 |

    35 | Note that default values are not supported for multi-level selects.

    36 |
  • 37 |
  • Multi-Level Multi Select: same as single select, but after all levels are chosen, a button 38 | appears to "Select another..." and an additional multi-level selection is presented. 39 |
40 |
41 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/index.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | You have unapproved groovy scripts that need approval before they can be executed. 12 | Go to In-Process Script Approval page to approve 13 | your scripts. 14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 |
26 |
27 |
28 | 29 | 30 |
31 | 32 | 33 | 36 | 37 | 38 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/jsonContent.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 |
 
11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 68 | 69 |
-------------------------------------------------------------------------------- /src/main/java/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterValue.java: -------------------------------------------------------------------------------- 1 | /* 2 | *Copyright (c) 2013 Costco, Vimil Saju 3 | *See the file license.txt for copying permission. 4 | */ 5 | 6 | package com.cwctravel.hudson.plugins.extended_choice_parameter; 7 | 8 | import hudson.FilePath; 9 | import hudson.model.AbstractBuild; 10 | import hudson.model.ParameterDefinition; 11 | import hudson.model.ParametersDefinitionProperty; 12 | import hudson.model.StringParameterValue; 13 | import hudson.util.VariableResolver; 14 | import java.io.File; 15 | import java.io.IOException; 16 | import java.util.logging.Level; 17 | import java.util.logging.Logger; 18 | import org.apache.commons.io.FileUtils; 19 | import org.kohsuke.stapler.DataBoundConstructor; 20 | 21 | public class ExtendedChoiceParameterValue extends StringParameterValue { 22 | private static final long serialVersionUID = 7993744779892775177L; 23 | 24 | private static final Logger LOGGER = 25 | Logger.getLogger(ExtendedChoiceParameterValue.class.getName()); 26 | 27 | @DataBoundConstructor 28 | public ExtendedChoiceParameterValue(String name, String value) { 29 | super(name, value); 30 | } 31 | 32 | @Override 33 | public VariableResolver createVariableResolver(final AbstractBuild build) { 34 | return new VariableResolver() { 35 | public String resolve(String name) { 36 | String result = null; 37 | if (ExtendedChoiceParameterValue.this.getName().equals(name)) { 38 | result = value; 39 | if (build != null) { 40 | ParametersDefinitionProperty parametersDefinitionProperty = 41 | build.getProject().getProperty(ParametersDefinitionProperty.class); 42 | if (parametersDefinitionProperty != null) { 43 | ParameterDefinition parameterDefinition = 44 | parametersDefinitionProperty.getParameterDefinition(name); 45 | if (parameterDefinition instanceof ExtendedChoiceParameterDefinition) { 46 | ExtendedChoiceParameterDefinition extendedChoiceParameterDefinition = 47 | (ExtendedChoiceParameterDefinition) parameterDefinition; 48 | if (ExtendedChoiceParameterDefinition.PARAMETER_TYPE_JSON.equals( 49 | extendedChoiceParameterDefinition.getType()) 50 | && extendedChoiceParameterDefinition.isSaveJSONParameterToFile()) { 51 | File jsonParametersDir = new File(build.getRootDir(), "parameters"); 52 | if (!jsonParametersDir.mkdirs()) { 53 | LOGGER.log(Level.INFO, "mkdirs failed"); 54 | } 55 | try { 56 | String jsonFileName = getName() + ".json"; 57 | File jsonParameterFile = new File(jsonParametersDir, jsonFileName); 58 | FileUtils.writeStringToFile(jsonParameterFile, value); 59 | 60 | FilePath workspace = build.getWorkspace(); 61 | if (workspace != null) { 62 | FilePath parametersWorkspaceDir = workspace.child("parameters"); 63 | FilePath parameterWorkspaceFile = parametersWorkspaceDir.child(jsonFileName); 64 | parameterWorkspaceFile.write(value, "UTF-8"); 65 | 66 | result = parameterWorkspaceFile.getRemote(); 67 | } else { 68 | result = jsonParameterFile.getAbsolutePath(); 69 | } 70 | } catch (IOException | InterruptedException e) { 71 | LOGGER.log(Level.SEVERE, e.getMessage(), e); 72 | } 73 | } 74 | } 75 | } 76 | } 77 | } 78 | return result; 79 | } 80 | }; 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/webapp/js/jquery.jsonview.min.js: -------------------------------------------------------------------------------- 1 | !function(e){var n,t,l,r;return l=function(){function e(e){null==e&&(e={}),this.options=e}return e.prototype.htmlEncode=function(e){return null!==e?e.toString().replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},e.prototype.jsString=function(e){return e=JSON.stringify(e).slice(1,-1),this.htmlEncode(e)},e.prototype.decorateWithSpan=function(e,n){return''+this.htmlEncode(e)+""},e.prototype.valueToHTML=function(e,n){var t;return null==n&&(n=0),t=Object.prototype.toString.call(e).match(/\s(.+)]/)[1].toLowerCase(),this[""+t+"ToHTML"].call(this,e,n)},e.prototype.nullToHTML=function(){return this.decorateWithSpan("null","null")},e.prototype.numberToHTML=function(e){return this.decorateWithSpan(e,"num")},e.prototype.stringToHTML=function(e){var n,t;return/^(http|https|file):\/\/[^\s]+$/i.test(e)?'"'+this.jsString(e)+'"':(n="",e=this.jsString(e),this.options.nl2br&&(t=/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g,t.test(e)&&(n=" multiline",e=(e+"").replace(t,"$1
"))),'"'+e+'"')},e.prototype.booleanToHTML=function(e){return this.decorateWithSpan(e,"bool")},e.prototype.arrayToHTML=function(e,n){var t,l,r,o,s,i,a,p;for(null==n&&(n=0),l=!1,s="",o=e.length,r=a=0,p=e.length;p>a;r=++a)i=e[r],l=!0,s+="
  • "+this.valueToHTML(i,n+1),o>1&&(s+=","),s+="
  • ",o--;return l?(t=0===n?"":" collapsible",'[
      '+s+"
    ]"):"[ ]"},e.prototype.objectToHTML=function(e,n){var t,l,r,o,s,i;null==n&&(n=0),l=!1,o="",r=0;for(s in e)r++;for(s in e)i=e[s],l=!0,o+='
  • "'+this.jsString(s)+'": '+this.valueToHTML(i,n+1),r>1&&(o+=","),o+="
  • ",r--;return l?(t=0===n?"":" collapsible",'{
      '+o+"
    }"):"{ }"},e.prototype.jsonToHTML=function(e){return'
    '+this.valueToHTML(e)+"
    "},e}(),"undefined"!=typeof module&&null!==module&&(module.exports=l),t=function(){function e(){}return e.bindEvent=function(e,n){var t;return t=document.createElement("div"),t.className="collapser",t.innerHTML=n.collapsed?"+":"-",t.addEventListener("click",function(e){return function(t){return e.toggle(t.target,n)}}(this)),e.insertBefore(t,e.firstChild),n.collapsed?this.collapse(t):void 0},e.expand=function(e){var n,t;return t=this.collapseTarget(e),""!==t.style.display?(n=t.parentNode.getElementsByClassName("ellipsis")[0],t.parentNode.removeChild(n),t.style.display="",e.innerHTML="-"):void 0},e.collapse=function(e){var n,t;return t=this.collapseTarget(e),"none"!==t.style.display?(t.style.display="none",n=document.createElement("span"),n.className="ellipsis",n.innerHTML=" … ",t.parentNode.insertBefore(n,t),e.innerHTML="+"):void 0},e.toggle=function(e,n){var t,l,r,o,s,i;if(null==n&&(n={}),r=this.collapseTarget(e),t="none"===r.style.display?"expand":"collapse",n.recursive_collapser){for(l=e.parentNode.getElementsByClassName("collapser"),i=[],o=0,s=l.length;s>o;o++)e=l[o],i.push(this[t](e));return i}return this[t](e)},e.collapseTarget=function(e){var n,t;return t=e.parentNode.getElementsByClassName("collapsible"),t.length?n=t[0]:void 0},e}(),n=e,r={collapse:function(e){return"-"===e.innerHTML?t.collapse(e):void 0},expand:function(e){return"+"===e.innerHTML?t.expand(e):void 0},toggle:function(e){return t.toggle(e)}},n.fn.JSONView=function(){var e,o,s,i,a,p,c;return e=arguments,null!=r[e[0]]?(a=e[0],this.each(function(){var t,l;return t=n(this),null!=e[1]?(l=e[1],t.find(".jsonview .collapsible.level"+l).siblings(".collapser").each(function(){return r[a](this)})):t.find(".jsonview > ul > li .collapsible").siblings(".collapser").each(function(){return r[a](this)})})):(i=e[0],p=e[1]||{},o={collapsed:!1,nl2br:!1,recursive_collapser:!1},p=n.extend(o,p),s=new l({nl2br:p.nl2br}),"[object String]"===Object.prototype.toString.call(i)&&(i=JSON.parse(i)),c=s.jsonToHTML(i),this.each(function(){var e,l,r,o,s,i;for(e=n(this),e.html(c),r=e[0].getElementsByClassName("collapsible"),i=[],o=0,s=r.length;s>o;o++)l=r[o],i.push("LI"===l.parentNode.nodeName?t.bindEvent(l.parentNode,p):void 0);return i}))}}(jQuery); -------------------------------------------------------------------------------- /src/main/webapp/css/general_foundicons.css: -------------------------------------------------------------------------------- 1 | /* font-face */ 2 | @font-face { 3 | font-family: "GeneralFoundicons"; 4 | src: url("../fonts/general_foundicons.eot"); 5 | src: url("../fonts/general_foundicons.eot?#iefix") format("embedded-opentype"), url("../fonts/general_foundicons.woff") format("woff"), url("../fonts/general_foundicons.ttf") format("truetype"), url("../fonts/general_foundicons.svg#GeneralFoundicons") format("svg"); 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* global foundicon styles */ 11 | [class*="foundicon-"] { 12 | display: inline; 13 | width: auto; 14 | height: auto; 15 | line-height: inherit; 16 | vertical-align: baseline; 17 | background-image: none; 18 | background-position: 0 0; 19 | background-repeat: repeat; 20 | } 21 | 22 | [class*="general foundicon-"]:before { 23 | font-family: "GeneralFoundicons"; 24 | font-weight: normal; 25 | font-style: normal; 26 | text-decoration: inherit; 27 | } 28 | 29 | /* icons */ 30 | .foundicon-settings:before { 31 | content: "\f000"; 32 | } 33 | 34 | .foundicon-heart:before { 35 | content: "\f001"; 36 | } 37 | 38 | .foundicon-star:before { 39 | content: "\f002"; 40 | } 41 | 42 | .foundicon-plus:before { 43 | content: "\f003"; 44 | } 45 | 46 | .foundicon-minus:before { 47 | content: "\f004"; 48 | } 49 | 50 | .foundicon-checkmark:before { 51 | content: "\f005"; 52 | } 53 | 54 | .foundicon-remove:before { 55 | content: "\f006"; 56 | } 57 | 58 | .foundicon-mail:before { 59 | content: "\f007"; 60 | } 61 | 62 | .foundicon-calendar:before { 63 | content: "\f008"; 64 | } 65 | 66 | .foundicon-page:before { 67 | content: "\f009"; 68 | } 69 | 70 | .foundicon-tools:before { 71 | content: "\f00a"; 72 | } 73 | 74 | .foundicon-globe:before { 75 | content: "\f00b"; 76 | } 77 | 78 | .foundicon-home:before { 79 | content: "\f00c"; 80 | } 81 | 82 | .foundicon-quote:before { 83 | content: "\f00d"; 84 | } 85 | 86 | .foundicon-people:before { 87 | content: "\f00e"; 88 | } 89 | 90 | .foundicon-monitor:before { 91 | content: "\f00f"; 92 | } 93 | 94 | .foundicon-laptop:before { 95 | content: "\f010"; 96 | } 97 | 98 | .foundicon-phone:before { 99 | content: "\f011"; 100 | } 101 | 102 | .foundicon-cloud:before { 103 | content: "\f012"; 104 | } 105 | 106 | .foundicon-error:before { 107 | content: "\f013"; 108 | } 109 | 110 | .foundicon-right-arrow:before { 111 | content: "\f014"; 112 | } 113 | 114 | .foundicon-left-arrow:before { 115 | content: "\f015"; 116 | } 117 | 118 | .foundicon-up-arrow:before { 119 | content: "\f016"; 120 | } 121 | 122 | .foundicon-down-arrow:before { 123 | content: "\f017"; 124 | } 125 | 126 | .foundicon-trash:before { 127 | content: "\f018"; 128 | } 129 | 130 | .foundicon-add-doc:before { 131 | content: "\f019"; 132 | } 133 | 134 | .foundicon-edit:before { 135 | content: "\f01a"; 136 | } 137 | 138 | .foundicon-lock:before { 139 | content: "\f01b"; 140 | } 141 | 142 | .foundicon-unlock:before { 143 | content: "\f01c"; 144 | } 145 | 146 | .foundicon-refresh:before { 147 | content: "\f01d"; 148 | } 149 | 150 | .foundicon-paper-clip:before { 151 | content: "\f01e"; 152 | } 153 | 154 | .foundicon-video:before { 155 | content: "\f01f"; 156 | } 157 | 158 | .foundicon-photo:before { 159 | content: "\f020"; 160 | } 161 | 162 | .foundicon-graph:before { 163 | content: "\f021"; 164 | } 165 | 166 | .foundicon-idea:before { 167 | content: "\f022"; 168 | } 169 | 170 | .foundicon-mic:before { 171 | content: "\f023"; 172 | } 173 | 174 | .foundicon-cart:before { 175 | content: "\f024"; 176 | } 177 | 178 | .foundicon-address-book:before { 179 | content: "\f025"; 180 | } 181 | 182 | .foundicon-compass:before { 183 | content: "\f026"; 184 | } 185 | 186 | .foundicon-flag:before { 187 | content: "\f027"; 188 | } 189 | 190 | .foundicon-location:before { 191 | content: "\f028"; 192 | } 193 | 194 | .foundicon-clock:before { 195 | content: "\f029"; 196 | } 197 | 198 | .foundicon-folder:before { 199 | content: "\f02a"; 200 | } 201 | 202 | .foundicon-inbox:before { 203 | content: "\f02b"; 204 | } 205 | 206 | .foundicon-website:before { 207 | content: "\f02c"; 208 | } 209 | 210 | .foundicon-smiley:before { 211 | content: "\f02d"; 212 | } 213 | 214 | .foundicon-search:before { 215 | content: "\f02e"; 216 | } 217 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 4.0.0 6 | 7 | org.jenkins-ci.plugins 8 | plugin 9 | 5.9 10 | 11 | 12 | 13 | extended-choice-parameter 14 | ${changelist} 15 | hpi 16 | 17 | Extended Choice Parameter Plugin 18 | https://github.com/${gitHubRepo} 19 | 20 | 21 | 22 | MIT License 23 | https://opensource.org/licenses/MIT 24 | 25 | 26 | 27 | 28 | 29 | vimil 30 | Vimil Saju 31 | 32 | 33 | chonton 34 | chas honton 35 | 36 | 37 | 38 | 39 | scm:git:https://github.com/${gitHubRepo} 40 | scm:git:https://github.com/${gitHubRepo} 41 | ${scmTag} 42 | https://github.com/${gitHubRepo} 43 | 44 | 45 | 46 | 999999-SNAPSHOT 47 | 48 | 49 | 2.479 50 | ${jenkins.baseline}.1 51 | jenkinsci/${project.artifactId}-plugin 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | io.jenkins.tools.bom 60 | bom-${jenkins.baseline}.x 61 | 3850.vb_c5319efa_e29 62 | pom 63 | import 64 | 65 | 66 | 67 | 68 | 69 | 70 | com.opencsv 71 | opencsv 72 | 5.7.1 73 | 74 | 75 | 76 | org.apache.commons 77 | commons-lang3 78 | 79 | 80 | 81 | org.apache.commons 82 | commons-text 83 | 84 | 85 | 86 | 87 | io.jenkins.plugins 88 | commons-lang3-api 89 | 90 | 91 | io.jenkins.plugins 92 | commons-text-api 93 | 94 | 95 | 96 | org.jenkins-ci.plugins 97 | script-security 98 | 99 | 100 | 101 | org.jenkins-ci.plugins 102 | pipeline-input-step 103 | test 104 | 105 | 106 | org.jenkins-ci.plugins.workflow 107 | workflow-cps 108 | test 109 | 110 | 111 | org.jenkins-ci.plugins.workflow 112 | workflow-job 113 | test 114 | 115 | 116 | 117 | 118 | 119 | 120 | repo.jenkins-ci.org 121 | https://repo.jenkins-ci.org/public/ 122 | 123 | 124 | 125 | 126 | 127 | repo.jenkins-ci.org 128 | https://repo.jenkins-ci.org/public/ 129 | 130 | 131 | 132 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/multiLevel.jelly: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 |
      156 | 170 |
    171 | 173 |

    174 | 175 |

    176 |
    177 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Extended Choice Parameter Plugin 2 | 3 | [![Build](https://ci.jenkins.io/job/Plugins/job/extended-choice-parameter-plugin/job/main/badge/icon)](https://ci.jenkins.io/job/Plugins/job/extended-choice-parameter-plugin/job/main)
    4 | [![Contributors](https://img.shields.io/github/contributors/jenkinsci/extended-choice-parameter-plugin.svg?color=blue)](https://github.com/jenkinsci/extended-choice-parameter-plugin/graphs/contributors)
    5 | [![Jenkins Plugin Installs](https://img.shields.io/jenkins/plugin/i/extended-choice-parameter.svg?color=blue&label=installations)](https://plugins.jenkins.io/extended-choice-parameter)
    6 | [![Plugin](https://img.shields.io/jenkins/plugin/v/extended-choice-parameter.svg)](https://plugins.jenkins.io/extended-choice-parameter)
    7 | 8 | # END OF LIFE 9 | Given the age of this plugin and the number of security issues with the code base, no further development is expected. There are 10 | many excellent alternatives that may suit your purpose. 11 | 12 | # ALTERNATIVES 13 | There are other parameter plugins to use for user inputs. 14 | - [Json Editor Parameter](https://plugins.jenkins.io/json-editor-parameter/) 15 | - [Active Choices](https://plugins.jenkins.io/uno-choice/) 16 | - [Extensible Choice](https://plugins.jenkins.io/extensible-choice-parameter/) 17 | - [Editable Choice](https://plugins.jenkins.io/editable-choice/) 18 | 19 | ## File Inputs and Outputs 20 | Any file I/O will be removed in a future version. Use another step to read or write files: 21 | - [Pipeline Utility Steps](https://github.com/jenkinsci/pipeline-utility-steps-plugin/blob/master/docs/STEPS.md) 22 | 23 | ## Groovy Scripting 24 | Any Groovy Scripting will be removed in a future version. Use 25 | [pipeline](https://plugins.jenkins.io/ui/search?sort=relevance&categories=&labels=&view=Tiles&page=1&query=pipeline) 26 | or another plugin to execute groovy: 27 | - [Groovy](https://plugins.jenkins.io/groovy/) 28 | 29 | ## Introduction 30 | 31 | The `extended-choice-parameter-plugin` creates various types of choice fields for use with the 32 | [Input Step](https://www.jenkins.io/doc/pipeline/steps/pipeline-input-step) plugin. 33 | 34 | This is accomplished using 35 | [json-editor](https://github.com/jdorn/json-editorhttps://github.com/jdorn/json-editor), which 36 | generates an HTML form from a JSON Schema. The json editor requires two inputs: the html 37 | `id` of the section holding the form and `options` which drive the form creation. 38 | 39 | ## Help Wanted 40 | 41 | Additional documentation is desired. Please create pull requests with better documentation of the 42 | params. *Thanks!* 43 | 44 | ## Params 45 | 46 | ### name 47 | 48 | The name of the parameter. 49 | 50 | ### type 51 | 52 | The type of parameter 53 | 54 | - Single Select: user chooses a single selection from a drop-down menu, populated by either explicit 55 | values (see Value field below) or a property file (see Property File and Property Key fields 56 | below) 57 | - Multi Select: a user can choose multiple selections from a multi-line box, populated by either 58 | explicit values (see Value field below) or a property file (see Property File and Property Key 59 | fields below) 60 | - Check Boxes: user can check off zero or more check boxes, labeled by either explicit values (see 61 | Value field below) or a property file (see Property File and Property Key fields below) 62 | - Multi-Level Single Select: user chooses a selection from a drop-down, and then a another drop down 63 | appears with selections that depend on the first value, and upon second selection a third drop 64 | down may appear depending on the first two selections, and so on. 65 | - Multi-Level Multi Select: same as single select, but after all levels are chosen, a button appears 66 | to "Select another..." and an additional multi-level selection is presented. 67 | 68 | ### value 69 | 70 | Comma separated list of values for the single select or multi-select box. 71 | This field can be left blank if the comma separated values need to be picked up from a properties 72 | file (set via 'Property File' and 'Property Key'). 73 | 74 | ### propertyFile 75 | 76 | The properties file is a collection of key,value pairs of the form key=value1,value2,... 77 | 78 | ### propertyKey 79 | 80 | The property of the property file to use. 81 | 82 | For example, if the property file was the following: 83 |
     84 | prop1=a,b,c,d,e
     85 | prop2=1,2,3,4
     86 | 
    87 | Then you could specify the property as either `prop1` or `prop2`. 88 | 89 | ### defaultValue 90 | 91 | Initial selection of the single-select or mult-select box. 92 | 93 | In case of the multi-select box, default value can be a comma separated string. 94 | 95 | ### defaultPropertyFile 96 | 97 | Absolute path (specified without using environment variables). 98 | 99 | ### multiSelectDelimiter 100 | 101 | Inserts this value between selections when the parameter is a multi-select. 102 | 103 | The default when empty is ',' 104 | 105 | ### projectName 106 | 107 | If specified, this adds a currentProject entry to the groovy script context. The entry's value is 108 | set to the specified Jenkins project. 109 | 110 | ### quoteValue 111 | 112 | If true, the value or selected values will be formatted with quotes. 113 | 114 | ### visibleItemCount 115 | 116 | If specified, this will limit the amount of options displayed by creating a scrolldown list 117 | with the only the specified amount visible at once. 118 | 119 | ### groovyScript 120 | 121 | A groovy script used to generate the list of values. 122 | 123 | ### groovyScriptFile 124 | 125 | A file containing a groovy script used to generate the list of values. 126 | 127 | ### defaultGroovyScript 128 | 129 | A groovy script used to generate the list of values used in the 130 | initial selection of the single-select or mult-select box. 131 | 132 | ### defaultGroovyScriptFile 133 | 134 | A file containing a groovy script used to generate the list of values used in the 135 | initial selection of the single-select or mult-select box. 136 | 137 | ### bindings 138 | 139 | ### groovyClasspath 140 | 141 | ### defaultBindings 142 | 143 | ### defaultGroovyClasspath 144 | 145 | ### defaultPropertyKey 146 | 147 | ### descriptionPropertyValue 148 | 149 | ### descriptionPropertyFile 150 | 151 | ### descriptionGroovyScript 152 | 153 | ### descriptionGroovyScriptFile 154 | 155 | ### descriptionBindings 156 | 157 | ### descriptionGroovyClasspath 158 | 159 | ### descriptionPropertyKey 160 | 161 | ### javascriptFile 162 | 163 | ### javascript 164 | 165 | ### saveJSONParameterToFile 166 | 167 | ## More 168 | 169 | For info on how to use groovy script feature see 170 | this [link](http://stackoverflow.com/questions/24730186/jenkins-extended-parameter-plugin-groovy-script) 171 | 172 | ## Contributing 173 | 174 | Refer to [contribution guidelines](https://github.com/jenkinsci/.github/blob/master/CONTRIBUTING.md) 175 | 176 | ## LICENSE 177 | 178 | Licensed under MIT, see [LICENSE](LICENSE.md) 179 | -------------------------------------------------------------------------------- /src/main/webapp/css/selectize.css: -------------------------------------------------------------------------------- 1 | /** 2 | * selectize.css (v0.11.0) 3 | * Copyright (c) 2013 Brian Reavis & contributors 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this 6 | * file except in compliance with the License. You may obtain a copy of the License at: 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under 10 | * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 11 | * ANY KIND, either express or implied. See the License for the specific language 12 | * governing permissions and limitations under the License. 13 | * 14 | * @author Brian Reavis 15 | */ 16 | 17 | .selectize-control.plugin-drag_drop.multi > .selectize-input > div.ui-sortable-placeholder { 18 | visibility: visible !important; 19 | background: #f2f2f2 !important; 20 | background: rgba(0, 0, 0, 0.06) !important; 21 | border: 0 none !important; 22 | -webkit-box-shadow: inset 0 0 12px 4px #ffffff; 23 | box-shadow: inset 0 0 12px 4px #ffffff; 24 | } 25 | .selectize-control.plugin-drag_drop .ui-sortable-placeholder::after { 26 | content: '!'; 27 | visibility: hidden; 28 | } 29 | .selectize-control.plugin-drag_drop .ui-sortable-helper { 30 | -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); 31 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); 32 | } 33 | .selectize-dropdown-header { 34 | position: relative; 35 | padding: 5px 8px; 36 | border-bottom: 1px solid #d0d0d0; 37 | background: #f8f8f8; 38 | -webkit-border-radius: 3px 3px 0 0; 39 | -moz-border-radius: 3px 3px 0 0; 40 | border-radius: 3px 3px 0 0; 41 | } 42 | .selectize-dropdown-header-close { 43 | position: absolute; 44 | right: 8px; 45 | top: 50%; 46 | color: #303030; 47 | opacity: 0.4; 48 | margin-top: -12px; 49 | line-height: 20px; 50 | font-size: 20px !important; 51 | } 52 | .selectize-dropdown-header-close:hover { 53 | color: #000000; 54 | } 55 | .selectize-dropdown.plugin-optgroup_columns .optgroup { 56 | border-right: 1px solid #f2f2f2; 57 | border-top: 0 none; 58 | float: left; 59 | -webkit-box-sizing: border-box; 60 | -moz-box-sizing: border-box; 61 | box-sizing: border-box; 62 | } 63 | .selectize-dropdown.plugin-optgroup_columns .optgroup:last-child { 64 | border-right: 0 none; 65 | } 66 | .selectize-dropdown.plugin-optgroup_columns .optgroup:before { 67 | display: none; 68 | } 69 | .selectize-dropdown.plugin-optgroup_columns .optgroup-header { 70 | border-top: 0 none; 71 | } 72 | .selectize-control.plugin-remove_button [data-value] { 73 | position: relative; 74 | padding-right: 24px !important; 75 | } 76 | .selectize-control.plugin-remove_button [data-value] .remove { 77 | z-index: 1; 78 | /* fixes ie bug (see #392) */ 79 | position: absolute; 80 | top: 0; 81 | right: 0; 82 | bottom: 0; 83 | width: 17px; 84 | text-align: center; 85 | font-weight: bold; 86 | font-size: 12px; 87 | color: inherit; 88 | text-decoration: none; 89 | vertical-align: middle; 90 | display: inline-block; 91 | padding: 2px 0 0 0; 92 | border-left: 1px solid #d0d0d0; 93 | -webkit-border-radius: 0 2px 2px 0; 94 | -moz-border-radius: 0 2px 2px 0; 95 | border-radius: 0 2px 2px 0; 96 | -webkit-box-sizing: border-box; 97 | -moz-box-sizing: border-box; 98 | box-sizing: border-box; 99 | } 100 | .selectize-control.plugin-remove_button [data-value] .remove:hover { 101 | background: rgba(0, 0, 0, 0.05); 102 | } 103 | .selectize-control.plugin-remove_button [data-value].active .remove { 104 | border-left-color: #cacaca; 105 | } 106 | .selectize-control.plugin-remove_button .disabled [data-value] .remove:hover { 107 | background: none; 108 | } 109 | .selectize-control.plugin-remove_button .disabled [data-value] .remove { 110 | border-left-color: #ffffff; 111 | } 112 | .selectize-control { 113 | position: relative; 114 | } 115 | .selectize-dropdown, 116 | .selectize-input, 117 | .selectize-input input { 118 | color: #303030; 119 | font-family: inherit; 120 | font-size: 13px; 121 | line-height: 18px; 122 | -webkit-font-smoothing: inherit; 123 | } 124 | .selectize-input, 125 | .selectize-control.single .selectize-input.input-active { 126 | background: #ffffff; 127 | cursor: text; 128 | display: inline-block; 129 | } 130 | .selectize-input { 131 | border: 1px solid #d0d0d0; 132 | padding: 8px 8px; 133 | display: inline-block; 134 | width: 100%; 135 | overflow: hidden; 136 | position: relative; 137 | z-index: 1; 138 | -webkit-box-sizing: border-box; 139 | -moz-box-sizing: border-box; 140 | box-sizing: border-box; 141 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); 142 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); 143 | -webkit-border-radius: 3px; 144 | -moz-border-radius: 3px; 145 | border-radius: 3px; 146 | } 147 | .selectize-control.multi .selectize-input.has-items { 148 | padding: 6px 8px 3px; 149 | } 150 | .selectize-input.full { 151 | background-color: #ffffff; 152 | } 153 | .selectize-input.disabled, 154 | .selectize-input.disabled * { 155 | cursor: default !important; 156 | } 157 | .selectize-input.focus { 158 | -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); 159 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); 160 | } 161 | .selectize-input.dropdown-active { 162 | -webkit-border-radius: 3px 3px 0 0; 163 | -moz-border-radius: 3px 3px 0 0; 164 | border-radius: 3px 3px 0 0; 165 | } 166 | .selectize-input > * { 167 | vertical-align: baseline; 168 | display: -moz-inline-stack; 169 | display: inline-block; 170 | zoom: 1; 171 | *display: inline; 172 | } 173 | .selectize-control.multi .selectize-input > div { 174 | cursor: pointer; 175 | margin: 0 3px 3px 0; 176 | padding: 2px 6px; 177 | background: #f2f2f2; 178 | color: #303030; 179 | border: 0 solid #d0d0d0; 180 | } 181 | .selectize-control.multi .selectize-input > div.active { 182 | background: #e8e8e8; 183 | color: #303030; 184 | border: 0 solid #cacaca; 185 | } 186 | .selectize-control.multi .selectize-input.disabled > div, 187 | .selectize-control.multi .selectize-input.disabled > div.active { 188 | color: #7d7d7d; 189 | background: #ffffff; 190 | border: 0 solid #ffffff; 191 | } 192 | .selectize-input > input { 193 | padding: 0 !important; 194 | min-height: 0 !important; 195 | max-height: none !important; 196 | max-width: 100% !important; 197 | margin: 0 2px 0 0 !important; 198 | text-indent: 0 !important; 199 | border: 0 none !important; 200 | background: none !important; 201 | line-height: inherit !important; 202 | -webkit-user-select: auto !important; 203 | -webkit-box-shadow: none !important; 204 | box-shadow: none !important; 205 | } 206 | .selectize-input > input::-ms-clear { 207 | display: none; 208 | } 209 | .selectize-input > input:focus { 210 | outline: none !important; 211 | } 212 | .selectize-input::after { 213 | content: ' '; 214 | display: block; 215 | clear: left; 216 | } 217 | .selectize-input.dropdown-active::before { 218 | content: ' '; 219 | display: block; 220 | position: absolute; 221 | background: #f0f0f0; 222 | height: 1px; 223 | bottom: 0; 224 | left: 0; 225 | right: 0; 226 | } 227 | .selectize-dropdown { 228 | position: absolute; 229 | z-index: 10; 230 | border: 1px solid #d0d0d0; 231 | background: #ffffff; 232 | margin: -1px 0 0 0; 233 | border-top: 0 none; 234 | -webkit-box-sizing: border-box; 235 | -moz-box-sizing: border-box; 236 | box-sizing: border-box; 237 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 238 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 239 | -webkit-border-radius: 0 0 3px 3px; 240 | -moz-border-radius: 0 0 3px 3px; 241 | border-radius: 0 0 3px 3px; 242 | } 243 | .selectize-dropdown [data-selectable] { 244 | cursor: pointer; 245 | overflow: hidden; 246 | } 247 | .selectize-dropdown [data-selectable] .highlight { 248 | background: rgba(125, 168, 208, 0.2); 249 | -webkit-border-radius: 1px; 250 | -moz-border-radius: 1px; 251 | border-radius: 1px; 252 | } 253 | .selectize-dropdown [data-selectable], 254 | .selectize-dropdown .optgroup-header { 255 | padding: 5px 8px; 256 | } 257 | .selectize-dropdown .optgroup:first-child .optgroup-header { 258 | border-top: 0 none; 259 | } 260 | .selectize-dropdown .optgroup-header { 261 | color: #303030; 262 | background: #ffffff; 263 | cursor: default; 264 | } 265 | .selectize-dropdown .active { 266 | background-color: #f5fafd; 267 | color: #495c68; 268 | } 269 | .selectize-dropdown .active.create { 270 | color: #495c68; 271 | } 272 | .selectize-dropdown .create { 273 | color: rgba(48, 48, 48, 0.5); 274 | } 275 | .selectize-dropdown-content { 276 | overflow-y: auto; 277 | overflow-x: hidden; 278 | max-height: 200px; 279 | } 280 | .selectize-control.single .selectize-input, 281 | .selectize-control.single .selectize-input input { 282 | cursor: pointer; 283 | } 284 | .selectize-control.single .selectize-input.input-active, 285 | .selectize-control.single .selectize-input.input-active input { 286 | cursor: text; 287 | } 288 | .selectize-control.single .selectize-input:after { 289 | content: ' '; 290 | display: block; 291 | position: absolute; 292 | top: 50%; 293 | right: 15px; 294 | margin-top: -3px; 295 | width: 0; 296 | height: 0; 297 | border-style: solid; 298 | border-width: 5px 5px 0 5px; 299 | border-color: #808080 transparent transparent transparent; 300 | } 301 | .selectize-control.single .selectize-input.dropdown-active:after { 302 | margin-top: -4px; 303 | border-width: 0 5px 5px 5px; 304 | border-color: transparent transparent #808080 transparent; 305 | } 306 | .selectize-control.rtl.single .selectize-input:after { 307 | left: 15px; 308 | right: auto; 309 | } 310 | .selectize-control.rtl .selectize-input > input { 311 | margin: 0 4px 0 -2px !important; 312 | } 313 | .selectize-control .selectize-input.disabled { 314 | opacity: 0.5; 315 | background-color: #fafafa; 316 | } 317 | -------------------------------------------------------------------------------- /src/main/resources/com/cwctravel/hudson/plugins/extended_choice_parameter/ExtendedChoiceParameterDefinition/config.jelly: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 31 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 98 | 99 | 100 | 101 | 102 | 103 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 147 | 148 | 149 | 150 | 151 | 152 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 196 | 197 | 198 | 199 | 200 | 201 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 245 | 246 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 268 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 299 | 300 | 301 | 302 | 303 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | -------------------------------------------------------------------------------- /CHANGELOG.adoc: -------------------------------------------------------------------------------- 1 | = Change Log 2 | :toc: 3 | 4 | == Version 0.64 (April 17, 2016) 5 | 6 | Show user friendly error message for script approval issues. 7 | 8 | Script security has been incorporated into this plugin for security 9 | reasons. You may see warning messages related to security with 10 | groovy-script execution from this version on-wards. 11 | 12 | A warning message is displayed on the screen if the user tries to 13 | execute groovy scripts that have not been approved. The message has a 14 | link that takes the user to the screen where the scripts can be 15 | approved. The user should have admin access to approve scripts. 16 | 17 | image::docs/images/script-security.png[] 18 | 19 | == Version 0.61 (Mar 30, 2016) 20 | 21 | * Use Script Security plugin for authorizing Groovy scripts. 22 | * Allow `+${JOB_NAME}+` variable in properties and groovy file path expose project and jenkins 23 | bindings in groovy script. 24 | 25 | == Version 0.53 (Jun 2, 2015) 26 | 27 | Use faster Boon JSON parser instead of built-in net.sef.JSON parser. 28 | 29 | == Version 0.44 (Jun 2, 2015) 30 | 31 | Added JSON Parameter feature based on json html editor by https://github.com/jdorn/json-editor[Jeremy 32 | Dorn] 33 | image:docs/images/json-parameter-config.png[] 34 | The groovy script should return a JSON object that corresponds to the 35 | "options" object referred to in 36 | https://github.com/jdorn/json-editor[json-editor] 37 | 38 | Watched Fields Ex: 39 | 40 | [source,groovy] 41 | ---- 42 | import org.boon.Boon; 43 | 44 | def jsonEditorOptions = Boon.fromJson(/{ 45 | disable_edit_json: true, 46 | disable_properties: true, 47 | no_additional_properties: true, 48 | disable_collapse: true, 49 | disable_array_add: true, 50 | disable_array_delete: true, 51 | disable_array_reorder: true, 52 | theme: "bootstrap2", 53 | iconlib:"fontawesome4", 54 | schema: { 55 | "type": "object", 56 | "title": "Name", 57 | "properties": { 58 | "first_name": { 59 | "type": "string", 60 | "propertyOrder" : 1 61 | }, 62 | "last_name": { 63 | "type": "string", 64 | "propertyOrder" : 2 65 | }, 66 | "full_name": { 67 | "type": "string", 68 | "propertyOrder" : 3, 69 | "template": "{{fname}} {{lname}}", 70 | "watch": { 71 | "fname": "first_name", 72 | "lname": "last_name" 73 | } 74 | } 75 | } 76 | }, 77 | startval: { 78 | "first_name" : "John", 79 | "last_name" : "Doe", 80 | "full_name" : "John Doe" 81 | } 82 | }/); 83 | 84 | ---- 85 | 86 | image:docs/images/nameparameter.png[] 87 | Color Picker Ex: 88 | 89 | [source,groovy] 90 | ---- 91 | import org.boon.Boon; 92 | 93 | def jsonEditorOptions = Boon.fromJson(/{ 94 | disable_edit_json: true, 95 | disable_properties: true, 96 | no_additional_properties: true, 97 | disable_collapse: true, 98 | disable_array_add: true, 99 | disable_array_delete: true, 100 | disable_array_reorder: true, 101 | theme: "bootstrap2", 102 | iconlib:"fontawesome4", 103 | schema: { 104 | "title": "Color Picker", 105 | "type": "object", 106 | "properties": { 107 | "color": { 108 | "type": "string", 109 | "format": "color" 110 | } 111 | } 112 | }, 113 | startval: { 114 | color :"red" 115 | } 116 | }/); 117 | ---- 118 | 119 | image:docs/images/colorpicker.png[] 120 | Advanced Ex: 121 | 122 | [source,groovy] 123 | ---- 124 | import org.boon.Boon; 125 | 126 | def jsonEditorOptions = Boon.fromJson(/{ 127 | disable_edit_json: true, 128 | disable_properties: true, 129 | no_additional_properties: true, 130 | disable_collapse: true, 131 | disable_array_add: true, 132 | disable_array_delete: true, 133 | disable_array_reorder: true, 134 | theme: "bootstrap2", 135 | iconlib:"fontawesome4", 136 | "schema":{ 137 | "title": "Applications", 138 | "type": "array", 139 | "format":"tabs", 140 | "items": { 141 | "title": "Application", 142 | "headerTemplate": "{{self.name}}", 143 | "type": "object", 144 | "properties": { 145 | "name" : { 146 | "title": "application", 147 | "type": "string", 148 | "readOnly": "true" 149 | 150 | }, 151 | "environments": { 152 | "title": "Environments", 153 | "type": "array", 154 | "format":"tabs", 155 | "items": { 156 | "title": "Environment", 157 | "headerTemplate": "{{self.name}}", 158 | "type": "object", 159 | "properties": { 160 | "name" : { 161 | "title": "environment", 162 | "type": "string", 163 | "readOnly": "true" 164 | 165 | }, 166 | "properties": { 167 | "type": "array", 168 | "format": "table", 169 | "items": { 170 | "type": "object", 171 | "properties": { 172 | "name" : { 173 | "type": "string", 174 | "readOnly": "true" 175 | }, 176 | "value" : { 177 | "type": "string" 178 | } 179 | } 180 | } 181 | }, 182 | "servers": { 183 | "title": "Servers", 184 | "type": "array", 185 | "format":"tabs", 186 | "items": { 187 | "title": "Server", 188 | "headerTemplate": "{{self.name}}", 189 | "type": "object", 190 | 191 | "properties": { 192 | "name" : { 193 | "title": "server", 194 | "type": "string", 195 | "readOnly": "true" 196 | 197 | }, 198 | "properties": { 199 | "type": "array", 200 | "format": "table", 201 | "items": { 202 | "type": "object", 203 | "properties": { 204 | "name" : { 205 | "type": "string", 206 | "readOnly": "true" 207 | }, 208 | "value" : { 209 | "type": "string" 210 | }, 211 | "override": { 212 | "type": "boolean" 213 | } 214 | } 215 | } 216 | } 217 | } 218 | } 219 | } 220 | } 221 | } 222 | } 223 | } 224 | } 225 | }, 226 | startval: [ 227 | { 228 | "name": "agent", 229 | "environments": [ 230 | { 231 | "name": "dev1", 232 | "properties": [ 233 | { 234 | "name": "database_url", 235 | "value": "dev1_url" 236 | }, 237 | { 238 | "name": "database_password", 239 | "value": "dev1_password" 240 | } 241 | ], 242 | "servers": [ 243 | { 244 | "name": "agt11", 245 | "properties": [ 246 | { 247 | "name": "database_url", 248 | "value": "agt11_url", 249 | "override": "true" 250 | }, 251 | { 252 | "name": "database_password", 253 | "value": "agt11_password", 254 | "override": "true" 255 | } 256 | ] 257 | }, 258 | { 259 | "name": "agt12", 260 | "properties": [ 261 | { 262 | "name": "database_url", 263 | "value": "agt12_url", 264 | "override": "true" 265 | }, 266 | { 267 | "name": "database_password", 268 | "value": "agt12_password", 269 | "override": "true" 270 | } 271 | ] 272 | } 273 | ] 274 | }, 275 | { 276 | "name": "devprod", 277 | "properties": [ 278 | { 279 | "name": "database_url", 280 | "value": "devprod_url" 281 | }, 282 | { 283 | "name": "database_password", 284 | "value": "devprod_password" 285 | } 286 | ], 287 | "servers": [ 288 | { 289 | "name": "agt11", 290 | "properties": [ 291 | { 292 | "name": "database_url", 293 | "value": "agt11_prod_url", 294 | "override": "true" 295 | }, 296 | { 297 | "name": "database_password", 298 | "value": "agt11_prod_password", 299 | "override": "true" 300 | } 301 | ] 302 | }, 303 | { 304 | "name": "agt12", 305 | "properties": [ 306 | { 307 | "name": "database_url", 308 | "value": "agt12_prod_url", 309 | "override": "true" 310 | }, 311 | { 312 | "name": "database_password", 313 | "value": "agt12_prod_password", 314 | "override": "true" 315 | } 316 | ] 317 | } 318 | ] 319 | } 320 | ] 321 | }, 322 | { 323 | "name": "consumer", 324 | "environments": [ 325 | { 326 | "name": "dev1", 327 | "properties": [ 328 | { 329 | "name": "database_url", 330 | "value": "dev1_url" 331 | }, 332 | { 333 | "name": "database_password", 334 | "value": "dev1_password" 335 | } 336 | ], 337 | "servers": [ 338 | { 339 | "name": "app11", 340 | "properties": [ 341 | { 342 | "name": "database_url", 343 | "value": "app11_url", 344 | "override": "true" 345 | }, 346 | { 347 | "name": "database_password", 348 | "value": "app11_password", 349 | "override": "true" 350 | } 351 | ] 352 | }, 353 | { 354 | "name": "app12", 355 | "properties": [ 356 | { 357 | "name": "database_url", 358 | "value": "app12_url", 359 | "override": "true" 360 | }, 361 | { 362 | "name": "database_password", 363 | "value": "app12_password", 364 | "override": "true" 365 | } 366 | ] 367 | } 368 | ] 369 | }, 370 | { 371 | "name": "devprod", 372 | "properties": [ 373 | { 374 | "name": "database_url", 375 | "value": "devprod_url" 376 | }, 377 | { 378 | "name": "database_password", 379 | "value": "devprod_password" 380 | } 381 | ], 382 | "servers": [ 383 | { 384 | "name": "app11", 385 | "properties": [ 386 | { 387 | "name": "database_url", 388 | "value": "agt11_prod_url", 389 | "override": "true" 390 | }, 391 | { 392 | "name": "database_password", 393 | "value": "app11_prod_password", 394 | "override": "true" 395 | } 396 | ] 397 | }, 398 | { 399 | "name": "agt12", 400 | "properties": [ 401 | { 402 | "name": "database_url", 403 | "value": "app12_prod_url", 404 | "override": "true" 405 | }, 406 | { 407 | "name": "database_password", 408 | "value": "app12_prod_password", 409 | "override": "true" 410 | } 411 | ] 412 | } 413 | ] 414 | } 415 | ] 416 | } 417 | ] 418 | } 419 | 420 | }/); 421 | 422 | return jsonEditorOptions; 423 | ---- 424 | 425 | image::docs/images/demo-json-parameter.png[] 426 | 427 | == Version 0.33 (Jun 9, 2014) 428 | 429 | Separated out multilevel single select and multilevel multi-select 430 | parameters into separate sections. 431 | image:docs/images/multilevel.png[] 432 | 433 | == Version 0.32 (Jan 7, 2012) 434 | 435 | Added ability to use groovy script to fetch options for parameter. 436 | image:docs/images/extended-choice-parameter-config.png[] 437 | 438 | == Version 0.20 (Jan 7, 2012) 439 | 440 | * New field to configure number of items visible in selectbox without 441 | scrolling 442 | * New 'checkbox' and 'radio button' parameter types added 443 | * changed all validation error checks to warnings 444 | * added ability to specify an url instead of absolute directory path 445 | for property files 446 | * ability to specify property references for values, for example 447 | ** prop1=a,b,c,d,e 448 | ** prop2=$\{prop1},f,g,h --(prop2 will now evaluate to 449 | a,b,c,d,e,f,g,h) 450 | 451 | image::docs/images/screenshot.jpg[] 452 | 453 | == Version 0.5 (Jan 10, 2012) 454 | 455 | * Use a dropdown when using single select mode 456 | * Trim properties 457 | * When using a properties file, do not load the file content when 458 | editing the job 459 | * Load the 'latest' property at each build 460 | * Added some validation for properties file names 461 | 462 | == Version 0.1 (Jul 14, 2010) 463 | 464 | * Initial release 465 | 466 | This plugin allows single select and multi select build parameters to be 467 | configured. 468 | 469 | Here is a screenshot of the configuration page. 470 | image:docs/images/hudson-extended-choice-parameter-plugin.png[] 471 | 472 | The 'value' field is a comma separated list of values for the single 473 | select or multi-select box. 474 | This field can be left blank if the comma separated values need to be 475 | picked up from a properties file. 476 | In that case the fields 'Property File' and 'Property Key' need to be 477 | filled in. 478 | 479 | The 'default value' field is used to set the initial selection of the 480 | single-select or mult-select box. 481 | in case of the multi-select box default value can be a comma separated 482 | string. 483 | This field can be left blank if the default value needs to be picked up 484 | from a properties file. 485 | In that case the fields 'Default Property File' and 'Default Property 486 | Key' need to be filled in. 487 | 488 | NOTE: Neither "Property File" or "Default Property File" support 489 | referencing environment variables in their values. Thus, their values 490 | should be absolute paths specified without using environment variables. 491 | -------------------------------------------------------------------------------- /src/main/webapp/css/selectize.bootstrap2.css: -------------------------------------------------------------------------------- 1 | /** 2 | * selectize.bootstrap2.css (v0.11.0) - Bootstrap 2 Theme 3 | * Copyright (c) 2013 Brian Reavis & contributors 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this 6 | * file except in compliance with the License. You may obtain a copy of the License at: 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under 10 | * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 11 | * ANY KIND, either express or implied. See the License for the specific language 12 | * governing permissions and limitations under the License. 13 | * 14 | * @author Brian Reavis 15 | */ 16 | .selectize-control.plugin-drag_drop.multi > .selectize-input > div.ui-sortable-placeholder { 17 | visibility: visible !important; 18 | background: #f2f2f2 !important; 19 | background: rgba(0, 0, 0, 0.06) !important; 20 | border: 0 none !important; 21 | -webkit-box-shadow: inset 0 0 12px 4px #ffffff; 22 | box-shadow: inset 0 0 12px 4px #ffffff; 23 | } 24 | .selectize-control.plugin-drag_drop .ui-sortable-placeholder::after { 25 | content: '!'; 26 | visibility: hidden; 27 | } 28 | .selectize-control.plugin-drag_drop .ui-sortable-helper { 29 | -webkit-box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); 30 | box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); 31 | } 32 | .selectize-dropdown-header { 33 | position: relative; 34 | padding: 3px 10px; 35 | border-bottom: 1px solid #d0d0d0; 36 | background: #f8f8f8; 37 | -webkit-border-radius: 4px 4px 0 0; 38 | -moz-border-radius: 4px 4px 0 0; 39 | border-radius: 4px 4px 0 0; 40 | } 41 | .selectize-dropdown-header-close { 42 | position: absolute; 43 | right: 10px; 44 | top: 50%; 45 | color: #333333; 46 | opacity: 0.4; 47 | margin-top: -12px; 48 | line-height: 20px; 49 | font-size: 20px !important; 50 | } 51 | .selectize-dropdown-header-close:hover { 52 | color: #000000; 53 | } 54 | .selectize-dropdown.plugin-optgroup_columns .optgroup { 55 | border-right: 1px solid #f2f2f2; 56 | border-top: 0 none; 57 | float: left; 58 | -webkit-box-sizing: border-box; 59 | -moz-box-sizing: border-box; 60 | box-sizing: border-box; 61 | } 62 | .selectize-dropdown.plugin-optgroup_columns .optgroup:last-child { 63 | border-right: 0 none; 64 | } 65 | .selectize-dropdown.plugin-optgroup_columns .optgroup:before { 66 | display: none; 67 | } 68 | .selectize-dropdown.plugin-optgroup_columns .optgroup-header { 69 | border-top: 0 none; 70 | } 71 | .selectize-control.plugin-remove_button [data-value] { 72 | position: relative; 73 | padding-right: 24px !important; 74 | } 75 | .selectize-control.plugin-remove_button [data-value] .remove { 76 | z-index: 1; 77 | /* fixes ie bug (see #392) */ 78 | position: absolute; 79 | top: 0; 80 | right: 0; 81 | bottom: 0; 82 | width: 17px; 83 | text-align: center; 84 | font-weight: bold; 85 | font-size: 12px; 86 | color: inherit; 87 | text-decoration: none; 88 | vertical-align: middle; 89 | display: inline-block; 90 | padding: 1px 0 0 0; 91 | border-left: 1px solid #cccccc; 92 | -webkit-border-radius: 0 2px 2px 0; 93 | -moz-border-radius: 0 2px 2px 0; 94 | border-radius: 0 2px 2px 0; 95 | -webkit-box-sizing: border-box; 96 | -moz-box-sizing: border-box; 97 | box-sizing: border-box; 98 | } 99 | .selectize-control.plugin-remove_button [data-value] .remove:hover { 100 | background: rgba(0, 0, 0, 0.05); 101 | } 102 | .selectize-control.plugin-remove_button [data-value].active .remove { 103 | border-left-color: #0077b3; 104 | } 105 | .selectize-control.plugin-remove_button .disabled [data-value] .remove:hover { 106 | background: none; 107 | } 108 | .selectize-control.plugin-remove_button .disabled [data-value] .remove { 109 | border-left-color: #e0e0e0; 110 | } 111 | .selectize-control { 112 | position: relative; 113 | } 114 | .selectize-dropdown, 115 | .selectize-input, 116 | .selectize-input input { 117 | color: #333333; 118 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 119 | font-size: 14px; 120 | line-height: 20px; 121 | -webkit-font-smoothing: inherit; 122 | } 123 | .selectize-input, 124 | .selectize-control.single .selectize-input.input-active { 125 | background: #ffffff; 126 | cursor: text; 127 | display: inline-block; 128 | } 129 | .selectize-input { 130 | border: 1px solid #d0d0d0; 131 | padding: 7px 10px; 132 | display: inline-block; 133 | width: 100%; 134 | overflow: hidden; 135 | position: relative; 136 | z-index: 1; 137 | -webkit-box-sizing: border-box; 138 | -moz-box-sizing: border-box; 139 | box-sizing: border-box; 140 | -webkit-box-shadow: none; 141 | box-shadow: none; 142 | -webkit-border-radius: 4px; 143 | -moz-border-radius: 4px; 144 | border-radius: 4px; 145 | } 146 | .selectize-control.multi .selectize-input.has-items { 147 | padding: 5px 10px 2px; 148 | } 149 | .selectize-input.full { 150 | background-color: #ffffff; 151 | } 152 | .selectize-input.disabled, 153 | .selectize-input.disabled * { 154 | cursor: default !important; 155 | } 156 | .selectize-input.focus { 157 | -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); 158 | box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.15); 159 | } 160 | .selectize-input.dropdown-active { 161 | -webkit-border-radius: 4px 4px 0 0; 162 | -moz-border-radius: 4px 4px 0 0; 163 | border-radius: 4px 4px 0 0; 164 | } 165 | .selectize-input > * { 166 | vertical-align: baseline; 167 | display: -moz-inline-stack; 168 | display: inline-block; 169 | zoom: 1; 170 | *display: inline; 171 | } 172 | .selectize-control.multi .selectize-input > div { 173 | cursor: pointer; 174 | margin: 0 3px 3px 0; 175 | padding: 1px 3px; 176 | background: #e6e6e6; 177 | color: #333333; 178 | border: 1px solid #cccccc; 179 | } 180 | .selectize-control.multi .selectize-input > div.active { 181 | background: #0088cc; 182 | color: #ffffff; 183 | border: 1px solid #0077b3; 184 | } 185 | .selectize-control.multi .selectize-input.disabled > div, 186 | .selectize-control.multi .selectize-input.disabled > div.active { 187 | color: #474747; 188 | background: #fafafa; 189 | border: 1px solid #e0e0e0; 190 | } 191 | .selectize-input > input { 192 | padding: 0 !important; 193 | min-height: 0 !important; 194 | max-height: none !important; 195 | max-width: 100% !important; 196 | margin: 0 !important; 197 | text-indent: 0 !important; 198 | border: 0 none !important; 199 | background: none !important; 200 | line-height: inherit !important; 201 | -webkit-user-select: auto !important; 202 | -webkit-box-shadow: none !important; 203 | box-shadow: none !important; 204 | } 205 | .selectize-input > input::-ms-clear { 206 | display: none; 207 | } 208 | .selectize-input > input:focus { 209 | outline: none !important; 210 | } 211 | .selectize-input::after { 212 | content: ' '; 213 | display: block; 214 | clear: left; 215 | } 216 | .selectize-input.dropdown-active::before { 217 | content: ' '; 218 | display: block; 219 | position: absolute; 220 | background: #e5e5e5; 221 | height: 1px; 222 | bottom: 0; 223 | left: 0; 224 | right: 0; 225 | } 226 | .selectize-dropdown { 227 | position: absolute; 228 | z-index: 10; 229 | border: 1px solid #d0d0d0; 230 | background: #ffffff; 231 | margin: -1px 0 0 0; 232 | border-top: 0 none; 233 | -webkit-box-sizing: border-box; 234 | -moz-box-sizing: border-box; 235 | box-sizing: border-box; 236 | -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 237 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); 238 | -webkit-border-radius: 0 0 4px 4px; 239 | -moz-border-radius: 0 0 4px 4px; 240 | border-radius: 0 0 4px 4px; 241 | } 242 | .selectize-dropdown [data-selectable] { 243 | cursor: pointer; 244 | overflow: hidden; 245 | } 246 | .selectize-dropdown [data-selectable] .highlight { 247 | background: rgba(255, 237, 40, 0.4); 248 | -webkit-border-radius: 1px; 249 | -moz-border-radius: 1px; 250 | border-radius: 1px; 251 | } 252 | .selectize-dropdown [data-selectable], 253 | .selectize-dropdown .optgroup-header { 254 | padding: 3px 10px; 255 | } 256 | .selectize-dropdown .optgroup:first-child .optgroup-header { 257 | border-top: 0 none; 258 | } 259 | .selectize-dropdown .optgroup-header { 260 | color: #999999; 261 | background: #ffffff; 262 | cursor: default; 263 | } 264 | .selectize-dropdown .active { 265 | background-color: #0088cc; 266 | color: #ffffff; 267 | } 268 | .selectize-dropdown .active.create { 269 | color: #ffffff; 270 | } 271 | .selectize-dropdown .create { 272 | color: rgba(51, 51, 51, 0.5); 273 | } 274 | .selectize-dropdown-content { 275 | overflow-y: auto; 276 | overflow-x: hidden; 277 | max-height: 200px; 278 | } 279 | .selectize-control.single .selectize-input, 280 | .selectize-control.single .selectize-input input { 281 | cursor: pointer; 282 | } 283 | .selectize-control.single .selectize-input.input-active, 284 | .selectize-control.single .selectize-input.input-active input { 285 | cursor: text; 286 | } 287 | .selectize-control.single .selectize-input:after { 288 | content: ' '; 289 | display: block; 290 | position: absolute; 291 | top: 50%; 292 | right: 15px; 293 | margin-top: -3px; 294 | width: 0; 295 | height: 0; 296 | border-style: solid; 297 | border-width: 5px 5px 0 5px; 298 | border-color: #000000 transparent transparent transparent; 299 | } 300 | .selectize-control.single .selectize-input.dropdown-active:after { 301 | margin-top: -4px; 302 | border-width: 0 5px 5px 5px; 303 | border-color: transparent transparent #000000 transparent; 304 | } 305 | .selectize-control.rtl.single .selectize-input:after { 306 | left: 15px; 307 | right: auto; 308 | } 309 | .selectize-control.rtl .selectize-input > input { 310 | margin: 0 4px 0 -2px !important; 311 | } 312 | .selectize-control .selectize-input.disabled { 313 | opacity: 0.5; 314 | background-color: #ffffff; 315 | } 316 | .selectize-dropdown { 317 | margin: 2px 0 0 0; 318 | z-index: 1000; 319 | border: 1px solid rgba(0, 0, 0, 0.2); 320 | border-radius: 4px; 321 | -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 322 | -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 323 | box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); 324 | } 325 | .selectize-dropdown .optgroup-header { 326 | font-size: 11px; 327 | font-weight: bold; 328 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 329 | text-transform: uppercase; 330 | } 331 | .selectize-dropdown .optgroup:first-child:before { 332 | display: none; 333 | } 334 | .selectize-dropdown .optgroup:before { 335 | content: ' '; 336 | display: block; 337 | *width: 100%; 338 | height: 1px; 339 | margin: 9px 1px; 340 | *margin: -5px 0 5px; 341 | overflow: hidden; 342 | background-color: #e5e5e5; 343 | border-bottom: 1px solid #ffffff; 344 | margin-left: -10px; 345 | margin-right: -10px; 346 | } 347 | .selectize-dropdown [data-selectable].active { 348 | background-color: #0081c2; 349 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 350 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 351 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 352 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 353 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 354 | background-repeat: repeat-x; 355 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); 356 | } 357 | .selectize-dropdown-content { 358 | padding: 5px 0; 359 | } 360 | .selectize-dropdown-header { 361 | padding: 6px 10px; 362 | } 363 | .selectize-input { 364 | -webkit-transition: border linear .2s, box-shadow linear .2s; 365 | -moz-transition: border linear .2s, box-shadow linear .2s; 366 | -o-transition: border linear .2s, box-shadow linear .2s; 367 | transition: border linear .2s, box-shadow linear .2s; 368 | } 369 | .selectize-input.dropdown-active { 370 | -webkit-border-radius: 4px; 371 | -moz-border-radius: 4px; 372 | border-radius: 4px; 373 | } 374 | .selectize-input.dropdown-active::before { 375 | display: none; 376 | } 377 | .selectize-input.input-active, 378 | .selectize-input.input-active:hover, 379 | .selectize-control.multi .selectize-input.focus { 380 | background: #ffffff !important; 381 | border-color: rgba(82, 168, 236, 0.8) !important; 382 | outline: 0 !important; 383 | outline: thin dotted \9 !important; 384 | -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6) !important; 385 | -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6) !important; 386 | box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6) !important; 387 | } 388 | .selectize-control.single .selectize-input { 389 | color: #333333; 390 | text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); 391 | background-color: #f5f5f5; 392 | background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); 393 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); 394 | background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); 395 | background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); 396 | background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); 397 | background-repeat: repeat-x; 398 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); 399 | border-color: #e6e6e6 #e6e6e6 #bfbfbf; 400 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 401 | *background-color: #e6e6e6; 402 | /* Darken IE7 buttons by default so they stand out more given they won't have borders */ 403 | filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); 404 | -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 405 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 406 | box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 407 | } 408 | .selectize-control.single .selectize-input:hover, 409 | .selectize-control.single .selectize-input:focus, 410 | .selectize-control.single .selectize-input:active, 411 | .selectize-control.single .selectize-input.active, 412 | .selectize-control.single .selectize-input.disabled, 413 | .selectize-control.single .selectize-input[disabled] { 414 | color: #333333; 415 | background-color: #e6e6e6; 416 | *background-color: #d9d9d9; 417 | } 418 | .selectize-control.single .selectize-input:active, 419 | .selectize-control.single .selectize-input.active { 420 | background-color: #cccccc \9; 421 | } 422 | .selectize-control.single .selectize-input:hover { 423 | color: #333333; 424 | text-decoration: none; 425 | background-position: 0 -15px; 426 | -webkit-transition: background-position 0.1s linear; 427 | -moz-transition: background-position 0.1s linear; 428 | -o-transition: background-position 0.1s linear; 429 | transition: background-position 0.1s linear; 430 | } 431 | .selectize-control.single .selectize-input.disabled { 432 | background: #e6e6e6 !important; 433 | -webkit-box-shadow: none; 434 | -moz-box-shadow: none; 435 | box-shadow: none; 436 | } 437 | .selectize-control.multi .selectize-input { 438 | -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 439 | -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 440 | box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 441 | } 442 | .selectize-control.multi .selectize-input.has-items { 443 | padding-left: 7px; 444 | padding-right: 7px; 445 | } 446 | .selectize-control.multi .selectize-input > div { 447 | color: #333333; 448 | text-shadow: none; 449 | background-color: #f5f5f5; 450 | background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); 451 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); 452 | background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); 453 | background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); 454 | background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); 455 | background-repeat: repeat-x; 456 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); 457 | border-color: #e6e6e6 #e6e6e6 #bfbfbf; 458 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 459 | *background-color: #e6e6e6; 460 | border: 1px solid #cccccc; 461 | -webkit-border-radius: 4px; 462 | -moz-border-radius: 4px; 463 | border-radius: 4px; 464 | -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 465 | -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 466 | box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); 467 | } 468 | .selectize-control.multi .selectize-input > div.active { 469 | -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05); 470 | -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05); 471 | box-shadow: 0 1px 2px rgba(0,0,0,.05); 472 | color: #ffffff; 473 | text-shadow: none; 474 | background-color: #0081c2; 475 | background-image: -moz-linear-gradient(top, #0088cc, #0077b3); 476 | background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); 477 | background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); 478 | background-image: -o-linear-gradient(top, #0088cc, #0077b3); 479 | background-image: linear-gradient(to bottom, #0088cc, #0077b3); 480 | background-repeat: repeat-x; 481 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); 482 | border-color: #0077b3 #0077b3 #004466; 483 | border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); 484 | *background-color: #0088cc; 485 | border: 1px solid #0088cc; 486 | } 487 | -------------------------------------------------------------------------------- /src/main/webapp/css/foundation-icons.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Foundation Icons v 3.0 3 | * Made by ZURB 2013 http://zurb.com/playground/foundation-icon-fonts-3 4 | * MIT License 5 | */ 6 | 7 | @font-face { 8 | font-family: "foundation-icons"; 9 | src: url("../fonts/foundation-icons.eot"); 10 | src: url("../fonts/foundation-icons.eot?#iefix") format("embedded-opentype"), 11 | url("../fonts/foundation-icons.woff") format("woff"), 12 | url("../fonts/foundation-icons.ttf") format("truetype"), 13 | url("../fonts/foundation-icons.svg#fontcustom") format("svg"); 14 | font-weight: normal; 15 | font-style: normal; 16 | } 17 | 18 | .fi-address-book:before, 19 | .fi-alert:before, 20 | .fi-align-center:before, 21 | .fi-align-justify:before, 22 | .fi-align-left:before, 23 | .fi-align-right:before, 24 | .fi-anchor:before, 25 | .fi-annotate:before, 26 | .fi-archive:before, 27 | .fi-arrow-down:before, 28 | .fi-arrow-left:before, 29 | .fi-arrow-right:before, 30 | .fi-arrow-up:before, 31 | .fi-arrows-compress:before, 32 | .fi-arrows-expand:before, 33 | .fi-arrows-in:before, 34 | .fi-arrows-out:before, 35 | .fi-asl:before, 36 | .fi-asterisk:before, 37 | .fi-at-sign:before, 38 | .fi-background-color:before, 39 | .fi-battery-empty:before, 40 | .fi-battery-full:before, 41 | .fi-battery-half:before, 42 | .fi-bitcoin-circle:before, 43 | .fi-bitcoin:before, 44 | .fi-blind:before, 45 | .fi-bluetooth:before, 46 | .fi-bold:before, 47 | .fi-book-bookmark:before, 48 | .fi-book:before, 49 | .fi-bookmark:before, 50 | .fi-braille:before, 51 | .fi-burst-new:before, 52 | .fi-burst-sale:before, 53 | .fi-burst:before, 54 | .fi-calendar:before, 55 | .fi-camera:before, 56 | .fi-check:before, 57 | .fi-checkbox:before, 58 | .fi-clipboard-notes:before, 59 | .fi-clipboard-pencil:before, 60 | .fi-clipboard:before, 61 | .fi-clock:before, 62 | .fi-closed-caption:before, 63 | .fi-cloud:before, 64 | .fi-comment-minus:before, 65 | .fi-comment-quotes:before, 66 | .fi-comment-video:before, 67 | .fi-comment:before, 68 | .fi-comments:before, 69 | .fi-compass:before, 70 | .fi-contrast:before, 71 | .fi-credit-card:before, 72 | .fi-crop:before, 73 | .fi-crown:before, 74 | .fi-css3:before, 75 | .fi-database:before, 76 | .fi-die-five:before, 77 | .fi-die-four:before, 78 | .fi-die-one:before, 79 | .fi-die-six:before, 80 | .fi-die-three:before, 81 | .fi-die-two:before, 82 | .fi-dislike:before, 83 | .fi-dollar-bill:before, 84 | .fi-dollar:before, 85 | .fi-download:before, 86 | .fi-eject:before, 87 | .fi-elevator:before, 88 | .fi-euro:before, 89 | .fi-eye:before, 90 | .fi-fast-forward:before, 91 | .fi-female-symbol:before, 92 | .fi-female:before, 93 | .fi-filter:before, 94 | .fi-first-aid:before, 95 | .fi-flag:before, 96 | .fi-folder-add:before, 97 | .fi-folder-lock:before, 98 | .fi-folder:before, 99 | .fi-foot:before, 100 | .fi-foundation:before, 101 | .fi-graph-bar:before, 102 | .fi-graph-horizontal:before, 103 | .fi-graph-pie:before, 104 | .fi-graph-trend:before, 105 | .fi-guide-dog:before, 106 | .fi-hearing-aid:before, 107 | .fi-heart:before, 108 | .fi-home:before, 109 | .fi-html5:before, 110 | .fi-indent-less:before, 111 | .fi-indent-more:before, 112 | .fi-info:before, 113 | .fi-italic:before, 114 | .fi-key:before, 115 | .fi-laptop:before, 116 | .fi-layout:before, 117 | .fi-lightbulb:before, 118 | .fi-like:before, 119 | .fi-link:before, 120 | .fi-list-bullet:before, 121 | .fi-list-number:before, 122 | .fi-list-thumbnails:before, 123 | .fi-list:before, 124 | .fi-lock:before, 125 | .fi-loop:before, 126 | .fi-magnifying-glass:before, 127 | .fi-mail:before, 128 | .fi-male-female:before, 129 | .fi-male-symbol:before, 130 | .fi-male:before, 131 | .fi-map:before, 132 | .fi-marker:before, 133 | .fi-megaphone:before, 134 | .fi-microphone:before, 135 | .fi-minus-circle:before, 136 | .fi-minus:before, 137 | .fi-mobile-signal:before, 138 | .fi-mobile:before, 139 | .fi-monitor:before, 140 | .fi-mountains:before, 141 | .fi-music:before, 142 | .fi-next:before, 143 | .fi-no-dogs:before, 144 | .fi-no-smoking:before, 145 | .fi-page-add:before, 146 | .fi-page-copy:before, 147 | .fi-page-csv:before, 148 | .fi-page-delete:before, 149 | .fi-page-doc:before, 150 | .fi-page-edit:before, 151 | .fi-page-export-csv:before, 152 | .fi-page-export-doc:before, 153 | .fi-page-export-pdf:before, 154 | .fi-page-export:before, 155 | .fi-page-filled:before, 156 | .fi-page-multiple:before, 157 | .fi-page-pdf:before, 158 | .fi-page-remove:before, 159 | .fi-page-search:before, 160 | .fi-page:before, 161 | .fi-paint-bucket:before, 162 | .fi-paperclip:before, 163 | .fi-pause:before, 164 | .fi-paw:before, 165 | .fi-paypal:before, 166 | .fi-pencil:before, 167 | .fi-photo:before, 168 | .fi-play-circle:before, 169 | .fi-play-video:before, 170 | .fi-play:before, 171 | .fi-plus:before, 172 | .fi-pound:before, 173 | .fi-power:before, 174 | .fi-previous:before, 175 | .fi-price-tag:before, 176 | .fi-pricetag-multiple:before, 177 | .fi-print:before, 178 | .fi-prohibited:before, 179 | .fi-projection-screen:before, 180 | .fi-puzzle:before, 181 | .fi-quote:before, 182 | .fi-record:before, 183 | .fi-refresh:before, 184 | .fi-results-demographics:before, 185 | .fi-results:before, 186 | .fi-rewind-ten:before, 187 | .fi-rewind:before, 188 | .fi-rss:before, 189 | .fi-safety-cone:before, 190 | .fi-save:before, 191 | .fi-share:before, 192 | .fi-sheriff-badge:before, 193 | .fi-shield:before, 194 | .fi-shopping-bag:before, 195 | .fi-shopping-cart:before, 196 | .fi-shuffle:before, 197 | .fi-skull:before, 198 | .fi-social-500px:before, 199 | .fi-social-adobe:before, 200 | .fi-social-amazon:before, 201 | .fi-social-android:before, 202 | .fi-social-apple:before, 203 | .fi-social-behance:before, 204 | .fi-social-bing:before, 205 | .fi-social-blogger:before, 206 | .fi-social-delicious:before, 207 | .fi-social-designer-news:before, 208 | .fi-social-deviant-art:before, 209 | .fi-social-digg:before, 210 | .fi-social-dribbble:before, 211 | .fi-social-drive:before, 212 | .fi-social-dropbox:before, 213 | .fi-social-evernote:before, 214 | .fi-social-facebook:before, 215 | .fi-social-flickr:before, 216 | .fi-social-forrst:before, 217 | .fi-social-foursquare:before, 218 | .fi-social-game-center:before, 219 | .fi-social-github:before, 220 | .fi-social-google-plus:before, 221 | .fi-social-hacker-news:before, 222 | .fi-social-hi5:before, 223 | .fi-social-instagram:before, 224 | .fi-social-joomla:before, 225 | .fi-social-lastfm:before, 226 | .fi-social-linkedin:before, 227 | .fi-social-medium:before, 228 | .fi-social-myspace:before, 229 | .fi-social-orkut:before, 230 | .fi-social-path:before, 231 | .fi-social-picasa:before, 232 | .fi-social-pinterest:before, 233 | .fi-social-rdio:before, 234 | .fi-social-reddit:before, 235 | .fi-social-skillshare:before, 236 | .fi-social-skype:before, 237 | .fi-social-smashing-mag:before, 238 | .fi-social-snapchat:before, 239 | .fi-social-spotify:before, 240 | .fi-social-squidoo:before, 241 | .fi-social-stack-overflow:before, 242 | .fi-social-steam:before, 243 | .fi-social-stumbleupon:before, 244 | .fi-social-treehouse:before, 245 | .fi-social-tumblr:before, 246 | .fi-social-twitter:before, 247 | .fi-social-vimeo:before, 248 | .fi-social-windows:before, 249 | .fi-social-xbox:before, 250 | .fi-social-yahoo:before, 251 | .fi-social-yelp:before, 252 | .fi-social-youtube:before, 253 | .fi-social-zerply:before, 254 | .fi-social-zurb:before, 255 | .fi-sound:before, 256 | .fi-star:before, 257 | .fi-stop:before, 258 | .fi-strikethrough:before, 259 | .fi-subscript:before, 260 | .fi-superscript:before, 261 | .fi-tablet-landscape:before, 262 | .fi-tablet-portrait:before, 263 | .fi-target-two:before, 264 | .fi-target:before, 265 | .fi-telephone-accessible:before, 266 | .fi-telephone:before, 267 | .fi-text-color:before, 268 | .fi-thumbnails:before, 269 | .fi-ticket:before, 270 | .fi-torso-business:before, 271 | .fi-torso-female:before, 272 | .fi-torso:before, 273 | .fi-torsos-all-female:before, 274 | .fi-torsos-all:before, 275 | .fi-torsos-female-male:before, 276 | .fi-torsos-male-female:before, 277 | .fi-torsos:before, 278 | .fi-trash:before, 279 | .fi-trees:before, 280 | .fi-trophy:before, 281 | .fi-underline:before, 282 | .fi-universal-access:before, 283 | .fi-unlink:before, 284 | .fi-unlock:before, 285 | .fi-upload-cloud:before, 286 | .fi-upload:before, 287 | .fi-usb:before, 288 | .fi-video:before, 289 | .fi-volume-none:before, 290 | .fi-volume-strike:before, 291 | .fi-volume:before, 292 | .fi-web:before, 293 | .fi-wheelchair:before, 294 | .fi-widget:before, 295 | .fi-wrench:before, 296 | .fi-x-circle:before, 297 | .fi-x:before, 298 | .fi-yen:before, 299 | .fi-zoom-in:before, 300 | .fi-zoom-out:before { 301 | font-family: "foundation-icons"; 302 | font-style: normal; 303 | font-weight: normal; 304 | font-variant: normal; 305 | text-transform: none; 306 | line-height: 1; 307 | -webkit-font-smoothing: antialiased; 308 | display: inline-block; 309 | text-decoration: inherit; 310 | } 311 | 312 | .fi-address-book:before { content: "\f100"; } 313 | .fi-alert:before { content: "\f101"; } 314 | .fi-align-center:before { content: "\f102"; } 315 | .fi-align-justify:before { content: "\f103"; } 316 | .fi-align-left:before { content: "\f104"; } 317 | .fi-align-right:before { content: "\f105"; } 318 | .fi-anchor:before { content: "\f106"; } 319 | .fi-annotate:before { content: "\f107"; } 320 | .fi-archive:before { content: "\f108"; } 321 | .fi-arrow-down:before { content: "\f109"; } 322 | .fi-arrow-left:before { content: "\f10a"; } 323 | .fi-arrow-right:before { content: "\f10b"; } 324 | .fi-arrow-up:before { content: "\f10c"; } 325 | .fi-arrows-compress:before { content: "\f10d"; } 326 | .fi-arrows-expand:before { content: "\f10e"; } 327 | .fi-arrows-in:before { content: "\f10f"; } 328 | .fi-arrows-out:before { content: "\f110"; } 329 | .fi-asl:before { content: "\f111"; } 330 | .fi-asterisk:before { content: "\f112"; } 331 | .fi-at-sign:before { content: "\f113"; } 332 | .fi-background-color:before { content: "\f114"; } 333 | .fi-battery-empty:before { content: "\f115"; } 334 | .fi-battery-full:before { content: "\f116"; } 335 | .fi-battery-half:before { content: "\f117"; } 336 | .fi-bitcoin-circle:before { content: "\f118"; } 337 | .fi-bitcoin:before { content: "\f119"; } 338 | .fi-blind:before { content: "\f11a"; } 339 | .fi-bluetooth:before { content: "\f11b"; } 340 | .fi-bold:before { content: "\f11c"; } 341 | .fi-book-bookmark:before { content: "\f11d"; } 342 | .fi-book:before { content: "\f11e"; } 343 | .fi-bookmark:before { content: "\f11f"; } 344 | .fi-braille:before { content: "\f120"; } 345 | .fi-burst-new:before { content: "\f121"; } 346 | .fi-burst-sale:before { content: "\f122"; } 347 | .fi-burst:before { content: "\f123"; } 348 | .fi-calendar:before { content: "\f124"; } 349 | .fi-camera:before { content: "\f125"; } 350 | .fi-check:before { content: "\f126"; } 351 | .fi-checkbox:before { content: "\f127"; } 352 | .fi-clipboard-notes:before { content: "\f128"; } 353 | .fi-clipboard-pencil:before { content: "\f129"; } 354 | .fi-clipboard:before { content: "\f12a"; } 355 | .fi-clock:before { content: "\f12b"; } 356 | .fi-closed-caption:before { content: "\f12c"; } 357 | .fi-cloud:before { content: "\f12d"; } 358 | .fi-comment-minus:before { content: "\f12e"; } 359 | .fi-comment-quotes:before { content: "\f12f"; } 360 | .fi-comment-video:before { content: "\f130"; } 361 | .fi-comment:before { content: "\f131"; } 362 | .fi-comments:before { content: "\f132"; } 363 | .fi-compass:before { content: "\f133"; } 364 | .fi-contrast:before { content: "\f134"; } 365 | .fi-credit-card:before { content: "\f135"; } 366 | .fi-crop:before { content: "\f136"; } 367 | .fi-crown:before { content: "\f137"; } 368 | .fi-css3:before { content: "\f138"; } 369 | .fi-database:before { content: "\f139"; } 370 | .fi-die-five:before { content: "\f13a"; } 371 | .fi-die-four:before { content: "\f13b"; } 372 | .fi-die-one:before { content: "\f13c"; } 373 | .fi-die-six:before { content: "\f13d"; } 374 | .fi-die-three:before { content: "\f13e"; } 375 | .fi-die-two:before { content: "\f13f"; } 376 | .fi-dislike:before { content: "\f140"; } 377 | .fi-dollar-bill:before { content: "\f141"; } 378 | .fi-dollar:before { content: "\f142"; } 379 | .fi-download:before { content: "\f143"; } 380 | .fi-eject:before { content: "\f144"; } 381 | .fi-elevator:before { content: "\f145"; } 382 | .fi-euro:before { content: "\f146"; } 383 | .fi-eye:before { content: "\f147"; } 384 | .fi-fast-forward:before { content: "\f148"; } 385 | .fi-female-symbol:before { content: "\f149"; } 386 | .fi-female:before { content: "\f14a"; } 387 | .fi-filter:before { content: "\f14b"; } 388 | .fi-first-aid:before { content: "\f14c"; } 389 | .fi-flag:before { content: "\f14d"; } 390 | .fi-folder-add:before { content: "\f14e"; } 391 | .fi-folder-lock:before { content: "\f14f"; } 392 | .fi-folder:before { content: "\f150"; } 393 | .fi-foot:before { content: "\f151"; } 394 | .fi-foundation:before { content: "\f152"; } 395 | .fi-graph-bar:before { content: "\f153"; } 396 | .fi-graph-horizontal:before { content: "\f154"; } 397 | .fi-graph-pie:before { content: "\f155"; } 398 | .fi-graph-trend:before { content: "\f156"; } 399 | .fi-guide-dog:before { content: "\f157"; } 400 | .fi-hearing-aid:before { content: "\f158"; } 401 | .fi-heart:before { content: "\f159"; } 402 | .fi-home:before { content: "\f15a"; } 403 | .fi-html5:before { content: "\f15b"; } 404 | .fi-indent-less:before { content: "\f15c"; } 405 | .fi-indent-more:before { content: "\f15d"; } 406 | .fi-info:before { content: "\f15e"; } 407 | .fi-italic:before { content: "\f15f"; } 408 | .fi-key:before { content: "\f160"; } 409 | .fi-laptop:before { content: "\f161"; } 410 | .fi-layout:before { content: "\f162"; } 411 | .fi-lightbulb:before { content: "\f163"; } 412 | .fi-like:before { content: "\f164"; } 413 | .fi-link:before { content: "\f165"; } 414 | .fi-list-bullet:before { content: "\f166"; } 415 | .fi-list-number:before { content: "\f167"; } 416 | .fi-list-thumbnails:before { content: "\f168"; } 417 | .fi-list:before { content: "\f169"; } 418 | .fi-lock:before { content: "\f16a"; } 419 | .fi-loop:before { content: "\f16b"; } 420 | .fi-magnifying-glass:before { content: "\f16c"; } 421 | .fi-mail:before { content: "\f16d"; } 422 | .fi-male-female:before { content: "\f16e"; } 423 | .fi-male-symbol:before { content: "\f16f"; } 424 | .fi-male:before { content: "\f170"; } 425 | .fi-map:before { content: "\f171"; } 426 | .fi-marker:before { content: "\f172"; } 427 | .fi-megaphone:before { content: "\f173"; } 428 | .fi-microphone:before { content: "\f174"; } 429 | .fi-minus-circle:before { content: "\f175"; } 430 | .fi-minus:before { content: "\f176"; } 431 | .fi-mobile-signal:before { content: "\f177"; } 432 | .fi-mobile:before { content: "\f178"; } 433 | .fi-monitor:before { content: "\f179"; } 434 | .fi-mountains:before { content: "\f17a"; } 435 | .fi-music:before { content: "\f17b"; } 436 | .fi-next:before { content: "\f17c"; } 437 | .fi-no-dogs:before { content: "\f17d"; } 438 | .fi-no-smoking:before { content: "\f17e"; } 439 | .fi-page-add:before { content: "\f17f"; } 440 | .fi-page-copy:before { content: "\f180"; } 441 | .fi-page-csv:before { content: "\f181"; } 442 | .fi-page-delete:before { content: "\f182"; } 443 | .fi-page-doc:before { content: "\f183"; } 444 | .fi-page-edit:before { content: "\f184"; } 445 | .fi-page-export-csv:before { content: "\f185"; } 446 | .fi-page-export-doc:before { content: "\f186"; } 447 | .fi-page-export-pdf:before { content: "\f187"; } 448 | .fi-page-export:before { content: "\f188"; } 449 | .fi-page-filled:before { content: "\f189"; } 450 | .fi-page-multiple:before { content: "\f18a"; } 451 | .fi-page-pdf:before { content: "\f18b"; } 452 | .fi-page-remove:before { content: "\f18c"; } 453 | .fi-page-search:before { content: "\f18d"; } 454 | .fi-page:before { content: "\f18e"; } 455 | .fi-paint-bucket:before { content: "\f18f"; } 456 | .fi-paperclip:before { content: "\f190"; } 457 | .fi-pause:before { content: "\f191"; } 458 | .fi-paw:before { content: "\f192"; } 459 | .fi-paypal:before { content: "\f193"; } 460 | .fi-pencil:before { content: "\f194"; } 461 | .fi-photo:before { content: "\f195"; } 462 | .fi-play-circle:before { content: "\f196"; } 463 | .fi-play-video:before { content: "\f197"; } 464 | .fi-play:before { content: "\f198"; } 465 | .fi-plus:before { content: "\f199"; } 466 | .fi-pound:before { content: "\f19a"; } 467 | .fi-power:before { content: "\f19b"; } 468 | .fi-previous:before { content: "\f19c"; } 469 | .fi-price-tag:before { content: "\f19d"; } 470 | .fi-pricetag-multiple:before { content: "\f19e"; } 471 | .fi-print:before { content: "\f19f"; } 472 | .fi-prohibited:before { content: "\f1a0"; } 473 | .fi-projection-screen:before { content: "\f1a1"; } 474 | .fi-puzzle:before { content: "\f1a2"; } 475 | .fi-quote:before { content: "\f1a3"; } 476 | .fi-record:before { content: "\f1a4"; } 477 | .fi-refresh:before { content: "\f1a5"; } 478 | .fi-results-demographics:before { content: "\f1a6"; } 479 | .fi-results:before { content: "\f1a7"; } 480 | .fi-rewind-ten:before { content: "\f1a8"; } 481 | .fi-rewind:before { content: "\f1a9"; } 482 | .fi-rss:before { content: "\f1aa"; } 483 | .fi-safety-cone:before { content: "\f1ab"; } 484 | .fi-save:before { content: "\f1ac"; } 485 | .fi-share:before { content: "\f1ad"; } 486 | .fi-sheriff-badge:before { content: "\f1ae"; } 487 | .fi-shield:before { content: "\f1af"; } 488 | .fi-shopping-bag:before { content: "\f1b0"; } 489 | .fi-shopping-cart:before { content: "\f1b1"; } 490 | .fi-shuffle:before { content: "\f1b2"; } 491 | .fi-skull:before { content: "\f1b3"; } 492 | .fi-social-500px:before { content: "\f1b4"; } 493 | .fi-social-adobe:before { content: "\f1b5"; } 494 | .fi-social-amazon:before { content: "\f1b6"; } 495 | .fi-social-android:before { content: "\f1b7"; } 496 | .fi-social-apple:before { content: "\f1b8"; } 497 | .fi-social-behance:before { content: "\f1b9"; } 498 | .fi-social-bing:before { content: "\f1ba"; } 499 | .fi-social-blogger:before { content: "\f1bb"; } 500 | .fi-social-delicious:before { content: "\f1bc"; } 501 | .fi-social-designer-news:before { content: "\f1bd"; } 502 | .fi-social-deviant-art:before { content: "\f1be"; } 503 | .fi-social-digg:before { content: "\f1bf"; } 504 | .fi-social-dribbble:before { content: "\f1c0"; } 505 | .fi-social-drive:before { content: "\f1c1"; } 506 | .fi-social-dropbox:before { content: "\f1c2"; } 507 | .fi-social-evernote:before { content: "\f1c3"; } 508 | .fi-social-facebook:before { content: "\f1c4"; } 509 | .fi-social-flickr:before { content: "\f1c5"; } 510 | .fi-social-forrst:before { content: "\f1c6"; } 511 | .fi-social-foursquare:before { content: "\f1c7"; } 512 | .fi-social-game-center:before { content: "\f1c8"; } 513 | .fi-social-github:before { content: "\f1c9"; } 514 | .fi-social-google-plus:before { content: "\f1ca"; } 515 | .fi-social-hacker-news:before { content: "\f1cb"; } 516 | .fi-social-hi5:before { content: "\f1cc"; } 517 | .fi-social-instagram:before { content: "\f1cd"; } 518 | .fi-social-joomla:before { content: "\f1ce"; } 519 | .fi-social-lastfm:before { content: "\f1cf"; } 520 | .fi-social-linkedin:before { content: "\f1d0"; } 521 | .fi-social-medium:before { content: "\f1d1"; } 522 | .fi-social-myspace:before { content: "\f1d2"; } 523 | .fi-social-orkut:before { content: "\f1d3"; } 524 | .fi-social-path:before { content: "\f1d4"; } 525 | .fi-social-picasa:before { content: "\f1d5"; } 526 | .fi-social-pinterest:before { content: "\f1d6"; } 527 | .fi-social-rdio:before { content: "\f1d7"; } 528 | .fi-social-reddit:before { content: "\f1d8"; } 529 | .fi-social-skillshare:before { content: "\f1d9"; } 530 | .fi-social-skype:before { content: "\f1da"; } 531 | .fi-social-smashing-mag:before { content: "\f1db"; } 532 | .fi-social-snapchat:before { content: "\f1dc"; } 533 | .fi-social-spotify:before { content: "\f1dd"; } 534 | .fi-social-squidoo:before { content: "\f1de"; } 535 | .fi-social-stack-overflow:before { content: "\f1df"; } 536 | .fi-social-steam:before { content: "\f1e0"; } 537 | .fi-social-stumbleupon:before { content: "\f1e1"; } 538 | .fi-social-treehouse:before { content: "\f1e2"; } 539 | .fi-social-tumblr:before { content: "\f1e3"; } 540 | .fi-social-twitter:before { content: "\f1e4"; } 541 | .fi-social-vimeo:before { content: "\f1e5"; } 542 | .fi-social-windows:before { content: "\f1e6"; } 543 | .fi-social-xbox:before { content: "\f1e7"; } 544 | .fi-social-yahoo:before { content: "\f1e8"; } 545 | .fi-social-yelp:before { content: "\f1e9"; } 546 | .fi-social-youtube:before { content: "\f1ea"; } 547 | .fi-social-zerply:before { content: "\f1eb"; } 548 | .fi-social-zurb:before { content: "\f1ec"; } 549 | .fi-sound:before { content: "\f1ed"; } 550 | .fi-star:before { content: "\f1ee"; } 551 | .fi-stop:before { content: "\f1ef"; } 552 | .fi-strikethrough:before { content: "\f1f0"; } 553 | .fi-subscript:before { content: "\f1f1"; } 554 | .fi-superscript:before { content: "\f1f2"; } 555 | .fi-tablet-landscape:before { content: "\f1f3"; } 556 | .fi-tablet-portrait:before { content: "\f1f4"; } 557 | .fi-target-two:before { content: "\f1f5"; } 558 | .fi-target:before { content: "\f1f6"; } 559 | .fi-telephone-accessible:before { content: "\f1f7"; } 560 | .fi-telephone:before { content: "\f1f8"; } 561 | .fi-text-color:before { content: "\f1f9"; } 562 | .fi-thumbnails:before { content: "\f1fa"; } 563 | .fi-ticket:before { content: "\f1fb"; } 564 | .fi-torso-business:before { content: "\f1fc"; } 565 | .fi-torso-female:before { content: "\f1fd"; } 566 | .fi-torso:before { content: "\f1fe"; } 567 | .fi-torsos-all-female:before { content: "\f1ff"; } 568 | .fi-torsos-all:before { content: "\f200"; } 569 | .fi-torsos-female-male:before { content: "\f201"; } 570 | .fi-torsos-male-female:before { content: "\f202"; } 571 | .fi-torsos:before { content: "\f203"; } 572 | .fi-trash:before { content: "\f204"; } 573 | .fi-trees:before { content: "\f205"; } 574 | .fi-trophy:before { content: "\f206"; } 575 | .fi-underline:before { content: "\f207"; } 576 | .fi-universal-access:before { content: "\f208"; } 577 | .fi-unlink:before { content: "\f209"; } 578 | .fi-unlock:before { content: "\f20a"; } 579 | .fi-upload-cloud:before { content: "\f20b"; } 580 | .fi-upload:before { content: "\f20c"; } 581 | .fi-usb:before { content: "\f20d"; } 582 | .fi-video:before { content: "\f20e"; } 583 | .fi-volume-none:before { content: "\f20f"; } 584 | .fi-volume-strike:before { content: "\f210"; } 585 | .fi-volume:before { content: "\f211"; } 586 | .fi-web:before { content: "\f212"; } 587 | .fi-wheelchair:before { content: "\f213"; } 588 | .fi-widget:before { content: "\f214"; } 589 | .fi-wrench:before { content: "\f215"; } 590 | .fi-x-circle:before { content: "\f216"; } 591 | .fi-x:before { content: "\f217"; } 592 | .fi-yen:before { content: "\f218"; } 593 | .fi-zoom-in:before { content: "\f219"; } 594 | .fi-zoom-out:before { content: "\f21a"; } 595 | -------------------------------------------------------------------------------- /src/main/webapp/css/font-awesome4.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | /* FONT PATH 6 | * -------------------------- */ 7 | @font-face { 8 | font-family: 'FontAwesome'; 9 | src: url('../fonts/fontawesome-webfont.eot?v=4.0.3'); 10 | src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.0.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.0.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular') format('svg'); 11 | font-weight: normal; 12 | font-style: normal; 13 | } 14 | .fa { 15 | display: inline-block; 16 | font-family: FontAwesome; 17 | font-style: normal; 18 | font-weight: normal; 19 | line-height: 1; 20 | -webkit-font-smoothing: antialiased; 21 | -moz-osx-font-smoothing: grayscale; 22 | } 23 | /* makes the font 33% larger relative to the icon container */ 24 | .fa-lg { 25 | font-size: 1.3333333333333333em; 26 | line-height: 0.75em; 27 | vertical-align: -15%; 28 | } 29 | .fa-2x { 30 | font-size: 2em; 31 | } 32 | .fa-3x { 33 | font-size: 3em; 34 | } 35 | .fa-4x { 36 | font-size: 4em; 37 | } 38 | .fa-5x { 39 | font-size: 5em; 40 | } 41 | .fa-fw { 42 | width: 1.2857142857142858em; 43 | text-align: center; 44 | } 45 | .fa-ul { 46 | padding-left: 0; 47 | margin-left: 2.142857142857143em; 48 | list-style-type: none; 49 | } 50 | .fa-ul > li { 51 | position: relative; 52 | } 53 | .fa-li { 54 | position: absolute; 55 | left: -2.142857142857143em; 56 | width: 2.142857142857143em; 57 | top: 0.14285714285714285em; 58 | text-align: center; 59 | } 60 | .fa-li.fa-lg { 61 | left: -1.8571428571428572em; 62 | } 63 | .fa-border { 64 | padding: .2em .25em .15em; 65 | border: solid 0.08em #eeeeee; 66 | border-radius: .1em; 67 | } 68 | .pull-right { 69 | float: right; 70 | } 71 | .pull-left { 72 | float: left; 73 | } 74 | .fa.pull-left { 75 | margin-right: .3em; 76 | } 77 | .fa.pull-right { 78 | margin-left: .3em; 79 | } 80 | .fa-spin { 81 | -webkit-animation: spin 2s infinite linear; 82 | -moz-animation: spin 2s infinite linear; 83 | -o-animation: spin 2s infinite linear; 84 | animation: spin 2s infinite linear; 85 | } 86 | @-moz-keyframes spin { 87 | 0% { 88 | -moz-transform: rotate(0deg); 89 | } 90 | 100% { 91 | -moz-transform: rotate(359deg); 92 | } 93 | } 94 | @-webkit-keyframes spin { 95 | 0% { 96 | -webkit-transform: rotate(0deg); 97 | } 98 | 100% { 99 | -webkit-transform: rotate(359deg); 100 | } 101 | } 102 | @-o-keyframes spin { 103 | 0% { 104 | -o-transform: rotate(0deg); 105 | } 106 | 100% { 107 | -o-transform: rotate(359deg); 108 | } 109 | } 110 | @-ms-keyframes spin { 111 | 0% { 112 | -ms-transform: rotate(0deg); 113 | } 114 | 100% { 115 | -ms-transform: rotate(359deg); 116 | } 117 | } 118 | @keyframes spin { 119 | 0% { 120 | transform: rotate(0deg); 121 | } 122 | 100% { 123 | transform: rotate(359deg); 124 | } 125 | } 126 | .fa-rotate-90 { 127 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 128 | -webkit-transform: rotate(90deg); 129 | -moz-transform: rotate(90deg); 130 | -ms-transform: rotate(90deg); 131 | -o-transform: rotate(90deg); 132 | transform: rotate(90deg); 133 | } 134 | .fa-rotate-180 { 135 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); 136 | -webkit-transform: rotate(180deg); 137 | -moz-transform: rotate(180deg); 138 | -ms-transform: rotate(180deg); 139 | -o-transform: rotate(180deg); 140 | transform: rotate(180deg); 141 | } 142 | .fa-rotate-270 { 143 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 144 | -webkit-transform: rotate(270deg); 145 | -moz-transform: rotate(270deg); 146 | -ms-transform: rotate(270deg); 147 | -o-transform: rotate(270deg); 148 | transform: rotate(270deg); 149 | } 150 | .fa-flip-horizontal { 151 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); 152 | -webkit-transform: scale(-1, 1); 153 | -moz-transform: scale(-1, 1); 154 | -ms-transform: scale(-1, 1); 155 | -o-transform: scale(-1, 1); 156 | transform: scale(-1, 1); 157 | } 158 | .fa-flip-vertical { 159 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); 160 | -webkit-transform: scale(1, -1); 161 | -moz-transform: scale(1, -1); 162 | -ms-transform: scale(1, -1); 163 | -o-transform: scale(1, -1); 164 | transform: scale(1, -1); 165 | } 166 | .fa-stack { 167 | position: relative; 168 | display: inline-block; 169 | width: 2em; 170 | height: 2em; 171 | line-height: 2em; 172 | vertical-align: middle; 173 | } 174 | .fa-stack-1x, 175 | .fa-stack-2x { 176 | position: absolute; 177 | left: 0; 178 | width: 100%; 179 | text-align: center; 180 | } 181 | .fa-stack-1x { 182 | line-height: inherit; 183 | } 184 | .fa-stack-2x { 185 | font-size: 2em; 186 | } 187 | .fa-inverse { 188 | color: #ffffff; 189 | } 190 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen 191 | readers do not read off random characters that represent icons */ 192 | .fa-glass:before { 193 | content: "\f000"; 194 | } 195 | .fa-music:before { 196 | content: "\f001"; 197 | } 198 | .fa-search:before { 199 | content: "\f002"; 200 | } 201 | .fa-envelope-o:before { 202 | content: "\f003"; 203 | } 204 | .fa-heart:before { 205 | content: "\f004"; 206 | } 207 | .fa-star:before { 208 | content: "\f005"; 209 | } 210 | .fa-star-o:before { 211 | content: "\f006"; 212 | } 213 | .fa-user:before { 214 | content: "\f007"; 215 | } 216 | .fa-film:before { 217 | content: "\f008"; 218 | } 219 | .fa-th-large:before { 220 | content: "\f009"; 221 | } 222 | .fa-th:before { 223 | content: "\f00a"; 224 | } 225 | .fa-th-list:before { 226 | content: "\f00b"; 227 | } 228 | .fa-check:before { 229 | content: "\f00c"; 230 | } 231 | .fa-times:before { 232 | content: "\f00d"; 233 | } 234 | .fa-search-plus:before { 235 | content: "\f00e"; 236 | } 237 | .fa-search-minus:before { 238 | content: "\f010"; 239 | } 240 | .fa-power-off:before { 241 | content: "\f011"; 242 | } 243 | .fa-signal:before { 244 | content: "\f012"; 245 | } 246 | .fa-gear:before, 247 | .fa-cog:before { 248 | content: "\f013"; 249 | } 250 | .fa-trash-o:before { 251 | content: "\f014"; 252 | } 253 | .fa-home:before { 254 | content: "\f015"; 255 | } 256 | .fa-file-o:before { 257 | content: "\f016"; 258 | } 259 | .fa-clock-o:before { 260 | content: "\f017"; 261 | } 262 | .fa-road:before { 263 | content: "\f018"; 264 | } 265 | .fa-download:before { 266 | content: "\f019"; 267 | } 268 | .fa-arrow-circle-o-down:before { 269 | content: "\f01a"; 270 | } 271 | .fa-arrow-circle-o-up:before { 272 | content: "\f01b"; 273 | } 274 | .fa-inbox:before { 275 | content: "\f01c"; 276 | } 277 | .fa-play-circle-o:before { 278 | content: "\f01d"; 279 | } 280 | .fa-rotate-right:before, 281 | .fa-repeat:before { 282 | content: "\f01e"; 283 | } 284 | .fa-refresh:before { 285 | content: "\f021"; 286 | } 287 | .fa-list-alt:before { 288 | content: "\f022"; 289 | } 290 | .fa-lock:before { 291 | content: "\f023"; 292 | } 293 | .fa-flag:before { 294 | content: "\f024"; 295 | } 296 | .fa-headphones:before { 297 | content: "\f025"; 298 | } 299 | .fa-volume-off:before { 300 | content: "\f026"; 301 | } 302 | .fa-volume-down:before { 303 | content: "\f027"; 304 | } 305 | .fa-volume-up:before { 306 | content: "\f028"; 307 | } 308 | .fa-qrcode:before { 309 | content: "\f029"; 310 | } 311 | .fa-barcode:before { 312 | content: "\f02a"; 313 | } 314 | .fa-tag:before { 315 | content: "\f02b"; 316 | } 317 | .fa-tags:before { 318 | content: "\f02c"; 319 | } 320 | .fa-book:before { 321 | content: "\f02d"; 322 | } 323 | .fa-bookmark:before { 324 | content: "\f02e"; 325 | } 326 | .fa-print:before { 327 | content: "\f02f"; 328 | } 329 | .fa-camera:before { 330 | content: "\f030"; 331 | } 332 | .fa-font:before { 333 | content: "\f031"; 334 | } 335 | .fa-bold:before { 336 | content: "\f032"; 337 | } 338 | .fa-italic:before { 339 | content: "\f033"; 340 | } 341 | .fa-text-height:before { 342 | content: "\f034"; 343 | } 344 | .fa-text-width:before { 345 | content: "\f035"; 346 | } 347 | .fa-align-left:before { 348 | content: "\f036"; 349 | } 350 | .fa-align-center:before { 351 | content: "\f037"; 352 | } 353 | .fa-align-right:before { 354 | content: "\f038"; 355 | } 356 | .fa-align-justify:before { 357 | content: "\f039"; 358 | } 359 | .fa-list:before { 360 | content: "\f03a"; 361 | } 362 | .fa-dedent:before, 363 | .fa-outdent:before { 364 | content: "\f03b"; 365 | } 366 | .fa-indent:before { 367 | content: "\f03c"; 368 | } 369 | .fa-video-camera:before { 370 | content: "\f03d"; 371 | } 372 | .fa-picture-o:before { 373 | content: "\f03e"; 374 | } 375 | .fa-pencil:before { 376 | content: "\f040"; 377 | } 378 | .fa-map-marker:before { 379 | content: "\f041"; 380 | } 381 | .fa-adjust:before { 382 | content: "\f042"; 383 | } 384 | .fa-tint:before { 385 | content: "\f043"; 386 | } 387 | .fa-edit:before, 388 | .fa-pencil-square-o:before { 389 | content: "\f044"; 390 | } 391 | .fa-share-square-o:before { 392 | content: "\f045"; 393 | } 394 | .fa-check-square-o:before { 395 | content: "\f046"; 396 | } 397 | .fa-arrows:before { 398 | content: "\f047"; 399 | } 400 | .fa-step-backward:before { 401 | content: "\f048"; 402 | } 403 | .fa-fast-backward:before { 404 | content: "\f049"; 405 | } 406 | .fa-backward:before { 407 | content: "\f04a"; 408 | } 409 | .fa-play:before { 410 | content: "\f04b"; 411 | } 412 | .fa-pause:before { 413 | content: "\f04c"; 414 | } 415 | .fa-stop:before { 416 | content: "\f04d"; 417 | } 418 | .fa-forward:before { 419 | content: "\f04e"; 420 | } 421 | .fa-fast-forward:before { 422 | content: "\f050"; 423 | } 424 | .fa-step-forward:before { 425 | content: "\f051"; 426 | } 427 | .fa-eject:before { 428 | content: "\f052"; 429 | } 430 | .fa-chevron-left:before { 431 | content: "\f053"; 432 | } 433 | .fa-chevron-right:before { 434 | content: "\f054"; 435 | } 436 | .fa-plus-circle:before { 437 | content: "\f055"; 438 | } 439 | .fa-minus-circle:before { 440 | content: "\f056"; 441 | } 442 | .fa-times-circle:before { 443 | content: "\f057"; 444 | } 445 | .fa-check-circle:before { 446 | content: "\f058"; 447 | } 448 | .fa-question-circle:before { 449 | content: "\f059"; 450 | } 451 | .fa-info-circle:before { 452 | content: "\f05a"; 453 | } 454 | .fa-crosshairs:before { 455 | content: "\f05b"; 456 | } 457 | .fa-times-circle-o:before { 458 | content: "\f05c"; 459 | } 460 | .fa-check-circle-o:before { 461 | content: "\f05d"; 462 | } 463 | .fa-ban:before { 464 | content: "\f05e"; 465 | } 466 | .fa-arrow-left:before { 467 | content: "\f060"; 468 | } 469 | .fa-arrow-right:before { 470 | content: "\f061"; 471 | } 472 | .fa-arrow-up:before { 473 | content: "\f062"; 474 | } 475 | .fa-arrow-down:before { 476 | content: "\f063"; 477 | } 478 | .fa-mail-forward:before, 479 | .fa-share:before { 480 | content: "\f064"; 481 | } 482 | .fa-expand:before { 483 | content: "\f065"; 484 | } 485 | .fa-compress:before { 486 | content: "\f066"; 487 | } 488 | .fa-plus:before { 489 | content: "\f067"; 490 | } 491 | .fa-minus:before { 492 | content: "\f068"; 493 | } 494 | .fa-asterisk:before { 495 | content: "\f069"; 496 | } 497 | .fa-exclamation-circle:before { 498 | content: "\f06a"; 499 | } 500 | .fa-gift:before { 501 | content: "\f06b"; 502 | } 503 | .fa-leaf:before { 504 | content: "\f06c"; 505 | } 506 | .fa-fire:before { 507 | content: "\f06d"; 508 | } 509 | .fa-eye:before { 510 | content: "\f06e"; 511 | } 512 | .fa-eye-slash:before { 513 | content: "\f070"; 514 | } 515 | .fa-warning:before, 516 | .fa-exclamation-triangle:before { 517 | content: "\f071"; 518 | } 519 | .fa-plane:before { 520 | content: "\f072"; 521 | } 522 | .fa-calendar:before { 523 | content: "\f073"; 524 | } 525 | .fa-random:before { 526 | content: "\f074"; 527 | } 528 | .fa-comment:before { 529 | content: "\f075"; 530 | } 531 | .fa-magnet:before { 532 | content: "\f076"; 533 | } 534 | .fa-chevron-up:before { 535 | content: "\f077"; 536 | } 537 | .fa-chevron-down:before { 538 | content: "\f078"; 539 | } 540 | .fa-retweet:before { 541 | content: "\f079"; 542 | } 543 | .fa-shopping-cart:before { 544 | content: "\f07a"; 545 | } 546 | .fa-folder:before { 547 | content: "\f07b"; 548 | } 549 | .fa-folder-open:before { 550 | content: "\f07c"; 551 | } 552 | .fa-arrows-v:before { 553 | content: "\f07d"; 554 | } 555 | .fa-arrows-h:before { 556 | content: "\f07e"; 557 | } 558 | .fa-bar-chart-o:before { 559 | content: "\f080"; 560 | } 561 | .fa-twitter-square:before { 562 | content: "\f081"; 563 | } 564 | .fa-facebook-square:before { 565 | content: "\f082"; 566 | } 567 | .fa-camera-retro:before { 568 | content: "\f083"; 569 | } 570 | .fa-key:before { 571 | content: "\f084"; 572 | } 573 | .fa-gears:before, 574 | .fa-cogs:before { 575 | content: "\f085"; 576 | } 577 | .fa-comments:before { 578 | content: "\f086"; 579 | } 580 | .fa-thumbs-o-up:before { 581 | content: "\f087"; 582 | } 583 | .fa-thumbs-o-down:before { 584 | content: "\f088"; 585 | } 586 | .fa-star-half:before { 587 | content: "\f089"; 588 | } 589 | .fa-heart-o:before { 590 | content: "\f08a"; 591 | } 592 | .fa-sign-out:before { 593 | content: "\f08b"; 594 | } 595 | .fa-linkedin-square:before { 596 | content: "\f08c"; 597 | } 598 | .fa-thumb-tack:before { 599 | content: "\f08d"; 600 | } 601 | .fa-external-link:before { 602 | content: "\f08e"; 603 | } 604 | .fa-sign-in:before { 605 | content: "\f090"; 606 | } 607 | .fa-trophy:before { 608 | content: "\f091"; 609 | } 610 | .fa-github-square:before { 611 | content: "\f092"; 612 | } 613 | .fa-upload:before { 614 | content: "\f093"; 615 | } 616 | .fa-lemon-o:before { 617 | content: "\f094"; 618 | } 619 | .fa-phone:before { 620 | content: "\f095"; 621 | } 622 | .fa-square-o:before { 623 | content: "\f096"; 624 | } 625 | .fa-bookmark-o:before { 626 | content: "\f097"; 627 | } 628 | .fa-phone-square:before { 629 | content: "\f098"; 630 | } 631 | .fa-twitter:before { 632 | content: "\f099"; 633 | } 634 | .fa-facebook:before { 635 | content: "\f09a"; 636 | } 637 | .fa-github:before { 638 | content: "\f09b"; 639 | } 640 | .fa-unlock:before { 641 | content: "\f09c"; 642 | } 643 | .fa-credit-card:before { 644 | content: "\f09d"; 645 | } 646 | .fa-rss:before { 647 | content: "\f09e"; 648 | } 649 | .fa-hdd-o:before { 650 | content: "\f0a0"; 651 | } 652 | .fa-bullhorn:before { 653 | content: "\f0a1"; 654 | } 655 | .fa-bell:before { 656 | content: "\f0f3"; 657 | } 658 | .fa-certificate:before { 659 | content: "\f0a3"; 660 | } 661 | .fa-hand-o-right:before { 662 | content: "\f0a4"; 663 | } 664 | .fa-hand-o-left:before { 665 | content: "\f0a5"; 666 | } 667 | .fa-hand-o-up:before { 668 | content: "\f0a6"; 669 | } 670 | .fa-hand-o-down:before { 671 | content: "\f0a7"; 672 | } 673 | .fa-arrow-circle-left:before { 674 | content: "\f0a8"; 675 | } 676 | .fa-arrow-circle-right:before { 677 | content: "\f0a9"; 678 | } 679 | .fa-arrow-circle-up:before { 680 | content: "\f0aa"; 681 | } 682 | .fa-arrow-circle-down:before { 683 | content: "\f0ab"; 684 | } 685 | .fa-globe:before { 686 | content: "\f0ac"; 687 | } 688 | .fa-wrench:before { 689 | content: "\f0ad"; 690 | } 691 | .fa-tasks:before { 692 | content: "\f0ae"; 693 | } 694 | .fa-filter:before { 695 | content: "\f0b0"; 696 | } 697 | .fa-briefcase:before { 698 | content: "\f0b1"; 699 | } 700 | .fa-arrows-alt:before { 701 | content: "\f0b2"; 702 | } 703 | .fa-group:before, 704 | .fa-users:before { 705 | content: "\f0c0"; 706 | } 707 | .fa-chain:before, 708 | .fa-link:before { 709 | content: "\f0c1"; 710 | } 711 | .fa-cloud:before { 712 | content: "\f0c2"; 713 | } 714 | .fa-flask:before { 715 | content: "\f0c3"; 716 | } 717 | .fa-cut:before, 718 | .fa-scissors:before { 719 | content: "\f0c4"; 720 | } 721 | .fa-copy:before, 722 | .fa-files-o:before { 723 | content: "\f0c5"; 724 | } 725 | .fa-paperclip:before { 726 | content: "\f0c6"; 727 | } 728 | .fa-save:before, 729 | .fa-floppy-o:before { 730 | content: "\f0c7"; 731 | } 732 | .fa-square:before { 733 | content: "\f0c8"; 734 | } 735 | .fa-bars:before { 736 | content: "\f0c9"; 737 | } 738 | .fa-list-ul:before { 739 | content: "\f0ca"; 740 | } 741 | .fa-list-ol:before { 742 | content: "\f0cb"; 743 | } 744 | .fa-strikethrough:before { 745 | content: "\f0cc"; 746 | } 747 | .fa-underline:before { 748 | content: "\f0cd"; 749 | } 750 | .fa-table:before { 751 | content: "\f0ce"; 752 | } 753 | .fa-magic:before { 754 | content: "\f0d0"; 755 | } 756 | .fa-truck:before { 757 | content: "\f0d1"; 758 | } 759 | .fa-pinterest:before { 760 | content: "\f0d2"; 761 | } 762 | .fa-pinterest-square:before { 763 | content: "\f0d3"; 764 | } 765 | .fa-google-plus-square:before { 766 | content: "\f0d4"; 767 | } 768 | .fa-google-plus:before { 769 | content: "\f0d5"; 770 | } 771 | .fa-money:before { 772 | content: "\f0d6"; 773 | } 774 | .fa-caret-down:before { 775 | content: "\f0d7"; 776 | } 777 | .fa-caret-up:before { 778 | content: "\f0d8"; 779 | } 780 | .fa-caret-left:before { 781 | content: "\f0d9"; 782 | } 783 | .fa-caret-right:before { 784 | content: "\f0da"; 785 | } 786 | .fa-columns:before { 787 | content: "\f0db"; 788 | } 789 | .fa-unsorted:before, 790 | .fa-sort:before { 791 | content: "\f0dc"; 792 | } 793 | .fa-sort-down:before, 794 | .fa-sort-asc:before { 795 | content: "\f0dd"; 796 | } 797 | .fa-sort-up:before, 798 | .fa-sort-desc:before { 799 | content: "\f0de"; 800 | } 801 | .fa-envelope:before { 802 | content: "\f0e0"; 803 | } 804 | .fa-linkedin:before { 805 | content: "\f0e1"; 806 | } 807 | .fa-rotate-left:before, 808 | .fa-undo:before { 809 | content: "\f0e2"; 810 | } 811 | .fa-legal:before, 812 | .fa-gavel:before { 813 | content: "\f0e3"; 814 | } 815 | .fa-dashboard:before, 816 | .fa-tachometer:before { 817 | content: "\f0e4"; 818 | } 819 | .fa-comment-o:before { 820 | content: "\f0e5"; 821 | } 822 | .fa-comments-o:before { 823 | content: "\f0e6"; 824 | } 825 | .fa-flash:before, 826 | .fa-bolt:before { 827 | content: "\f0e7"; 828 | } 829 | .fa-sitemap:before { 830 | content: "\f0e8"; 831 | } 832 | .fa-umbrella:before { 833 | content: "\f0e9"; 834 | } 835 | .fa-paste:before, 836 | .fa-clipboard:before { 837 | content: "\f0ea"; 838 | } 839 | .fa-lightbulb-o:before { 840 | content: "\f0eb"; 841 | } 842 | .fa-exchange:before { 843 | content: "\f0ec"; 844 | } 845 | .fa-cloud-download:before { 846 | content: "\f0ed"; 847 | } 848 | .fa-cloud-upload:before { 849 | content: "\f0ee"; 850 | } 851 | .fa-user-md:before { 852 | content: "\f0f0"; 853 | } 854 | .fa-stethoscope:before { 855 | content: "\f0f1"; 856 | } 857 | .fa-suitcase:before { 858 | content: "\f0f2"; 859 | } 860 | .fa-bell-o:before { 861 | content: "\f0a2"; 862 | } 863 | .fa-coffee:before { 864 | content: "\f0f4"; 865 | } 866 | .fa-cutlery:before { 867 | content: "\f0f5"; 868 | } 869 | .fa-file-text-o:before { 870 | content: "\f0f6"; 871 | } 872 | .fa-building-o:before { 873 | content: "\f0f7"; 874 | } 875 | .fa-hospital-o:before { 876 | content: "\f0f8"; 877 | } 878 | .fa-ambulance:before { 879 | content: "\f0f9"; 880 | } 881 | .fa-medkit:before { 882 | content: "\f0fa"; 883 | } 884 | .fa-fighter-jet:before { 885 | content: "\f0fb"; 886 | } 887 | .fa-beer:before { 888 | content: "\f0fc"; 889 | } 890 | .fa-h-square:before { 891 | content: "\f0fd"; 892 | } 893 | .fa-plus-square:before { 894 | content: "\f0fe"; 895 | } 896 | .fa-angle-double-left:before { 897 | content: "\f100"; 898 | } 899 | .fa-angle-double-right:before { 900 | content: "\f101"; 901 | } 902 | .fa-angle-double-up:before { 903 | content: "\f102"; 904 | } 905 | .fa-angle-double-down:before { 906 | content: "\f103"; 907 | } 908 | .fa-angle-left:before { 909 | content: "\f104"; 910 | } 911 | .fa-angle-right:before { 912 | content: "\f105"; 913 | } 914 | .fa-angle-up:before { 915 | content: "\f106"; 916 | } 917 | .fa-angle-down:before { 918 | content: "\f107"; 919 | } 920 | .fa-desktop:before { 921 | content: "\f108"; 922 | } 923 | .fa-laptop:before { 924 | content: "\f109"; 925 | } 926 | .fa-tablet:before { 927 | content: "\f10a"; 928 | } 929 | .fa-mobile-phone:before, 930 | .fa-mobile:before { 931 | content: "\f10b"; 932 | } 933 | .fa-circle-o:before { 934 | content: "\f10c"; 935 | } 936 | .fa-quote-left:before { 937 | content: "\f10d"; 938 | } 939 | .fa-quote-right:before { 940 | content: "\f10e"; 941 | } 942 | .fa-spinner:before { 943 | content: "\f110"; 944 | } 945 | .fa-circle:before { 946 | content: "\f111"; 947 | } 948 | .fa-mail-reply:before, 949 | .fa-reply:before { 950 | content: "\f112"; 951 | } 952 | .fa-github-alt:before { 953 | content: "\f113"; 954 | } 955 | .fa-folder-o:before { 956 | content: "\f114"; 957 | } 958 | .fa-folder-open-o:before { 959 | content: "\f115"; 960 | } 961 | .fa-smile-o:before { 962 | content: "\f118"; 963 | } 964 | .fa-frown-o:before { 965 | content: "\f119"; 966 | } 967 | .fa-meh-o:before { 968 | content: "\f11a"; 969 | } 970 | .fa-gamepad:before { 971 | content: "\f11b"; 972 | } 973 | .fa-keyboard-o:before { 974 | content: "\f11c"; 975 | } 976 | .fa-flag-o:before { 977 | content: "\f11d"; 978 | } 979 | .fa-flag-checkered:before { 980 | content: "\f11e"; 981 | } 982 | .fa-terminal:before { 983 | content: "\f120"; 984 | } 985 | .fa-code:before { 986 | content: "\f121"; 987 | } 988 | .fa-reply-all:before { 989 | content: "\f122"; 990 | } 991 | .fa-mail-reply-all:before { 992 | content: "\f122"; 993 | } 994 | .fa-star-half-empty:before, 995 | .fa-star-half-full:before, 996 | .fa-star-half-o:before { 997 | content: "\f123"; 998 | } 999 | .fa-location-arrow:before { 1000 | content: "\f124"; 1001 | } 1002 | .fa-crop:before { 1003 | content: "\f125"; 1004 | } 1005 | .fa-code-fork:before { 1006 | content: "\f126"; 1007 | } 1008 | .fa-unlink:before, 1009 | .fa-chain-broken:before { 1010 | content: "\f127"; 1011 | } 1012 | .fa-question:before { 1013 | content: "\f128"; 1014 | } 1015 | .fa-info:before { 1016 | content: "\f129"; 1017 | } 1018 | .fa-exclamation:before { 1019 | content: "\f12a"; 1020 | } 1021 | .fa-superscript:before { 1022 | content: "\f12b"; 1023 | } 1024 | .fa-subscript:before { 1025 | content: "\f12c"; 1026 | } 1027 | .fa-eraser:before { 1028 | content: "\f12d"; 1029 | } 1030 | .fa-puzzle-piece:before { 1031 | content: "\f12e"; 1032 | } 1033 | .fa-microphone:before { 1034 | content: "\f130"; 1035 | } 1036 | .fa-microphone-slash:before { 1037 | content: "\f131"; 1038 | } 1039 | .fa-shield:before { 1040 | content: "\f132"; 1041 | } 1042 | .fa-calendar-o:before { 1043 | content: "\f133"; 1044 | } 1045 | .fa-fire-extinguisher:before { 1046 | content: "\f134"; 1047 | } 1048 | .fa-rocket:before { 1049 | content: "\f135"; 1050 | } 1051 | .fa-maxcdn:before { 1052 | content: "\f136"; 1053 | } 1054 | .fa-chevron-circle-left:before { 1055 | content: "\f137"; 1056 | } 1057 | .fa-chevron-circle-right:before { 1058 | content: "\f138"; 1059 | } 1060 | .fa-chevron-circle-up:before { 1061 | content: "\f139"; 1062 | } 1063 | .fa-chevron-circle-down:before { 1064 | content: "\f13a"; 1065 | } 1066 | .fa-html5:before { 1067 | content: "\f13b"; 1068 | } 1069 | .fa-css3:before { 1070 | content: "\f13c"; 1071 | } 1072 | .fa-anchor:before { 1073 | content: "\f13d"; 1074 | } 1075 | .fa-unlock-alt:before { 1076 | content: "\f13e"; 1077 | } 1078 | .fa-bullseye:before { 1079 | content: "\f140"; 1080 | } 1081 | .fa-ellipsis-h:before { 1082 | content: "\f141"; 1083 | } 1084 | .fa-ellipsis-v:before { 1085 | content: "\f142"; 1086 | } 1087 | .fa-rss-square:before { 1088 | content: "\f143"; 1089 | } 1090 | .fa-play-circle:before { 1091 | content: "\f144"; 1092 | } 1093 | .fa-ticket:before { 1094 | content: "\f145"; 1095 | } 1096 | .fa-minus-square:before { 1097 | content: "\f146"; 1098 | } 1099 | .fa-minus-square-o:before { 1100 | content: "\f147"; 1101 | } 1102 | .fa-level-up:before { 1103 | content: "\f148"; 1104 | } 1105 | .fa-level-down:before { 1106 | content: "\f149"; 1107 | } 1108 | .fa-check-square:before { 1109 | content: "\f14a"; 1110 | } 1111 | .fa-pencil-square:before { 1112 | content: "\f14b"; 1113 | } 1114 | .fa-external-link-square:before { 1115 | content: "\f14c"; 1116 | } 1117 | .fa-share-square:before { 1118 | content: "\f14d"; 1119 | } 1120 | .fa-compass:before { 1121 | content: "\f14e"; 1122 | } 1123 | .fa-toggle-down:before, 1124 | .fa-caret-square-o-down:before { 1125 | content: "\f150"; 1126 | } 1127 | .fa-toggle-up:before, 1128 | .fa-caret-square-o-up:before { 1129 | content: "\f151"; 1130 | } 1131 | .fa-toggle-right:before, 1132 | .fa-caret-square-o-right:before { 1133 | content: "\f152"; 1134 | } 1135 | .fa-euro:before, 1136 | .fa-eur:before { 1137 | content: "\f153"; 1138 | } 1139 | .fa-gbp:before { 1140 | content: "\f154"; 1141 | } 1142 | .fa-dollar:before, 1143 | .fa-usd:before { 1144 | content: "\f155"; 1145 | } 1146 | .fa-rupee:before, 1147 | .fa-inr:before { 1148 | content: "\f156"; 1149 | } 1150 | .fa-cny:before, 1151 | .fa-rmb:before, 1152 | .fa-yen:before, 1153 | .fa-jpy:before { 1154 | content: "\f157"; 1155 | } 1156 | .fa-ruble:before, 1157 | .fa-rouble:before, 1158 | .fa-rub:before { 1159 | content: "\f158"; 1160 | } 1161 | .fa-won:before, 1162 | .fa-krw:before { 1163 | content: "\f159"; 1164 | } 1165 | .fa-bitcoin:before, 1166 | .fa-btc:before { 1167 | content: "\f15a"; 1168 | } 1169 | .fa-file:before { 1170 | content: "\f15b"; 1171 | } 1172 | .fa-file-text:before { 1173 | content: "\f15c"; 1174 | } 1175 | .fa-sort-alpha-asc:before { 1176 | content: "\f15d"; 1177 | } 1178 | .fa-sort-alpha-desc:before { 1179 | content: "\f15e"; 1180 | } 1181 | .fa-sort-amount-asc:before { 1182 | content: "\f160"; 1183 | } 1184 | .fa-sort-amount-desc:before { 1185 | content: "\f161"; 1186 | } 1187 | .fa-sort-numeric-asc:before { 1188 | content: "\f162"; 1189 | } 1190 | .fa-sort-numeric-desc:before { 1191 | content: "\f163"; 1192 | } 1193 | .fa-thumbs-up:before { 1194 | content: "\f164"; 1195 | } 1196 | .fa-thumbs-down:before { 1197 | content: "\f165"; 1198 | } 1199 | .fa-youtube-square:before { 1200 | content: "\f166"; 1201 | } 1202 | .fa-youtube:before { 1203 | content: "\f167"; 1204 | } 1205 | .fa-xing:before { 1206 | content: "\f168"; 1207 | } 1208 | .fa-xing-square:before { 1209 | content: "\f169"; 1210 | } 1211 | .fa-youtube-play:before { 1212 | content: "\f16a"; 1213 | } 1214 | .fa-dropbox:before { 1215 | content: "\f16b"; 1216 | } 1217 | .fa-stack-overflow:before { 1218 | content: "\f16c"; 1219 | } 1220 | .fa-instagram:before { 1221 | content: "\f16d"; 1222 | } 1223 | .fa-flickr:before { 1224 | content: "\f16e"; 1225 | } 1226 | .fa-adn:before { 1227 | content: "\f170"; 1228 | } 1229 | .fa-bitbucket:before { 1230 | content: "\f171"; 1231 | } 1232 | .fa-bitbucket-square:before { 1233 | content: "\f172"; 1234 | } 1235 | .fa-tumblr:before { 1236 | content: "\f173"; 1237 | } 1238 | .fa-tumblr-square:before { 1239 | content: "\f174"; 1240 | } 1241 | .fa-long-arrow-down:before { 1242 | content: "\f175"; 1243 | } 1244 | .fa-long-arrow-up:before { 1245 | content: "\f176"; 1246 | } 1247 | .fa-long-arrow-left:before { 1248 | content: "\f177"; 1249 | } 1250 | .fa-long-arrow-right:before { 1251 | content: "\f178"; 1252 | } 1253 | .fa-apple:before { 1254 | content: "\f179"; 1255 | } 1256 | .fa-windows:before { 1257 | content: "\f17a"; 1258 | } 1259 | .fa-android:before { 1260 | content: "\f17b"; 1261 | } 1262 | .fa-linux:before { 1263 | content: "\f17c"; 1264 | } 1265 | .fa-dribbble:before { 1266 | content: "\f17d"; 1267 | } 1268 | .fa-skype:before { 1269 | content: "\f17e"; 1270 | } 1271 | .fa-foursquare:before { 1272 | content: "\f180"; 1273 | } 1274 | .fa-trello:before { 1275 | content: "\f181"; 1276 | } 1277 | .fa-female:before { 1278 | content: "\f182"; 1279 | } 1280 | .fa-male:before { 1281 | content: "\f183"; 1282 | } 1283 | .fa-gittip:before { 1284 | content: "\f184"; 1285 | } 1286 | .fa-sun-o:before { 1287 | content: "\f185"; 1288 | } 1289 | .fa-moon-o:before { 1290 | content: "\f186"; 1291 | } 1292 | .fa-archive:before { 1293 | content: "\f187"; 1294 | } 1295 | .fa-bug:before { 1296 | content: "\f188"; 1297 | } 1298 | .fa-vk:before { 1299 | content: "\f189"; 1300 | } 1301 | .fa-weibo:before { 1302 | content: "\f18a"; 1303 | } 1304 | .fa-renren:before { 1305 | content: "\f18b"; 1306 | } 1307 | .fa-pagelines:before { 1308 | content: "\f18c"; 1309 | } 1310 | .fa-stack-exchange:before { 1311 | content: "\f18d"; 1312 | } 1313 | .fa-arrow-circle-o-right:before { 1314 | content: "\f18e"; 1315 | } 1316 | .fa-arrow-circle-o-left:before { 1317 | content: "\f190"; 1318 | } 1319 | .fa-toggle-left:before, 1320 | .fa-caret-square-o-left:before { 1321 | content: "\f191"; 1322 | } 1323 | .fa-dot-circle-o:before { 1324 | content: "\f192"; 1325 | } 1326 | .fa-wheelchair:before { 1327 | content: "\f193"; 1328 | } 1329 | .fa-vimeo-square:before { 1330 | content: "\f194"; 1331 | } 1332 | .fa-turkish-lira:before, 1333 | .fa-try:before { 1334 | content: "\f195"; 1335 | } 1336 | .fa-plus-square-o:before { 1337 | content: "\f196"; 1338 | } 1339 | -------------------------------------------------------------------------------- /src/main/webapp/css/font-awesome3.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 3.2.1 3 | * the iconic font designed for Bootstrap 4 | * ------------------------------------------------------------------------------ 5 | * The full suite of pictographic icons, examples, and documentation can be 6 | * found at http://fontawesome.io. Stay up to date on Twitter at 7 | * http://twitter.com/fontawesome. 8 | * 9 | * License 10 | * ------------------------------------------------------------------------------ 11 | * - The Font Awesome font is licensed under SIL OFL 1.1 - 12 | * http://scripts.sil.org/OFL 13 | * - Font Awesome CSS, LESS, and SASS files are licensed under MIT License - 14 | * http://opensource.org/licenses/mit-license.html 15 | * - Font Awesome documentation licensed under CC BY 3.0 - 16 | * http://creativecommons.org/licenses/by/3.0/ 17 | * - Attribution is no longer required in Font Awesome 3.0, but much appreciated: 18 | * "Font Awesome by Dave Gandy - http://fontawesome.io" 19 | * 20 | * Author - Dave Gandy 21 | * ------------------------------------------------------------------------------ 22 | * Email: dave@fontawesome.io 23 | * Twitter: http://twitter.com/davegandy 24 | * Work: Lead Product Designer @ Kyruus - http://kyruus.com 25 | */ 26 | /* FONT PATH 27 | * -------------------------- */ 28 | @font-face { 29 | font-family: 'FontAwesome'; 30 | src: url('../fonts/fontawesome-webfont.eot?v=3.2.1'); 31 | src: url('../fonts/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../fonts/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg'); 32 | font-weight: normal; 33 | font-style: normal; 34 | } 35 | /* FONT AWESOME CORE 36 | * -------------------------- */ 37 | [class^="icon-"], 38 | [class*=" icon-"] { 39 | font-family: FontAwesome; 40 | font-weight: normal; 41 | font-style: normal; 42 | text-decoration: inherit; 43 | -webkit-font-smoothing: antialiased; 44 | *margin-right: .3em; 45 | } 46 | [class^="icon-"]:before, 47 | [class*=" icon-"]:before { 48 | text-decoration: inherit; 49 | display: inline-block; 50 | speak: none; 51 | } 52 | /* makes the font 33% larger relative to the icon container */ 53 | .icon-large:before { 54 | vertical-align: -10%; 55 | font-size: 1.3333333333333333em; 56 | } 57 | /* makes sure icons active on rollover in links */ 58 | a [class^="icon-"], 59 | a [class*=" icon-"] { 60 | display: inline; 61 | } 62 | /* increased font size for icon-large */ 63 | [class^="icon-"].icon-fixed-width, 64 | [class*=" icon-"].icon-fixed-width { 65 | display: inline-block; 66 | width: 1.1428571428571428em; 67 | text-align: right; 68 | padding-right: 0.2857142857142857em; 69 | } 70 | [class^="icon-"].icon-fixed-width.icon-large, 71 | [class*=" icon-"].icon-fixed-width.icon-large { 72 | width: 1.4285714285714286em; 73 | } 74 | .icons-ul { 75 | margin-left: 2.142857142857143em; 76 | list-style-type: none; 77 | } 78 | .icons-ul > li { 79 | position: relative; 80 | } 81 | .icons-ul .icon-li { 82 | position: absolute; 83 | left: -2.142857142857143em; 84 | width: 2.142857142857143em; 85 | text-align: center; 86 | line-height: inherit; 87 | } 88 | [class^="icon-"].hide, 89 | [class*=" icon-"].hide { 90 | display: none; 91 | } 92 | .icon-muted { 93 | color: #eeeeee; 94 | } 95 | .icon-light { 96 | color: #ffffff; 97 | } 98 | .icon-dark { 99 | color: #333333; 100 | } 101 | .icon-border { 102 | border: solid 1px #eeeeee; 103 | padding: .2em .25em .15em; 104 | -webkit-border-radius: 3px; 105 | -moz-border-radius: 3px; 106 | border-radius: 3px; 107 | } 108 | .icon-2x { 109 | font-size: 2em; 110 | } 111 | .icon-2x.icon-border { 112 | border-width: 2px; 113 | -webkit-border-radius: 4px; 114 | -moz-border-radius: 4px; 115 | border-radius: 4px; 116 | } 117 | .icon-3x { 118 | font-size: 3em; 119 | } 120 | .icon-3x.icon-border { 121 | border-width: 3px; 122 | -webkit-border-radius: 5px; 123 | -moz-border-radius: 5px; 124 | border-radius: 5px; 125 | } 126 | .icon-4x { 127 | font-size: 4em; 128 | } 129 | .icon-4x.icon-border { 130 | border-width: 4px; 131 | -webkit-border-radius: 6px; 132 | -moz-border-radius: 6px; 133 | border-radius: 6px; 134 | } 135 | .icon-5x { 136 | font-size: 5em; 137 | } 138 | .icon-5x.icon-border { 139 | border-width: 5px; 140 | -webkit-border-radius: 7px; 141 | -moz-border-radius: 7px; 142 | border-radius: 7px; 143 | } 144 | .pull-right { 145 | float: right; 146 | } 147 | .pull-left { 148 | float: left; 149 | } 150 | [class^="icon-"].pull-left, 151 | [class*=" icon-"].pull-left { 152 | margin-right: .3em; 153 | } 154 | [class^="icon-"].pull-right, 155 | [class*=" icon-"].pull-right { 156 | margin-left: .3em; 157 | } 158 | /* BOOTSTRAP SPECIFIC CLASSES 159 | * -------------------------- */ 160 | /* Bootstrap 2.0 sprites.less reset */ 161 | [class^="icon-"], 162 | [class*=" icon-"] { 163 | display: inline; 164 | width: auto; 165 | height: auto; 166 | line-height: normal; 167 | vertical-align: baseline; 168 | background-image: none; 169 | background-position: 0% 0%; 170 | background-repeat: repeat; 171 | margin-top: 0; 172 | } 173 | /* more sprites.less reset */ 174 | .icon-white, 175 | .nav-pills > .active > a > [class^="icon-"], 176 | .nav-pills > .active > a > [class*=" icon-"], 177 | .nav-list > .active > a > [class^="icon-"], 178 | .nav-list > .active > a > [class*=" icon-"], 179 | .navbar-inverse .nav > .active > a > [class^="icon-"], 180 | .navbar-inverse .nav > .active > a > [class*=" icon-"], 181 | .dropdown-menu > li > a:hover > [class^="icon-"], 182 | .dropdown-menu > li > a:hover > [class*=" icon-"], 183 | .dropdown-menu > .active > a > [class^="icon-"], 184 | .dropdown-menu > .active > a > [class*=" icon-"], 185 | .dropdown-submenu:hover > a > [class^="icon-"], 186 | .dropdown-submenu:hover > a > [class*=" icon-"] { 187 | background-image: none; 188 | } 189 | /* keeps Bootstrap styles with and without icons the same */ 190 | .btn [class^="icon-"].icon-large, 191 | .nav [class^="icon-"].icon-large, 192 | .btn [class*=" icon-"].icon-large, 193 | .nav [class*=" icon-"].icon-large { 194 | line-height: .9em; 195 | } 196 | .btn [class^="icon-"].icon-spin, 197 | .nav [class^="icon-"].icon-spin, 198 | .btn [class*=" icon-"].icon-spin, 199 | .nav [class*=" icon-"].icon-spin { 200 | display: inline-block; 201 | } 202 | .nav-tabs [class^="icon-"], 203 | .nav-pills [class^="icon-"], 204 | .nav-tabs [class*=" icon-"], 205 | .nav-pills [class*=" icon-"], 206 | .nav-tabs [class^="icon-"].icon-large, 207 | .nav-pills [class^="icon-"].icon-large, 208 | .nav-tabs [class*=" icon-"].icon-large, 209 | .nav-pills [class*=" icon-"].icon-large { 210 | line-height: .9em; 211 | } 212 | .btn [class^="icon-"].pull-left.icon-2x, 213 | .btn [class*=" icon-"].pull-left.icon-2x, 214 | .btn [class^="icon-"].pull-right.icon-2x, 215 | .btn [class*=" icon-"].pull-right.icon-2x { 216 | margin-top: .18em; 217 | } 218 | .btn [class^="icon-"].icon-spin.icon-large, 219 | .btn [class*=" icon-"].icon-spin.icon-large { 220 | line-height: .8em; 221 | } 222 | .btn.btn-small [class^="icon-"].pull-left.icon-2x, 223 | .btn.btn-small [class*=" icon-"].pull-left.icon-2x, 224 | .btn.btn-small [class^="icon-"].pull-right.icon-2x, 225 | .btn.btn-small [class*=" icon-"].pull-right.icon-2x { 226 | margin-top: .25em; 227 | } 228 | .btn.btn-large [class^="icon-"], 229 | .btn.btn-large [class*=" icon-"] { 230 | margin-top: 0; 231 | } 232 | .btn.btn-large [class^="icon-"].pull-left.icon-2x, 233 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x, 234 | .btn.btn-large [class^="icon-"].pull-right.icon-2x, 235 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x { 236 | margin-top: .05em; 237 | } 238 | .btn.btn-large [class^="icon-"].pull-left.icon-2x, 239 | .btn.btn-large [class*=" icon-"].pull-left.icon-2x { 240 | margin-right: .2em; 241 | } 242 | .btn.btn-large [class^="icon-"].pull-right.icon-2x, 243 | .btn.btn-large [class*=" icon-"].pull-right.icon-2x { 244 | margin-left: .2em; 245 | } 246 | /* Fixes alignment in nav lists */ 247 | .nav-list [class^="icon-"], 248 | .nav-list [class*=" icon-"] { 249 | line-height: inherit; 250 | } 251 | /* EXTRAS 252 | * -------------------------- */ 253 | /* Stacked and layered icon */ 254 | .icon-stack { 255 | position: relative; 256 | display: inline-block; 257 | width: 2em; 258 | height: 2em; 259 | line-height: 2em; 260 | vertical-align: -35%; 261 | } 262 | .icon-stack [class^="icon-"], 263 | .icon-stack [class*=" icon-"] { 264 | display: block; 265 | text-align: center; 266 | position: absolute; 267 | width: 100%; 268 | height: 100%; 269 | font-size: 1em; 270 | line-height: inherit; 271 | *line-height: 2em; 272 | } 273 | .icon-stack .icon-stack-base { 274 | font-size: 2em; 275 | *line-height: 1em; 276 | } 277 | /* Animated rotating icon */ 278 | .icon-spin { 279 | display: inline-block; 280 | -moz-animation: spin 2s infinite linear; 281 | -o-animation: spin 2s infinite linear; 282 | -webkit-animation: spin 2s infinite linear; 283 | animation: spin 2s infinite linear; 284 | } 285 | /* Prevent stack and spinners from being taken inline when inside a link */ 286 | a .icon-stack, 287 | a .icon-spin { 288 | display: inline-block; 289 | text-decoration: none; 290 | } 291 | @-moz-keyframes spin { 292 | 0% { 293 | -moz-transform: rotate(0deg); 294 | } 295 | 100% { 296 | -moz-transform: rotate(359deg); 297 | } 298 | } 299 | @-webkit-keyframes spin { 300 | 0% { 301 | -webkit-transform: rotate(0deg); 302 | } 303 | 100% { 304 | -webkit-transform: rotate(359deg); 305 | } 306 | } 307 | @-o-keyframes spin { 308 | 0% { 309 | -o-transform: rotate(0deg); 310 | } 311 | 100% { 312 | -o-transform: rotate(359deg); 313 | } 314 | } 315 | @-ms-keyframes spin { 316 | 0% { 317 | -ms-transform: rotate(0deg); 318 | } 319 | 100% { 320 | -ms-transform: rotate(359deg); 321 | } 322 | } 323 | @keyframes spin { 324 | 0% { 325 | transform: rotate(0deg); 326 | } 327 | 100% { 328 | transform: rotate(359deg); 329 | } 330 | } 331 | /* Icon rotations and mirroring */ 332 | .icon-rotate-90:before { 333 | -webkit-transform: rotate(90deg); 334 | -moz-transform: rotate(90deg); 335 | -ms-transform: rotate(90deg); 336 | -o-transform: rotate(90deg); 337 | transform: rotate(90deg); 338 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 339 | } 340 | .icon-rotate-180:before { 341 | -webkit-transform: rotate(180deg); 342 | -moz-transform: rotate(180deg); 343 | -ms-transform: rotate(180deg); 344 | -o-transform: rotate(180deg); 345 | transform: rotate(180deg); 346 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); 347 | } 348 | .icon-rotate-270:before { 349 | -webkit-transform: rotate(270deg); 350 | -moz-transform: rotate(270deg); 351 | -ms-transform: rotate(270deg); 352 | -o-transform: rotate(270deg); 353 | transform: rotate(270deg); 354 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 355 | } 356 | .icon-flip-horizontal:before { 357 | -webkit-transform: scale(-1, 1); 358 | -moz-transform: scale(-1, 1); 359 | -ms-transform: scale(-1, 1); 360 | -o-transform: scale(-1, 1); 361 | transform: scale(-1, 1); 362 | } 363 | .icon-flip-vertical:before { 364 | -webkit-transform: scale(1, -1); 365 | -moz-transform: scale(1, -1); 366 | -ms-transform: scale(1, -1); 367 | -o-transform: scale(1, -1); 368 | transform: scale(1, -1); 369 | } 370 | /* ensure rotation occurs inside anchor tags */ 371 | a .icon-rotate-90:before, 372 | a .icon-rotate-180:before, 373 | a .icon-rotate-270:before, 374 | a .icon-flip-horizontal:before, 375 | a .icon-flip-vertical:before { 376 | display: inline-block; 377 | } 378 | /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen 379 | readers do not read off random characters that represent icons */ 380 | .icon-glass:before { 381 | content: "\f000"; 382 | } 383 | .icon-music:before { 384 | content: "\f001"; 385 | } 386 | .icon-search:before { 387 | content: "\f002"; 388 | } 389 | .icon-envelope-alt:before { 390 | content: "\f003"; 391 | } 392 | .icon-heart:before { 393 | content: "\f004"; 394 | } 395 | .icon-star:before { 396 | content: "\f005"; 397 | } 398 | .icon-star-empty:before { 399 | content: "\f006"; 400 | } 401 | .icon-user:before { 402 | content: "\f007"; 403 | } 404 | .icon-film:before { 405 | content: "\f008"; 406 | } 407 | .icon-th-large:before { 408 | content: "\f009"; 409 | } 410 | .icon-th:before { 411 | content: "\f00a"; 412 | } 413 | .icon-th-list:before { 414 | content: "\f00b"; 415 | } 416 | .icon-ok:before { 417 | content: "\f00c"; 418 | } 419 | .icon-remove:before { 420 | content: "\f00d"; 421 | } 422 | .icon-zoom-in:before { 423 | content: "\f00e"; 424 | } 425 | .icon-zoom-out:before { 426 | content: "\f010"; 427 | } 428 | .icon-power-off:before, 429 | .icon-off:before { 430 | content: "\f011"; 431 | } 432 | .icon-signal:before { 433 | content: "\f012"; 434 | } 435 | .icon-gear:before, 436 | .icon-cog:before { 437 | content: "\f013"; 438 | } 439 | .icon-trash:before { 440 | content: "\f014"; 441 | } 442 | .icon-home:before { 443 | content: "\f015"; 444 | } 445 | .icon-file-alt:before { 446 | content: "\f016"; 447 | } 448 | .icon-time:before { 449 | content: "\f017"; 450 | } 451 | .icon-road:before { 452 | content: "\f018"; 453 | } 454 | .icon-download-alt:before { 455 | content: "\f019"; 456 | } 457 | .icon-download:before { 458 | content: "\f01a"; 459 | } 460 | .icon-upload:before { 461 | content: "\f01b"; 462 | } 463 | .icon-inbox:before { 464 | content: "\f01c"; 465 | } 466 | .icon-play-circle:before { 467 | content: "\f01d"; 468 | } 469 | .icon-rotate-right:before, 470 | .icon-repeat:before { 471 | content: "\f01e"; 472 | } 473 | .icon-refresh:before { 474 | content: "\f021"; 475 | } 476 | .icon-list-alt:before { 477 | content: "\f022"; 478 | } 479 | .icon-lock:before { 480 | content: "\f023"; 481 | } 482 | .icon-flag:before { 483 | content: "\f024"; 484 | } 485 | .icon-headphones:before { 486 | content: "\f025"; 487 | } 488 | .icon-volume-off:before { 489 | content: "\f026"; 490 | } 491 | .icon-volume-down:before { 492 | content: "\f027"; 493 | } 494 | .icon-volume-up:before { 495 | content: "\f028"; 496 | } 497 | .icon-qrcode:before { 498 | content: "\f029"; 499 | } 500 | .icon-barcode:before { 501 | content: "\f02a"; 502 | } 503 | .icon-tag:before { 504 | content: "\f02b"; 505 | } 506 | .icon-tags:before { 507 | content: "\f02c"; 508 | } 509 | .icon-book:before { 510 | content: "\f02d"; 511 | } 512 | .icon-bookmark:before { 513 | content: "\f02e"; 514 | } 515 | .icon-print:before { 516 | content: "\f02f"; 517 | } 518 | .icon-camera:before { 519 | content: "\f030"; 520 | } 521 | .icon-font:before { 522 | content: "\f031"; 523 | } 524 | .icon-bold:before { 525 | content: "\f032"; 526 | } 527 | .icon-italic:before { 528 | content: "\f033"; 529 | } 530 | .icon-text-height:before { 531 | content: "\f034"; 532 | } 533 | .icon-text-width:before { 534 | content: "\f035"; 535 | } 536 | .icon-align-left:before { 537 | content: "\f036"; 538 | } 539 | .icon-align-center:before { 540 | content: "\f037"; 541 | } 542 | .icon-align-right:before { 543 | content: "\f038"; 544 | } 545 | .icon-align-justify:before { 546 | content: "\f039"; 547 | } 548 | .icon-list:before { 549 | content: "\f03a"; 550 | } 551 | .icon-indent-left:before { 552 | content: "\f03b"; 553 | } 554 | .icon-indent-right:before { 555 | content: "\f03c"; 556 | } 557 | .icon-facetime-video:before { 558 | content: "\f03d"; 559 | } 560 | .icon-picture:before { 561 | content: "\f03e"; 562 | } 563 | .icon-pencil:before { 564 | content: "\f040"; 565 | } 566 | .icon-map-marker:before { 567 | content: "\f041"; 568 | } 569 | .icon-adjust:before { 570 | content: "\f042"; 571 | } 572 | .icon-tint:before { 573 | content: "\f043"; 574 | } 575 | .icon-edit:before { 576 | content: "\f044"; 577 | } 578 | .icon-share:before { 579 | content: "\f045"; 580 | } 581 | .icon-check:before { 582 | content: "\f046"; 583 | } 584 | .icon-move:before { 585 | content: "\f047"; 586 | } 587 | .icon-step-backward:before { 588 | content: "\f048"; 589 | } 590 | .icon-fast-backward:before { 591 | content: "\f049"; 592 | } 593 | .icon-backward:before { 594 | content: "\f04a"; 595 | } 596 | .icon-play:before { 597 | content: "\f04b"; 598 | } 599 | .icon-pause:before { 600 | content: "\f04c"; 601 | } 602 | .icon-stop:before { 603 | content: "\f04d"; 604 | } 605 | .icon-forward:before { 606 | content: "\f04e"; 607 | } 608 | .icon-fast-forward:before { 609 | content: "\f050"; 610 | } 611 | .icon-step-forward:before { 612 | content: "\f051"; 613 | } 614 | .icon-eject:before { 615 | content: "\f052"; 616 | } 617 | .icon-chevron-left:before { 618 | content: "\f053"; 619 | } 620 | .icon-chevron-right:before { 621 | content: "\f054"; 622 | } 623 | .icon-plus-sign:before { 624 | content: "\f055"; 625 | } 626 | .icon-minus-sign:before { 627 | content: "\f056"; 628 | } 629 | .icon-remove-sign:before { 630 | content: "\f057"; 631 | } 632 | .icon-ok-sign:before { 633 | content: "\f058"; 634 | } 635 | .icon-question-sign:before { 636 | content: "\f059"; 637 | } 638 | .icon-info-sign:before { 639 | content: "\f05a"; 640 | } 641 | .icon-screenshot:before { 642 | content: "\f05b"; 643 | } 644 | .icon-remove-circle:before { 645 | content: "\f05c"; 646 | } 647 | .icon-ok-circle:before { 648 | content: "\f05d"; 649 | } 650 | .icon-ban-circle:before { 651 | content: "\f05e"; 652 | } 653 | .icon-arrow-left:before { 654 | content: "\f060"; 655 | } 656 | .icon-arrow-right:before { 657 | content: "\f061"; 658 | } 659 | .icon-arrow-up:before { 660 | content: "\f062"; 661 | } 662 | .icon-arrow-down:before { 663 | content: "\f063"; 664 | } 665 | .icon-mail-forward:before, 666 | .icon-share-alt:before { 667 | content: "\f064"; 668 | } 669 | .icon-resize-full:before { 670 | content: "\f065"; 671 | } 672 | .icon-resize-small:before { 673 | content: "\f066"; 674 | } 675 | .icon-plus:before { 676 | content: "\f067"; 677 | } 678 | .icon-minus:before { 679 | content: "\f068"; 680 | } 681 | .icon-asterisk:before { 682 | content: "\f069"; 683 | } 684 | .icon-exclamation-sign:before { 685 | content: "\f06a"; 686 | } 687 | .icon-gift:before { 688 | content: "\f06b"; 689 | } 690 | .icon-leaf:before { 691 | content: "\f06c"; 692 | } 693 | .icon-fire:before { 694 | content: "\f06d"; 695 | } 696 | .icon-eye-open:before { 697 | content: "\f06e"; 698 | } 699 | .icon-eye-close:before { 700 | content: "\f070"; 701 | } 702 | .icon-warning-sign:before { 703 | content: "\f071"; 704 | } 705 | .icon-plane:before { 706 | content: "\f072"; 707 | } 708 | .icon-calendar:before { 709 | content: "\f073"; 710 | } 711 | .icon-random:before { 712 | content: "\f074"; 713 | } 714 | .icon-comment:before { 715 | content: "\f075"; 716 | } 717 | .icon-magnet:before { 718 | content: "\f076"; 719 | } 720 | .icon-chevron-up:before { 721 | content: "\f077"; 722 | } 723 | .icon-chevron-down:before { 724 | content: "\f078"; 725 | } 726 | .icon-retweet:before { 727 | content: "\f079"; 728 | } 729 | .icon-shopping-cart:before { 730 | content: "\f07a"; 731 | } 732 | .icon-folder-close:before { 733 | content: "\f07b"; 734 | } 735 | .icon-folder-open:before { 736 | content: "\f07c"; 737 | } 738 | .icon-resize-vertical:before { 739 | content: "\f07d"; 740 | } 741 | .icon-resize-horizontal:before { 742 | content: "\f07e"; 743 | } 744 | .icon-bar-chart:before { 745 | content: "\f080"; 746 | } 747 | .icon-twitter-sign:before { 748 | content: "\f081"; 749 | } 750 | .icon-facebook-sign:before { 751 | content: "\f082"; 752 | } 753 | .icon-camera-retro:before { 754 | content: "\f083"; 755 | } 756 | .icon-key:before { 757 | content: "\f084"; 758 | } 759 | .icon-gears:before, 760 | .icon-cogs:before { 761 | content: "\f085"; 762 | } 763 | .icon-comments:before { 764 | content: "\f086"; 765 | } 766 | .icon-thumbs-up-alt:before { 767 | content: "\f087"; 768 | } 769 | .icon-thumbs-down-alt:before { 770 | content: "\f088"; 771 | } 772 | .icon-star-half:before { 773 | content: "\f089"; 774 | } 775 | .icon-heart-empty:before { 776 | content: "\f08a"; 777 | } 778 | .icon-signout:before { 779 | content: "\f08b"; 780 | } 781 | .icon-linkedin-sign:before { 782 | content: "\f08c"; 783 | } 784 | .icon-pushpin:before { 785 | content: "\f08d"; 786 | } 787 | .icon-external-link:before { 788 | content: "\f08e"; 789 | } 790 | .icon-signin:before { 791 | content: "\f090"; 792 | } 793 | .icon-trophy:before { 794 | content: "\f091"; 795 | } 796 | .icon-github-sign:before { 797 | content: "\f092"; 798 | } 799 | .icon-upload-alt:before { 800 | content: "\f093"; 801 | } 802 | .icon-lemon:before { 803 | content: "\f094"; 804 | } 805 | .icon-phone:before { 806 | content: "\f095"; 807 | } 808 | .icon-unchecked:before, 809 | .icon-check-empty:before { 810 | content: "\f096"; 811 | } 812 | .icon-bookmark-empty:before { 813 | content: "\f097"; 814 | } 815 | .icon-phone-sign:before { 816 | content: "\f098"; 817 | } 818 | .icon-twitter:before { 819 | content: "\f099"; 820 | } 821 | .icon-facebook:before { 822 | content: "\f09a"; 823 | } 824 | .icon-github:before { 825 | content: "\f09b"; 826 | } 827 | .icon-unlock:before { 828 | content: "\f09c"; 829 | } 830 | .icon-credit-card:before { 831 | content: "\f09d"; 832 | } 833 | .icon-rss:before { 834 | content: "\f09e"; 835 | } 836 | .icon-hdd:before { 837 | content: "\f0a0"; 838 | } 839 | .icon-bullhorn:before { 840 | content: "\f0a1"; 841 | } 842 | .icon-bell:before { 843 | content: "\f0a2"; 844 | } 845 | .icon-certificate:before { 846 | content: "\f0a3"; 847 | } 848 | .icon-hand-right:before { 849 | content: "\f0a4"; 850 | } 851 | .icon-hand-left:before { 852 | content: "\f0a5"; 853 | } 854 | .icon-hand-up:before { 855 | content: "\f0a6"; 856 | } 857 | .icon-hand-down:before { 858 | content: "\f0a7"; 859 | } 860 | .icon-circle-arrow-left:before { 861 | content: "\f0a8"; 862 | } 863 | .icon-circle-arrow-right:before { 864 | content: "\f0a9"; 865 | } 866 | .icon-circle-arrow-up:before { 867 | content: "\f0aa"; 868 | } 869 | .icon-circle-arrow-down:before { 870 | content: "\f0ab"; 871 | } 872 | .icon-globe:before { 873 | content: "\f0ac"; 874 | } 875 | .icon-wrench:before { 876 | content: "\f0ad"; 877 | } 878 | .icon-tasks:before { 879 | content: "\f0ae"; 880 | } 881 | .icon-filter:before { 882 | content: "\f0b0"; 883 | } 884 | .icon-briefcase:before { 885 | content: "\f0b1"; 886 | } 887 | .icon-fullscreen:before { 888 | content: "\f0b2"; 889 | } 890 | .icon-group:before { 891 | content: "\f0c0"; 892 | } 893 | .icon-link:before { 894 | content: "\f0c1"; 895 | } 896 | .icon-cloud:before { 897 | content: "\f0c2"; 898 | } 899 | .icon-beaker:before { 900 | content: "\f0c3"; 901 | } 902 | .icon-cut:before { 903 | content: "\f0c4"; 904 | } 905 | .icon-copy:before { 906 | content: "\f0c5"; 907 | } 908 | .icon-paperclip:before, 909 | .icon-paper-clip:before { 910 | content: "\f0c6"; 911 | } 912 | .icon-save:before { 913 | content: "\f0c7"; 914 | } 915 | .icon-sign-blank:before { 916 | content: "\f0c8"; 917 | } 918 | .icon-reorder:before { 919 | content: "\f0c9"; 920 | } 921 | .icon-list-ul:before { 922 | content: "\f0ca"; 923 | } 924 | .icon-list-ol:before { 925 | content: "\f0cb"; 926 | } 927 | .icon-strikethrough:before { 928 | content: "\f0cc"; 929 | } 930 | .icon-underline:before { 931 | content: "\f0cd"; 932 | } 933 | .icon-table:before { 934 | content: "\f0ce"; 935 | } 936 | .icon-magic:before { 937 | content: "\f0d0"; 938 | } 939 | .icon-truck:before { 940 | content: "\f0d1"; 941 | } 942 | .icon-pinterest:before { 943 | content: "\f0d2"; 944 | } 945 | .icon-pinterest-sign:before { 946 | content: "\f0d3"; 947 | } 948 | .icon-google-plus-sign:before { 949 | content: "\f0d4"; 950 | } 951 | .icon-google-plus:before { 952 | content: "\f0d5"; 953 | } 954 | .icon-money:before { 955 | content: "\f0d6"; 956 | } 957 | .icon-caret-down:before { 958 | content: "\f0d7"; 959 | } 960 | .icon-caret-up:before { 961 | content: "\f0d8"; 962 | } 963 | .icon-caret-left:before { 964 | content: "\f0d9"; 965 | } 966 | .icon-caret-right:before { 967 | content: "\f0da"; 968 | } 969 | .icon-columns:before { 970 | content: "\f0db"; 971 | } 972 | .icon-sort:before { 973 | content: "\f0dc"; 974 | } 975 | .icon-sort-down:before { 976 | content: "\f0dd"; 977 | } 978 | .icon-sort-up:before { 979 | content: "\f0de"; 980 | } 981 | .icon-envelope:before { 982 | content: "\f0e0"; 983 | } 984 | .icon-linkedin:before { 985 | content: "\f0e1"; 986 | } 987 | .icon-rotate-left:before, 988 | .icon-undo:before { 989 | content: "\f0e2"; 990 | } 991 | .icon-legal:before { 992 | content: "\f0e3"; 993 | } 994 | .icon-dashboard:before { 995 | content: "\f0e4"; 996 | } 997 | .icon-comment-alt:before { 998 | content: "\f0e5"; 999 | } 1000 | .icon-comments-alt:before { 1001 | content: "\f0e6"; 1002 | } 1003 | .icon-bolt:before { 1004 | content: "\f0e7"; 1005 | } 1006 | .icon-sitemap:before { 1007 | content: "\f0e8"; 1008 | } 1009 | .icon-umbrella:before { 1010 | content: "\f0e9"; 1011 | } 1012 | .icon-paste:before { 1013 | content: "\f0ea"; 1014 | } 1015 | .icon-lightbulb:before { 1016 | content: "\f0eb"; 1017 | } 1018 | .icon-exchange:before { 1019 | content: "\f0ec"; 1020 | } 1021 | .icon-cloud-download:before { 1022 | content: "\f0ed"; 1023 | } 1024 | .icon-cloud-upload:before { 1025 | content: "\f0ee"; 1026 | } 1027 | .icon-user-md:before { 1028 | content: "\f0f0"; 1029 | } 1030 | .icon-stethoscope:before { 1031 | content: "\f0f1"; 1032 | } 1033 | .icon-suitcase:before { 1034 | content: "\f0f2"; 1035 | } 1036 | .icon-bell-alt:before { 1037 | content: "\f0f3"; 1038 | } 1039 | .icon-coffee:before { 1040 | content: "\f0f4"; 1041 | } 1042 | .icon-food:before { 1043 | content: "\f0f5"; 1044 | } 1045 | .icon-file-text-alt:before { 1046 | content: "\f0f6"; 1047 | } 1048 | .icon-building:before { 1049 | content: "\f0f7"; 1050 | } 1051 | .icon-hospital:before { 1052 | content: "\f0f8"; 1053 | } 1054 | .icon-ambulance:before { 1055 | content: "\f0f9"; 1056 | } 1057 | .icon-medkit:before { 1058 | content: "\f0fa"; 1059 | } 1060 | .icon-fighter-jet:before { 1061 | content: "\f0fb"; 1062 | } 1063 | .icon-beer:before { 1064 | content: "\f0fc"; 1065 | } 1066 | .icon-h-sign:before { 1067 | content: "\f0fd"; 1068 | } 1069 | .icon-plus-sign-alt:before { 1070 | content: "\f0fe"; 1071 | } 1072 | .icon-double-angle-left:before { 1073 | content: "\f100"; 1074 | } 1075 | .icon-double-angle-right:before { 1076 | content: "\f101"; 1077 | } 1078 | .icon-double-angle-up:before { 1079 | content: "\f102"; 1080 | } 1081 | .icon-double-angle-down:before { 1082 | content: "\f103"; 1083 | } 1084 | .icon-angle-left:before { 1085 | content: "\f104"; 1086 | } 1087 | .icon-angle-right:before { 1088 | content: "\f105"; 1089 | } 1090 | .icon-angle-up:before { 1091 | content: "\f106"; 1092 | } 1093 | .icon-angle-down:before { 1094 | content: "\f107"; 1095 | } 1096 | .icon-desktop:before { 1097 | content: "\f108"; 1098 | } 1099 | .icon-laptop:before { 1100 | content: "\f109"; 1101 | } 1102 | .icon-tablet:before { 1103 | content: "\f10a"; 1104 | } 1105 | .icon-mobile-phone:before { 1106 | content: "\f10b"; 1107 | } 1108 | .icon-circle-blank:before { 1109 | content: "\f10c"; 1110 | } 1111 | .icon-quote-left:before { 1112 | content: "\f10d"; 1113 | } 1114 | .icon-quote-right:before { 1115 | content: "\f10e"; 1116 | } 1117 | .icon-spinner:before { 1118 | content: "\f110"; 1119 | } 1120 | .icon-circle:before { 1121 | content: "\f111"; 1122 | } 1123 | .icon-mail-reply:before, 1124 | .icon-reply:before { 1125 | content: "\f112"; 1126 | } 1127 | .icon-github-alt:before { 1128 | content: "\f113"; 1129 | } 1130 | .icon-folder-close-alt:before { 1131 | content: "\f114"; 1132 | } 1133 | .icon-folder-open-alt:before { 1134 | content: "\f115"; 1135 | } 1136 | .icon-expand-alt:before { 1137 | content: "\f116"; 1138 | } 1139 | .icon-collapse-alt:before { 1140 | content: "\f117"; 1141 | } 1142 | .icon-smile:before { 1143 | content: "\f118"; 1144 | } 1145 | .icon-frown:before { 1146 | content: "\f119"; 1147 | } 1148 | .icon-meh:before { 1149 | content: "\f11a"; 1150 | } 1151 | .icon-gamepad:before { 1152 | content: "\f11b"; 1153 | } 1154 | .icon-keyboard:before { 1155 | content: "\f11c"; 1156 | } 1157 | .icon-flag-alt:before { 1158 | content: "\f11d"; 1159 | } 1160 | .icon-flag-checkered:before { 1161 | content: "\f11e"; 1162 | } 1163 | .icon-terminal:before { 1164 | content: "\f120"; 1165 | } 1166 | .icon-code:before { 1167 | content: "\f121"; 1168 | } 1169 | .icon-reply-all:before { 1170 | content: "\f122"; 1171 | } 1172 | .icon-mail-reply-all:before { 1173 | content: "\f122"; 1174 | } 1175 | .icon-star-half-full:before, 1176 | .icon-star-half-empty:before { 1177 | content: "\f123"; 1178 | } 1179 | .icon-location-arrow:before { 1180 | content: "\f124"; 1181 | } 1182 | .icon-crop:before { 1183 | content: "\f125"; 1184 | } 1185 | .icon-code-fork:before { 1186 | content: "\f126"; 1187 | } 1188 | .icon-unlink:before { 1189 | content: "\f127"; 1190 | } 1191 | .icon-question:before { 1192 | content: "\f128"; 1193 | } 1194 | .icon-info:before { 1195 | content: "\f129"; 1196 | } 1197 | .icon-exclamation:before { 1198 | content: "\f12a"; 1199 | } 1200 | .icon-superscript:before { 1201 | content: "\f12b"; 1202 | } 1203 | .icon-subscript:before { 1204 | content: "\f12c"; 1205 | } 1206 | .icon-eraser:before { 1207 | content: "\f12d"; 1208 | } 1209 | .icon-puzzle-piece:before { 1210 | content: "\f12e"; 1211 | } 1212 | .icon-microphone:before { 1213 | content: "\f130"; 1214 | } 1215 | .icon-microphone-off:before { 1216 | content: "\f131"; 1217 | } 1218 | .icon-shield:before { 1219 | content: "\f132"; 1220 | } 1221 | .icon-calendar-empty:before { 1222 | content: "\f133"; 1223 | } 1224 | .icon-fire-extinguisher:before { 1225 | content: "\f134"; 1226 | } 1227 | .icon-rocket:before { 1228 | content: "\f135"; 1229 | } 1230 | .icon-maxcdn:before { 1231 | content: "\f136"; 1232 | } 1233 | .icon-chevron-sign-left:before { 1234 | content: "\f137"; 1235 | } 1236 | .icon-chevron-sign-right:before { 1237 | content: "\f138"; 1238 | } 1239 | .icon-chevron-sign-up:before { 1240 | content: "\f139"; 1241 | } 1242 | .icon-chevron-sign-down:before { 1243 | content: "\f13a"; 1244 | } 1245 | .icon-html5:before { 1246 | content: "\f13b"; 1247 | } 1248 | .icon-css3:before { 1249 | content: "\f13c"; 1250 | } 1251 | .icon-anchor:before { 1252 | content: "\f13d"; 1253 | } 1254 | .icon-unlock-alt:before { 1255 | content: "\f13e"; 1256 | } 1257 | .icon-bullseye:before { 1258 | content: "\f140"; 1259 | } 1260 | .icon-ellipsis-horizontal:before { 1261 | content: "\f141"; 1262 | } 1263 | .icon-ellipsis-vertical:before { 1264 | content: "\f142"; 1265 | } 1266 | .icon-rss-sign:before { 1267 | content: "\f143"; 1268 | } 1269 | .icon-play-sign:before { 1270 | content: "\f144"; 1271 | } 1272 | .icon-ticket:before { 1273 | content: "\f145"; 1274 | } 1275 | .icon-minus-sign-alt:before { 1276 | content: "\f146"; 1277 | } 1278 | .icon-check-minus:before { 1279 | content: "\f147"; 1280 | } 1281 | .icon-level-up:before { 1282 | content: "\f148"; 1283 | } 1284 | .icon-level-down:before { 1285 | content: "\f149"; 1286 | } 1287 | .icon-check-sign:before { 1288 | content: "\f14a"; 1289 | } 1290 | .icon-edit-sign:before { 1291 | content: "\f14b"; 1292 | } 1293 | .icon-external-link-sign:before { 1294 | content: "\f14c"; 1295 | } 1296 | .icon-share-sign:before { 1297 | content: "\f14d"; 1298 | } 1299 | .icon-compass:before { 1300 | content: "\f14e"; 1301 | } 1302 | .icon-collapse:before { 1303 | content: "\f150"; 1304 | } 1305 | .icon-collapse-top:before { 1306 | content: "\f151"; 1307 | } 1308 | .icon-expand:before { 1309 | content: "\f152"; 1310 | } 1311 | .icon-euro:before, 1312 | .icon-eur:before { 1313 | content: "\f153"; 1314 | } 1315 | .icon-gbp:before { 1316 | content: "\f154"; 1317 | } 1318 | .icon-dollar:before, 1319 | .icon-usd:before { 1320 | content: "\f155"; 1321 | } 1322 | .icon-rupee:before, 1323 | .icon-inr:before { 1324 | content: "\f156"; 1325 | } 1326 | .icon-yen:before, 1327 | .icon-jpy:before { 1328 | content: "\f157"; 1329 | } 1330 | .icon-renminbi:before, 1331 | .icon-cny:before { 1332 | content: "\f158"; 1333 | } 1334 | .icon-won:before, 1335 | .icon-krw:before { 1336 | content: "\f159"; 1337 | } 1338 | .icon-bitcoin:before, 1339 | .icon-btc:before { 1340 | content: "\f15a"; 1341 | } 1342 | .icon-file:before { 1343 | content: "\f15b"; 1344 | } 1345 | .icon-file-text:before { 1346 | content: "\f15c"; 1347 | } 1348 | .icon-sort-by-alphabet:before { 1349 | content: "\f15d"; 1350 | } 1351 | .icon-sort-by-alphabet-alt:before { 1352 | content: "\f15e"; 1353 | } 1354 | .icon-sort-by-attributes:before { 1355 | content: "\f160"; 1356 | } 1357 | .icon-sort-by-attributes-alt:before { 1358 | content: "\f161"; 1359 | } 1360 | .icon-sort-by-order:before { 1361 | content: "\f162"; 1362 | } 1363 | .icon-sort-by-order-alt:before { 1364 | content: "\f163"; 1365 | } 1366 | .icon-thumbs-up:before { 1367 | content: "\f164"; 1368 | } 1369 | .icon-thumbs-down:before { 1370 | content: "\f165"; 1371 | } 1372 | .icon-youtube-sign:before { 1373 | content: "\f166"; 1374 | } 1375 | .icon-youtube:before { 1376 | content: "\f167"; 1377 | } 1378 | .icon-xing:before { 1379 | content: "\f168"; 1380 | } 1381 | .icon-xing-sign:before { 1382 | content: "\f169"; 1383 | } 1384 | .icon-youtube-play:before { 1385 | content: "\f16a"; 1386 | } 1387 | .icon-dropbox:before { 1388 | content: "\f16b"; 1389 | } 1390 | .icon-stackexchange:before { 1391 | content: "\f16c"; 1392 | } 1393 | .icon-instagram:before { 1394 | content: "\f16d"; 1395 | } 1396 | .icon-flickr:before { 1397 | content: "\f16e"; 1398 | } 1399 | .icon-adn:before { 1400 | content: "\f170"; 1401 | } 1402 | .icon-bitbucket:before { 1403 | content: "\f171"; 1404 | } 1405 | .icon-bitbucket-sign:before { 1406 | content: "\f172"; 1407 | } 1408 | .icon-tumblr:before { 1409 | content: "\f173"; 1410 | } 1411 | .icon-tumblr-sign:before { 1412 | content: "\f174"; 1413 | } 1414 | .icon-long-arrow-down:before { 1415 | content: "\f175"; 1416 | } 1417 | .icon-long-arrow-up:before { 1418 | content: "\f176"; 1419 | } 1420 | .icon-long-arrow-left:before { 1421 | content: "\f177"; 1422 | } 1423 | .icon-long-arrow-right:before { 1424 | content: "\f178"; 1425 | } 1426 | .icon-apple:before { 1427 | content: "\f179"; 1428 | } 1429 | .icon-windows:before { 1430 | content: "\f17a"; 1431 | } 1432 | .icon-android:before { 1433 | content: "\f17b"; 1434 | } 1435 | .icon-linux:before { 1436 | content: "\f17c"; 1437 | } 1438 | .icon-dribbble:before { 1439 | content: "\f17d"; 1440 | } 1441 | .icon-skype:before { 1442 | content: "\f17e"; 1443 | } 1444 | .icon-foursquare:before { 1445 | content: "\f180"; 1446 | } 1447 | .icon-trello:before { 1448 | content: "\f181"; 1449 | } 1450 | .icon-female:before { 1451 | content: "\f182"; 1452 | } 1453 | .icon-male:before { 1454 | content: "\f183"; 1455 | } 1456 | .icon-gittip:before { 1457 | content: "\f184"; 1458 | } 1459 | .icon-sun:before { 1460 | content: "\f185"; 1461 | } 1462 | .icon-moon:before { 1463 | content: "\f186"; 1464 | } 1465 | .icon-archive:before { 1466 | content: "\f187"; 1467 | } 1468 | .icon-bug:before { 1469 | content: "\f188"; 1470 | } 1471 | .icon-vk:before { 1472 | content: "\f189"; 1473 | } 1474 | .icon-weibo:before { 1475 | content: "\f18a"; 1476 | } 1477 | .icon-renren:before { 1478 | content: "\f18b"; 1479 | } 1480 | --------------------------------------------------------------------------------