├── .github ├── FUNDING.yml ├── dependabot.yml ├── linters │ ├── .eslintrc.json │ ├── .htmlhintrc │ ├── .markdownlint.json │ ├── .stylelintrc.json │ ├── .yaml-lint.yml │ ├── php.ini │ └── phpcs.xml └── workflows │ ├── linter.yml │ ├── php-compatibility-7.4.yaml │ ├── php-compatibility-8.0.yaml │ └── php-compatibility-8.2.yaml ├── Assets ├── css │ └── color-manager.css └── icons │ ├── color-palette.svg │ ├── colour-palette.svg │ ├── font-size-color.svg │ ├── palette-print-bordered.svg │ └── palette-print.svg ├── Controller └── ColorManagerController.php ├── Helper └── CustomColorHelper.php ├── INSTALL.md ├── LICENSE ├── Locale ├── ColorManager-Translation-Table.xlsx ├── de_DE │ └── translations.php ├── en_GB │ └── translations.php └── translations-starter-template.php ├── Model └── ColorModelExt.php ├── Plugin.php ├── README.md ├── Releases ├── ColorManager-2.0.zip ├── ColorManager-2.1.zip ├── ColorManager-2.5.zip ├── ColorManager-2.6.zip ├── ColorManager-3.0.zip ├── ColorManager-3.1.zip ├── ColorManager-3.2.zip ├── ColorManager-3.5.zip ├── ColorManager-3.6.zip ├── ColorManager-3.7.zip ├── KBColours-1.0.zip └── KBColours-1.1.zip ├── Template ├── config │ ├── add_custom_color.php │ ├── colors.php │ └── sidebar.php └── layout │ └── css_ext.php ├── changelog.md ├── screenshot-automatic-action-dropdown-list.png ├── screenshot-automatic-action-interface.png ├── screenshot-default-task-dropdown-list.png ├── screenshot-settings-custom-palette-empty.png ├── screenshot-settings-custom-palette.png ├── screenshot-settings-default-palette.png ├── screenshot-settings-extended-palette.png └── screenshot-settings-text-palette.png /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # These are supported funding model platforms 3 | 4 | github: aljawaid 5 | ko_fi: aljawaid 6 | custom: ["https://paypal.me/aljawaid", "https://www.buymeacoffee.com/aljawaid"] 7 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # Set Update Schedule for GitHub Actions 3 | 4 | version: 2 5 | updates: 6 | 7 | - package-ecosystem: "github-actions" 8 | directory: "/" 9 | schedule: 10 | # Check for updates to GitHub Actions every week 11 | interval: "weekly" 12 | time: "09:00" 13 | # Use Greenwich Mean Time (UTC +01:00) 14 | timezone: "Europe/London" 15 | # Add assignees 16 | assignees: 17 | - "aljawaid" 18 | -------------------------------------------------------------------------------- /.github/linters/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": true, 4 | "commonjs": true, 5 | "jquery": true, 6 | "es2021": true 7 | }, 8 | "root": true, 9 | "extends": "eslint:recommended", 10 | "ignorePatterns": ["clipboard-*.min.js", "**/vendor/*.js"], 11 | "globals": { 12 | "ClipboardJS": "readonly" 13 | }, 14 | "rules": { 15 | "no-undef": "warn" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.github/linters/.htmlhintrc: -------------------------------------------------------------------------------- 1 | { 2 | "attr-unsafe-chars": true, 3 | "attr-lowercase": true, 4 | "attr-no-unnecessary-whitespace": true, 5 | "attr-value-double-quotes": true, 6 | "attr-value-not-empty": false, 7 | "attr-no-duplication": true, 8 | "attr-whitespace": true, 9 | "alt-require": true, 10 | "doctype-first": true, 11 | "tagname-lowercase": true, 12 | "tagname-specialchars": true, 13 | "tag-pair": true, 14 | "tag-self-close": false, 15 | "empty-tag-not-self-closed": true, 16 | "src-not-empty": true, 17 | "href-abs-or-rel": false, 18 | "spec-char-escape": true, 19 | "style-disabled": false, 20 | "inline-style-disabled": false, 21 | "inline-script-disabled": false, 22 | "space-tab-mixed-disabled": "tab", 23 | "id-class-ad-disabled": true, 24 | "id-unique": true, 25 | "id-class-value": "dash", 26 | "html-lang-require": true, 27 | "doctype-first": true, 28 | "doctype-html5": true, 29 | "title-require": true, 30 | "head-script-disabled": true 31 | } 32 | -------------------------------------------------------------------------------- /.github/linters/.markdownlint.json: -------------------------------------------------------------------------------- 1 | { 2 | "MD007": { 3 | "description": "MD007/ul-indent - Unordered list indentation", 4 | "type": [ 5 | "boolean", 6 | "object" 7 | ], 8 | "default": true, 9 | "properties": { 10 | "indent": { 11 | "description": "Spaces for indent", 12 | "type": "integer", 13 | "minimum": 1, 14 | "default": 4 15 | }, 16 | "start_indented": { 17 | "description": "Whether to indent the first level of the list", 18 | "type": "boolean", 19 | "default": false 20 | }, 21 | "start_indent": { 22 | "description": "Spaces for first level indent (when start_indented is set)", 23 | "type": "integer", 24 | "minimum": 1, 25 | "default": 4 26 | } 27 | }, 28 | "additionalProperties": false 29 | }, 30 | "ul-indent": { 31 | "$ref": "#/properties/MD007" 32 | }, 33 | "MD033": false, 34 | "MD013": false, 35 | "MD036": false, 36 | "MD012": false, 37 | "MD032": false 38 | } 39 | -------------------------------------------------------------------------------- /.github/linters/.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "no-extra-semicolons": true, 5 | "number-leading-zero": "never", 6 | "shorthand-property-no-redundant-values": null, 7 | "comment-whitespace-inside": [ 8 | "always", 9 | { 10 | "severity": "warning" 11 | } 12 | ], 13 | "font-family-name-quotes": "always-where-recommended", 14 | "font-weight-notation": "named-where-possible", 15 | "font-family-no-missing-generic-family-keyword": [ 16 | true, 17 | { 18 | "ignoreFontFamilies": ["FontAwesome"], 19 | "severity": "warning" 20 | } 21 | ], 22 | "color-no-invalid-hex": true, 23 | "color-hex-case": "upper", 24 | "color-hex-length": [ 25 | "long", 26 | { 27 | "severity": "warning" 28 | } 29 | ], 30 | "alpha-value-notation": "number", 31 | "value-list-comma-newline-after": null, 32 | "length-zero-no-unit": true, 33 | "no-descending-specificity": null, 34 | "string-quotes": "double", 35 | "selector-type-case": "lower", 36 | "selector-class-pattern": null, 37 | "selector-id-pattern": [ 38 | "([A-Z][a-z0-9]+)((\\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?", 39 | { 40 | "message": "Expected CSS Selector ID pattern to be CamelCase", 41 | "severity": "warning" 42 | } 43 | ], 44 | "value-list-comma-space-after": "always", 45 | "color-function-notation": "legacy", 46 | "number-max-precision": 5, 47 | "value-keyword-case": [ 48 | "lower", 49 | { 50 | "ignoreProperties": ["/^(b|B)ackground$/", "text-rendering"] 51 | } 52 | ], 53 | "comment-empty-line-before": [ 54 | "always", 55 | { 56 | "except": ["first-nested"], 57 | "ignore": ["after-comment"], 58 | "severity": "warning" 59 | } 60 | ], 61 | "declaration-block-no-redundant-longhand-properties": [ 62 | true, 63 | { 64 | "severity": "warning" 65 | } 66 | ], 67 | "property-no-vendor-prefix": null, 68 | "selector-no-vendor-prefix": null, 69 | "at-rule-no-vendor-prefix": null, 70 | "value-no-vendor-prefix": null, 71 | "declaration-no-important": [ 72 | true, 73 | { 74 | "message": "Try not to use !important in your declaration", 75 | "severity": "warning" 76 | } 77 | ], 78 | "media-feature-range-notation": null 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /.github/linters/.yaml-lint.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ########################################### 3 | # These are the rules used for # 4 | # linting all the yaml files in the stack # 5 | # NOTE: # 6 | # You can disable line with: # 7 | # # yamllint disable-line # 8 | ########################################### 9 | rules: 10 | braces: 11 | level: warning 12 | min-spaces-inside: 0 13 | max-spaces-inside: 0 14 | min-spaces-inside-empty: 0 15 | max-spaces-inside-empty: 0 16 | brackets: 17 | level: warning 18 | min-spaces-inside: 0 19 | max-spaces-inside: 0 20 | min-spaces-inside-empty: 0 21 | max-spaces-inside-empty: 5 22 | colons: 23 | level: warning 24 | max-spaces-before: 0 25 | max-spaces-after: 1 26 | commas: 27 | level: warning 28 | max-spaces-before: 0 29 | min-spaces-after: 1 30 | max-spaces-after: 1 31 | comments: disable 32 | comments-indentation: disable 33 | document-end: disable 34 | document-start: 35 | level: warning 36 | present: true 37 | empty-lines: 38 | level: warning 39 | max: 2 40 | max-start: 0 41 | max-end: 0 42 | hyphens: 43 | level: warning 44 | max-spaces-after: 1 45 | indentation: 46 | level: warning 47 | spaces: consistent 48 | indent-sequences: true 49 | check-multi-line-strings: false 50 | key-duplicates: enable 51 | line-length: disable 52 | new-line-at-end-of-file: enable 53 | new-lines: 54 | type: unix 55 | trailing-spaces: {} 56 | -------------------------------------------------------------------------------- /.github/linters/phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The default coding standard for usage with GitHub Super-Linter. Extended. 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | warning 13 | 3 14 | 15 | 16 | 17 | 18 | 19 | warning 20 | 3 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | warning 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | warning 65 | 66 | 67 | -------------------------------------------------------------------------------- /.github/workflows/linter.yml: -------------------------------------------------------------------------------- 1 | --- 2 | ################################# 3 | ################################# 4 | ## Super Linter GitHub Actions ## 5 | ################################# 6 | ################################# 7 | name: Code Scan 8 | 9 | # 10 | # Documentation: 11 | # https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions 12 | # Save the contents of this file as '.github/workflows/linter.yml' 13 | # 14 | 15 | ############################# 16 | # Start the job on all push # 17 | ############################# 18 | on: 19 | push: 20 | # branches-ignore: [master, main] 21 | # Remove the line above to run when pushing to master 22 | pull_request: 23 | branches: [master, main] 24 | 25 | ############### 26 | # Set the Job # 27 | ############### 28 | jobs: 29 | build: 30 | # Name the Job 31 | name: Check Code 32 | # Set the agent to run on 33 | runs-on: ubuntu-latest 34 | 35 | ############################################ 36 | # Grant status permission for MULTI_STATUS # 37 | ############################################ 38 | permissions: 39 | contents: read 40 | packages: read 41 | statuses: write 42 | 43 | ################## 44 | # Load all steps # 45 | ################## 46 | steps: 47 | ########################## 48 | # Checkout the code base # 49 | ########################## 50 | - name: Checkout Code 51 | uses: actions/checkout@v4 52 | with: 53 | # Full git history is needed to get a proper 54 | # list of changed files within `super-linter` 55 | # We will set fetch-depth: 0 to fetch all history for all branches 56 | # If you hadn't done this, only a single commit would be fetched. 57 | fetch-depth: 0 58 | 59 | ################################ 60 | # Run Linter against code base # 61 | ################################ 62 | - name: Lint Code Base 63 | uses: github/super-linter/slim@v5 64 | # https://github.com/marketplace/actions/super-linter#environment-variables 65 | env: 66 | # Change to 'true' to scan all files, 'false' for new or edited files 67 | VALIDATE_ALL_CODEBASE: false 68 | # Change to 'master' if your main branch differs 69 | DEFAULT_BRANCH: master 70 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 71 | CSS_FILE_NAME: .stylelintrc.json 72 | LINTER_RULES_PATH: .github/linters 73 | MARKDOWN_CONFIG_FILE: .markdownlint.json 74 | PHP_CONFIG_FILE: php.ini 75 | YAML_CONFIG_FILE: .yaml-lint.yml 76 | JAVASCRIPT_ES_CONFIG_FILE: .eslintrc.json 77 | FILTER_REGEX_EXCLUDE: (Releases.*|Screenshots.*) 78 | # ACTIONS_RUNNER_DEBUG: true 79 | # CREATE_LOG_FILE: true 80 | # LOG_FILE: code-linter.log 81 | # LOG_LEVEL: WARN 82 | ACTIONS_STEP_DEBUG: true 83 | IGNORE_GITIGNORED_FILES: true 84 | SUPPRESS_POSSUM: true 85 | VALIDATE_CSS: true 86 | VALIDATE_GITHUB_ACTIONS: true 87 | VALIDATE_GITLEAKS: true 88 | VALIDATE_HTML: true 89 | # VALIDATE_JAVA: true 90 | VALIDATE_JAVASCRIPT_ES: true 91 | # VALIDATE_JAVASCRIPT_STANDARD: true 92 | VALIDATE_JSON: true 93 | VALIDATE_MARKDOWN: true 94 | VALIDATE_PHP: true 95 | VALIDATE_PHP_BUILTIN: true 96 | VALIDATE_PHP_PHPCS: true 97 | # VALIDATE_PHP_PHPSTAN: true 98 | # VALIDATE_PHP_PSALM: true 99 | # VALIDATE_SHELL_SHFMT: true 100 | # VALIDATE_SQL: true 101 | # VALIDATE_SQLFLUFF: true 102 | VALIDATE_XML: true 103 | VALIDATE_YAML: true 104 | -------------------------------------------------------------------------------- /.github/workflows/php-compatibility-7.4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #################################################### 3 | ################ PHP Compatibility ################# 4 | ######## Save the contents of this file as ######### 5 | ## '.github/workflows/php-compatibility-7.4.yaml' ## 6 | #################################################### 7 | name: PHP 7.4 8 | 9 | on: 10 | push: 11 | pull_request: 12 | branches: [master, main] 13 | 14 | permissions: 15 | contents: read 16 | 17 | jobs: 18 | setup: 19 | name: Scan Code 20 | runs-on: ubuntu-latest 21 | permissions: 22 | contents: read # for checkout to fetch code 23 | security-events: write # for github/codeql-action/upload-sarif to upload SARIF results 24 | 25 | steps: 26 | - name: Checkout Code 27 | uses: actions/checkout@v4 28 | 29 | - name: PHP Setup 30 | uses: shivammathur/setup-php@v2 31 | with: 32 | php-version: '7.4-' 33 | ini-values: short_open_tag=On 34 | coverage: none 35 | 36 | - name: Run PHP Compatibility 7.4 37 | uses: pantheon-systems/phpcompatibility-action@v1 38 | with: 39 | test-versions: '7.4-' 40 | # Specify directories to check 41 | paths: ${{ github.workspace }}/Plugin.php ${{ github.workspace }}/Controller/ ${{ github.workspace }}/Locale/ ${{ github.workspace }}/Helper/ ${{ github.workspace }}/Model/ ${{ github.workspace }}/Template/ 42 | -------------------------------------------------------------------------------- /.github/workflows/php-compatibility-8.0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #################################################### 3 | ################ PHP Compatibility ################# 4 | ######## Save the contents of this file as ######### 5 | ## '.github/workflows/php-compatibility-8.0.yaml' ## 6 | #################################################### 7 | name: PHP 8.0 8 | 9 | on: 10 | push: 11 | pull_request: 12 | branches: [master, main] 13 | 14 | permissions: 15 | contents: read 16 | 17 | jobs: 18 | setup: 19 | name: Scan Code 20 | runs-on: ubuntu-latest 21 | permissions: 22 | contents: read # for checkout to fetch code 23 | security-events: write # for github/codeql-action/upload-sarif to upload SARIF results 24 | 25 | steps: 26 | - name: Checkout Code 27 | uses: actions/checkout@v4 28 | 29 | - name: PHP Setup 30 | uses: shivammathur/setup-php@v2 31 | with: 32 | php-version: '8.0-' 33 | ini-values: short_open_tag=On 34 | coverage: none 35 | 36 | - name: Run PHP Compatibility 8.0 37 | uses: pantheon-systems/phpcompatibility-action@v1 38 | with: 39 | test-versions: '8.0-' 40 | # Specify directories to check 41 | paths: ${{ github.workspace }}/Plugin.php ${{ github.workspace }}/Controller/ ${{ github.workspace }}/Locale/ ${{ github.workspace }}/Helper/ ${{ github.workspace }}/Model/ ${{ github.workspace }}/Template/ 42 | -------------------------------------------------------------------------------- /.github/workflows/php-compatibility-8.2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | #################################################### 3 | ################ PHP Compatibility ################# 4 | ######## Save the contents of this file as ######### 5 | ## '.github/workflows/php-compatibility-8.2.yaml' ## 6 | #################################################### 7 | name: PHP 8.2 8 | 9 | on: 10 | push: 11 | pull_request: 12 | branches: [master, main] 13 | 14 | permissions: 15 | contents: read 16 | 17 | jobs: 18 | setup: 19 | name: Scan Code 20 | runs-on: ubuntu-latest 21 | permissions: 22 | contents: read # for checkout to fetch code 23 | security-events: write # for github/codeql-action/upload-sarif to upload SARIF results 24 | 25 | steps: 26 | - name: Checkout Code 27 | uses: actions/checkout@v4 28 | 29 | - name: PHP Setup 30 | uses: shivammathur/setup-php@v2 31 | with: 32 | php-version: '8.2-' 33 | ini-values: short_open_tag=On 34 | coverage: none 35 | 36 | - name: Run PHP Compatibility 8.2 37 | uses: pantheon-systems/phpcompatibility-action@v1 38 | with: 39 | test-versions: '8.2-' 40 | # Specify directories to check 41 | paths: ${{ github.workspace }}/Plugin.php ${{ github.workspace }}/Controller/ ${{ github.workspace }}/Locale/ ${{ github.workspace }}/Helper/ ${{ github.workspace }}/Model/ ${{ github.workspace }}/Template/ 42 | -------------------------------------------------------------------------------- /Assets/css/color-manager.css: -------------------------------------------------------------------------------- 1 | /* KANBOARD PLUGIN - CSS FILE */ 2 | 3 | :root { 4 | --pp-blue: #007AC9; 5 | --pp-blue-alt: #00ADFF; 6 | --pp-red: #B71234; 7 | --pp-red-alt: #DA004C; 8 | --pp-red-alt-2: #AE003D; 9 | --pp-black: #000000; 10 | --pp-light-grey: #8F8F8F; 11 | --pp-grey: #4D4D4D; 12 | --pp-white: #FFFFFF; 13 | --pp-green: #2EA02E; 14 | --pp-green-dark: #055D20; 15 | --pp-orange: #FF6500; 16 | --border-radius-color-manager: 3px; 17 | --button-blue-gradient: linear-gradient(to bottom, #7892C2 80%, #476E9E 100%); 18 | --blue-border-gradient-match: #476E9E; 19 | --header-page-margin-color-manager: 5px 15px 50px 15px; 20 | --page-margin-color-manager: 0 15px 0 15px; 21 | --title-margin-color-manager: 0 15px 0 15px; 22 | --button-background-delete: #D05C84; 23 | --link-color-primary: #3366CC; 24 | --blue-icon-dark: #034CA6; 25 | --panel-background-color-manager: #EEEEEE; 26 | --box-shadow-color-manager: 1px 1px 1px 0 #000000; 27 | --transition-color-manager: ease-in-out all .3s; 28 | } 29 | 30 | .pp-blue { color: var(--pp-blue); fill: var(--pp-blue); } 31 | .pp-blue-alt { color: var(--pp-blue-alt); fill: var(--pp-blue-alt); } 32 | .pp-red { color: var(--pp-red); fill: var(--pp-red); } 33 | .pp-red-alt { color: var(--pp-red-alt); fill: var(--pp-red-alt); } 34 | .pp-red-alt-2 { color: var(--pp-red-alt-2); fill: var(--pp-red-alt-2); } 35 | .pp-black { color: var(--pp-black); fill: var(--pp-black); } 36 | .pp-light-grey { color: var(--pp-light-grey); fill: var(--pp-light-grey); } 37 | .pp-grey { color: var(--pp-grey); fill: var(--pp-grey); } 38 | .pp-white { color: var(--pp-white); fill: var(--pp-white); } 39 | .pp-green { color: var(--pp-green); fill: var(--pp-green); } 40 | .pp-dark-green { color: var(--pp-green-dark); fill: var(--pp-green-dark); } 41 | .pp-orange { color: var(--pp-orange); fill: var(--pp-orange); } 42 | 43 | .display-none, .d-none { display: none;} 44 | 45 | .font-weight-bold { font-weight: bold; } 46 | 47 | .text-center { text-align: center; } 48 | 49 | .relative { position: relative; } 50 | 51 | .color-manager-page-header { 52 | margin: var(--header-page-margin-color-manager); 53 | } 54 | 55 | .color-manager-page-header h2, .color-manager-section h3 { 56 | font-weight: bold; 57 | } 58 | 59 | .color-manager-page-header h2 svg { 60 | vertical-align: sub; 61 | height: 1em; 62 | margin-right: 3px; 63 | } 64 | 65 | .color-manager-section { 66 | margin-top: 20px; 67 | } 68 | 69 | .color-manager-section .cm-section-desc { 70 | margin-bottom: 15px; 71 | } 72 | 73 | .color-manager-section .cm-section-desc-info-panel { 74 | margin-bottom: 15px; 75 | width: fit-content; 76 | } 77 | 78 | .color-manager-section .cm-section-desc-info-panel i { 79 | color: var(--blue-icon-dark); 80 | margin-right: 3px; 81 | } 82 | 83 | .color-manager-section-icon-title { 84 | width: 1.2em; 85 | vertical-align: text-bottom; 86 | content: url("data:image/svg+xml,%3Csvg version='1.1' id='' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 512 512' xml:space='preserve'%3E%3Cg%3E%3Crect x='398.515' y='366.845' style='fill:%23D4145A;' width='95.01' height='95.01'/%3E%3Crect x='303.505' y='366.845' style='fill:%23D4145A;' width='95.01' height='95.01'/%3E%3C/g%3E%3Crect x='208.495' y='366.845' style='fill:%239E005D;' width='95.01' height='95.01'/%3E%3Crect x='113.485' y='366.845' style='fill:%2393278F;' width='95.01' height='95.01'/%3E%3Crect x='18.474' y='366.845' style='fill:%23662D91;' width='95.01' height='95.01'/%3E%3Crect x='398.515' y='271.835' style='fill:%230087CE;' width='95.01' height='95.01'/%3E%3Crect x='303.505' y='271.835' style='fill:%23008FD0;' width='95.01' height='95.01'/%3E%3Crect x='208.495' y='271.835' style='fill:%230098D2;' width='95.01' height='95.01'/%3E%3Crect x='113.485' y='271.835' style='fill:%2300A4D4;' width='95.01' height='95.01'/%3E%3Crect x='18.474' y='271.835' style='fill:%2300B4D7;' width='95.01' height='95.01'/%3E%3Crect x='398.515' y='176.825' style='fill:%23595E62;' width='95.01' height='95.01'/%3E%3Crect x='303.505' y='176.825' style='fill:%237E8488;' width='95.01' height='95.01'/%3E%3Crect x='208.495' y='176.825' style='fill:%23AFB6BB;' width='95.01' height='95.01'/%3E%3Crect x='113.485' y='176.825' style='fill:%23E7ECED;' width='95.01' height='95.01'/%3E%3Crect x='18.474' y='176.825' style='fill:%23F1F2F2;' width='95.01' height='95.01'/%3E%3Crect x='398.515' y='81.814' style='fill:%23FFD311;' width='95.01' height='95.01'/%3E%3Crect x='303.505' y='81.814' style='fill:%23FDB51E;' width='95.01' height='95.01'/%3E%3Cg%3E%3Cpolygon style='fill:%23ED1C24;' points='303.505,81.814 303.505,176.825 208.495,176.825 208.495,81.814 240.165,81.814 '/%3E%3Crect x='113.485' y='81.814' style='fill:%23ED1C24;' width='95.01' height='95.01'/%3E%3C/g%3E%3Crect x='18.474' y='81.814' style='fill:%23C1272D;' width='95.01' height='95.01'/%3E%3Cg%3E%3Cpolygon style='fill:%23364853;' points='493.526,461.856 493.526,504.082 18.474,504.082 18.474,461.856 113.485,461.856 208.495,461.856 303.505,461.856 398.515,461.856 '/%3E%3Cpolygon style='fill:%23364853;' points='240.165,7.918 240.165,81.814 208.495,81.814 113.485,81.814 18.474,81.814 18.474,7.918 '/%3E%3C/g%3E%3Cpath d='M248.082,73.897V0H10.557v512h490.887V73.897H248.082z M311.423,453.938v-79.175h79.175v79.175H311.423z M311.423,358.928 v-79.175h79.175v79.175H311.423z M200.577,184.742v79.175h-79.175v-79.175H200.577z M200.577,279.753v79.175h-79.175v-79.175 H200.577z M216.412,279.753h79.175v79.175h-79.175V279.753z M311.423,263.918v-79.175h79.175v79.175H311.423z M295.588,263.918 h-79.175v-79.175h79.175V263.918z M200.577,168.907h-79.175V89.732h79.175V168.907z M121.402,374.763h79.175v79.175h-79.175V374.763 z M216.412,374.763h79.175v79.175h-79.175V374.763z M390.598,89.732v79.175h-79.175V89.732H390.598z M295.588,168.907h-79.175 V89.732h79.175V168.907z M26.392,15.835h205.856v58.062H26.392V15.835z M26.392,89.732h79.175v79.175H26.392V89.732z M26.392,184.742h79.175v79.175H26.392V184.742z M26.392,279.753h79.175v79.175H26.392V279.753z M26.392,374.763h79.175v79.175 H26.392V374.763z M485.608,496.165H26.392v-26.392h459.217V496.165z M406.433,453.938v-79.175h79.175v79.175H406.433z M406.433,358.928v-79.175h79.175v79.175H406.433z M406.433,263.918v-79.175h79.175v79.175H406.433z M406.433,168.907V89.732h79.175 v79.175H406.433z'/%3E%3Cg%3E%3Crect x='44.866' y='36.948' style='fill:%23FFFFFF;' width='47.505' height='15.835'/%3E%3Crect x='108.206' y='36.948' style='fill:%23FFFFFF;' width='105.567' height='15.835'/%3E%3Crect x='44.866' y='110.845' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='234.887' y='110.845' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='234.887' y='205.856' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='329.897' y='205.856' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='139.876' y='300.866' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='44.866' y='395.876' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='329.897' y='395.876' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='424.907' y='300.866' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3Crect x='424.907' y='110.845' style='fill:%23FFFFFF;' width='21.113' height='15.835'/%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3C/svg%3E%0A"); 87 | } 88 | 89 | .color-manager-section-icon-default { 90 | width: 1.2em; 91 | vertical-align: text-bottom; 92 | content: url("data:image/svg+xml,%3Csvg height='800px' width='800px' version='1.1' id='' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 512 512' xml:space='preserve'%3E%3Cpath style='fill:%23FFCE47;' d='M433.479,205.747c75.09,43.351,100.812,139.37,57.461,214.46s-139.37,100.812-214.46,57.461 c-7.304-4.21-14.135-8.93-20.48-14.074l31.824-170.903l123.221-97.645C418.677,197.97,426.175,201.537,433.479,205.747z'/%3E%3Cpath style='fill:%23FF4181;' d='M78.521,205.747c-75.09,43.351-100.812,139.37-57.461,214.46s139.37,100.812,214.46,57.461 c7.304-4.21,14.135-8.93,20.48-14.074l-31.824-170.903l-123.221-97.645C93.323,197.97,85.825,201.537,78.521,205.747z'/%3E%3Cpath style='fill:%234EB9FF;' d='M412.999,170.271c0,8.432-0.667,16.707-1.953,24.775L256,256.196l-155.046-61.15 c-1.286-8.068-1.953-16.343-1.953-24.775c0-86.713,70.298-156.999,156.999-156.999S412.999,83.557,412.999,170.271z'/%3E%3Cpath style='fill:%23FF755C;' d='M312.09,316.957H199.91C191.21,371.482,211.933,427.9,256,463.594 C300.066,427.9,320.789,371.482,312.09,316.957z'/%3E%3Cpath style='fill:%2385C250;' d='M256,219.797l56.09,97.16c51.577-19.74,90.086-65.906,98.955-121.911 C358.098,174.724,298.865,185,256,219.797z'/%3E%3Cpath style='fill:%233B8BC0;' d='M100.954,195.046c8.869,56.005,47.379,102.171,98.955,121.911l56.09-97.16 C213.134,185,153.902,174.724,100.954,195.046z'/%3E%3Cpath style='fill:%23174461;' d='M292.981,263.208c9.876,17.119,16.173,35.331,19.109,53.748 c-17.423,6.661-36.326,10.313-56.09,10.313s-38.667-3.652-56.09-10.313c2.936-18.418,9.233-36.629,19.109-53.749 c9.876-17.107,22.494-31.667,36.981-43.411C270.486,231.542,283.105,246.101,292.981,263.208z'/%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3C/svg%3E%0A"); 93 | } 94 | 95 | .color-manager-section-icon-extended { 96 | width: 1.2em; 97 | vertical-align: text-bottom; 98 | content: url("data:image/svg+xml,%3Csvg height='800px' width='800px' version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 512 512' xml:space='preserve'%3E%3Cpath style='fill:%23FFCE47;' d='M425.484,207.989c71.707,41.398,96.27,133.092,54.873,204.799s-133.092,96.27-204.799,54.873 c-6.975-4.02-13.498-8.527-19.558-13.44l30.391-163.204l117.67-93.246C411.349,200.562,418.51,203.968,425.484,207.989z'/%3E%3Cpath style='fill:%23FF4181;' d='M86.516,207.989c-71.707,41.398-96.27,133.092-54.873,204.799s133.092,96.27,204.799,54.873 c6.975-4.02,13.498-8.527,19.558-13.44L225.61,291.016l-117.67-93.246C100.652,200.562,93.491,203.968,86.516,207.989z'/%3E%3Cpath style='fill:%234EB9FF;' d='M405.927,174.111c0,8.052-0.637,15.954-1.865,23.659L256,256.165L107.939,197.77 c-1.228-7.705-1.865-15.607-1.865-23.659c0-82.807,67.131-149.926,149.926-149.926S405.927,91.304,405.927,174.111z'/%3E%3Cpath style='fill:%23FF755C;' d='M309.564,314.189H202.437C194.13,366.258,213.919,420.134,256,454.221 C298.082,420.134,317.871,366.258,309.564,314.189z'/%3E%3Cpath style='fill:%2385C250;' d='M256,221.406l53.563,92.783c49.253-18.851,86.028-62.937,94.498-116.419 C353.499,178.363,296.935,188.176,256,221.406z'/%3E%3Cpath style='fill:%233B8BC0;' d='M107.939,197.77c8.47,53.482,45.244,97.568,94.498,116.419L256,221.406 C215.066,188.176,158.502,178.363,107.939,197.77z'/%3E%3Cpath style='fill:%23174461;' d='M291.315,262.862c9.431,16.348,15.444,33.739,18.248,51.327c-16.638,6.361-34.689,9.848-53.563,9.848 s-36.925-3.487-53.563-9.848c2.804-17.588,8.817-34.979,18.248-51.327c9.431-16.337,21.481-30.24,35.315-41.456 C269.834,232.621,281.884,246.525,291.315,262.862z'/%3E%3Cpath style='fill:%2301121C;' d='M431.278,197.952c-4.786-2.763-9.656-5.251-14.592-7.472c0.545-5.385,0.825-10.847,0.825-16.373 c0-89.057-72.454-161.509-161.509-161.509S94.49,85.05,94.49,174.107c0,5.527,0.28,10.988,0.825,16.373 c-4.936,2.221-9.807,4.709-14.592,7.472C3.598,242.48-22.922,341.452,21.607,418.578c21.57,37.361,56.4,64.086,98.07,75.252 c13.915,3.728,28.034,5.573,42.065,5.573c27.986,0,55.607-7.34,80.492-21.708c4.767-2.752,9.357-5.722,13.767-8.892 c4.41,3.17,9,6.141,13.767,8.892c24.887,14.369,52.504,21.709,80.492,21.708c14.027,0,28.152-1.845,42.065-5.573 c41.67-11.166,76.5-37.891,98.07-75.252C534.922,341.454,508.403,242.48,431.278,197.952z M117.663,174.107 c0-76.279,62.058-138.337,138.337-138.337s138.338,62.057,138.338,138.337c0,2.746-0.089,5.471-0.248,8.178 c-47.63-13.335-98.629-3.807-138.089,24.587c-39.459-28.395-90.46-37.921-138.089-24.587 C117.753,179.578,117.663,176.853,117.663,174.107z M295.102,373.628c-6.8,25.377-20.343,47.788-39.103,65.264 c-18.759-17.477-32.303-39.887-39.103-65.264c-3.901-14.559-5.392-29.384-4.538-44.006c13.887,3.902,28.523,5.995,43.641,5.995 s29.754-2.094,43.641-5.995C300.494,344.245,299.003,359.068,295.102,373.628z M256,312.445c-14.005,0-27.529-2.099-40.28-5.988 c3.066-13.101,8.08-25.821,14.998-37.803c6.992-12.111,15.562-22.754,25.286-31.844c9.723,9.088,18.287,19.735,25.278,31.844 c6.917,11.98,11.932,24.702,14.998,37.803C283.529,310.346,270.006,312.445,256,312.445z M193.993,297.744 c-36.201-18.23-63.353-51.89-72.747-92.294c39.706-12.071,82.455-5.374,116.351,16.888c-10.296,10.06-19.404,21.666-26.945,34.73 C203.186,270,197.621,283.669,193.993,297.744z M301.35,257.068c-7.543-13.065-16.652-24.672-26.949-34.733 c22.675-14.893,49.312-22.821,76.354-22.821c13.379,0,26.855,1.949,39.998,5.944c-9.396,40.4-36.547,74.058-72.746,92.287 C314.38,283.669,308.815,270,301.35,257.068z M230.647,457.627c-32,18.476-69.28,23.383-104.974,13.82 c-35.692-9.563-65.524-32.454-83.999-64.454C3.535,340.933,26.249,256.16,92.309,218.02c2.379-1.373,4.783-2.658,7.207-3.874 c12.258,47.886,45.974,87.27,90.254,107.259c-1.96,19.275-0.418,38.946,4.746,58.221c7.621,28.444,22.498,53.697,43.053,73.725 C235.311,454.833,233.006,456.266,230.647,457.627z M470.326,406.993c-18.475,32.001-48.308,54.891-83.999,64.454 c-35.694,9.564-72.973,4.655-104.974-13.82c-2.359-1.363-4.662-2.793-6.922-4.276c20.555-20.028,35.432-45.28,43.053-73.725 c5.165-19.275,6.707-38.946,4.746-58.221c44.277-19.988,77.992-59.37,90.252-107.253c2.424,1.217,4.83,2.496,7.208,3.869 C485.751,256.16,508.465,340.933,470.326,406.993z'/%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3Cg%3E%3C/g%3E%3C/svg%3E%0A"); 99 | } 100 | 101 | .color-manager-section-icon-text { 102 | width: 1.3em; 103 | vertical-align: text-bottom; 104 | content: url("data:image/svg+xml,%3Csvg width='800px' height='800px' viewBox='0 0 73 73' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg id='' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cg id='container' transform='translate(2.000000, 2.000000)' fill='%23FFFFFF' fill-rule='nonzero' stroke='%23023A5F' stroke-width='2'%3E%3Crect id='mask' x='-1' y='-1' width='71' height='71' rx='14'%3E%3C/rect%3E%3C/g%3E%3Cg id='text' transform='translate(10.000000, 10.000000)' fill-rule='nonzero'%3E%3Cpath d='M42.5740686,5.85930588 L42.5740686,41.0138941 C42.5740686,41.8743647 41.8757157,42.5727176 41.0152451,42.5727176 L5.86065686,42.5727176 C5.00018627,42.5727176 4.30183333,41.8743647 4.30183333,41.0138941 L4.30183333,5.85930588 C4.30183333,4.99883529 5.00018627,4.30048235 5.86065686,4.30048235 L41.0152451,4.30048235 C41.8757157,4.30048235 42.5740686,4.99883529 42.5740686,5.85930588 Z' id='' fill='%233EC3FF'%3E%3C/path%3E%3Cpath d='M42.5740686,5.85930588 L42.5740686,41.0138941 C42.5740686,41.8743647 41.8757157,42.5727176 41.0152451,42.5727176 L23.437951,42.5727176 L23.437951,4.30048235 L41.0152451,4.30048235 C41.8757157,4.30048235 42.5740686,4.99883529 42.5740686,5.85930588 Z' id='' fill='%230789E0'%3E%3C/path%3E%3Cpolygon id='' fill='%23FFFFFF' points='7.41948039 7.41812941 39.4564216 7.41812941 39.4564216 39.4550706 7.41948039 39.4550706'%3E%3C/polygon%3E%3Cpolygon id='' fill='%23BFEBFF' points='23.437951 7.41812941 39.4564216 7.41812941 39.4564216 39.4550706 23.437951 39.4550706'%3E%3C/polygon%3E%3Cpath d='M32.8958529,15.3743647 L32.8958529,18.599051 C32.8958529,19.4595216 32.1975,20.1578745 31.3370294,20.1578745 C30.4755196,20.1578745 29.7782059,19.4595216 29.7782059,18.599051 L29.7782059,16.9331882 L24.9967745,16.9331882 L24.9967745,29.9400118 L26.0806765,29.9400118 C26.9421863,29.9400118 27.6395,30.6383647 27.6395,31.4988353 C27.6395,32.3593059 26.9421863,33.0576588 26.0806765,33.0576588 L20.7941863,33.0576588 C19.9337157,33.0576588 19.2353627,32.3593059 19.2353627,31.4988353 C19.2353627,30.6383647 19.9337157,29.9400118 20.7941863,29.9400118 L21.8791275,29.9400118 L21.8791275,16.9331882 L17.0976961,16.9331882 L17.0976961,18.599051 C17.0976961,19.4595216 16.3993431,20.1578745 15.5388725,20.1578745 C14.678402,20.1578745 13.980049,19.4595216 13.980049,18.599051 L13.980049,15.3743647 C13.980049,14.5128549 14.678402,13.8155412 15.5388725,13.8155412 L31.3370294,13.8155412 C32.1975,13.8155412 32.8958529,14.5128549 32.8958529,15.3743647 Z' id='' fill='%23435D7A'%3E%3C/path%3E%3Cpath d='M32.8958529,15.3743647 L32.8958529,18.599051 C32.8958529,19.4595216 32.1975,20.1578745 31.3370294,20.1578745 C30.4755196,20.1578745 29.7782059,19.4595216 29.7782059,18.599051 L29.7782059,16.9331882 L24.9967745,16.9331882 L24.9967745,29.9400118 L26.0806765,29.9400118 C26.9421863,29.9400118 27.6395,30.6383647 27.6395,31.4988353 C27.6395,32.3593059 26.9421863,33.0576588 26.0806765,33.0576588 L23.437951,33.0576588 L23.437951,13.8155412 L31.3370294,13.8155412 C32.1975,13.8155412 32.8958529,14.5128549 32.8958529,15.3743647 Z' id='' fill='%232D3E53'%3E%3C/path%3E%3Cpath d='M5.86076078,0 C2.62994314,0 0.00135098039,2.62848824 0.00135098039,5.8594098 C0.00135098039,9.09033137 2.62983922,11.7187157 5.86076078,11.7187157 C9.09168235,11.7187157 11.7200667,9.09022745 11.7200667,5.8594098 C11.7200667,2.62859216 9.09157843,0 5.86076078,0 Z' id='' fill='%23FD3186'%3E%3C/path%3E%3Cpath d='M8.60210784,5.85930588 C8.60210784,7.37136471 7.37271569,8.60075686 5.86065686,8.60075686 C4.34859804,8.60075686 3.11920588,7.37136471 3.11920588,5.85930588 C3.11920588,4.34724706 4.34859804,3.1178549 5.86065686,3.1178549 C7.37271569,3.1178549 8.60210784,4.34724706 8.60210784,5.85930588 Z' id='' fill='%23FFFFFF'%3E%3C/path%3E%3Cpath d='M41.0148294,0 C37.7839078,0 35.1554196,2.62848824 35.1554196,5.8594098 C35.1554196,9.09033137 37.7839078,11.7187157 41.0148294,11.7187157 C44.245751,11.7187157 46.8742392,9.09022745 46.8742392,5.8594098 C46.8742392,2.62859216 44.245751,0 41.0148294,0 Z' id='' fill='%23C7318B'%3E%3C/path%3E%3Cpath d='M43.7566961,5.85930588 C43.7566961,7.37136471 42.5262647,8.60075686 41.0152451,8.60075686 C39.5031863,8.60075686 38.2727549,7.37136471 38.2727549,5.85930588 C38.2727549,4.34724706 39.5031863,3.1178549 41.0152451,3.1178549 C42.5262647,3.1178549 43.7566961,4.34724706 43.7566961,5.85930588 Z' id='' fill='%23FFFFFF'%3E%3C/path%3E%3Cpath d='M5.86076078,35.1540686 C2.62994314,35.1540686 0.00135098039,37.7825569 0.00135098039,41.0134784 C0.00135098039,44.2444 2.62983922,46.8728882 5.86076078,46.8728882 C9.09168235,46.8728882 11.7200667,44.2444 11.7200667,41.0134784 C11.7200667,37.7825569 9.09157843,35.1540686 5.86076078,35.1540686 Z' id='' fill='%23FD3186'%3E%3C/path%3E%3Cpath d='M8.60210784,41.0138941 C8.60210784,42.5249137 7.37271569,43.7553451 5.86065686,43.7553451 C4.34859804,43.7553451 3.11920588,42.5249137 3.11920588,41.0138941 C3.11920588,39.5018353 4.34859804,38.2714039 5.86065686,38.2714039 C7.37271569,38.2714039 8.60210784,39.5018353 8.60210784,41.0138941 Z' id='' fill='%23FFFFFF'%3E%3C/path%3E%3Cpath d='M48.9351078,36.6212333 L46.234602,39.3217392 C45.784102,39.7722392 45.784102,40.5011451 46.234602,40.9516451 L52.6079039,47.3249471 C53.0575725,47.7746157 53.0575725,48.5050804 52.6071765,48.9555804 L50.7802353,50.7823137 L39.4564216,41.5778765 C39.4564216,41.5778765 32.4621882,32.9595569 32.7098333,32.7119118 C32.9574784,32.4642667 33.3168392,32.3268824 33.7025961,32.3878843 L48.2979647,34.6673 C49.228998,34.8120627 49.6022843,35.9539529 48.9351078,36.6212333 Z' id='' fill='%23FFA84A'%3E%3C/path%3E%3Cpath d='M32.7098333,32.7119118 L50.7802353,50.7823137 L48.953398,52.609151 C48.5037294,53.0588196 47.7732647,53.0588196 47.3234922,52.609151 L40.9501902,46.235849 C40.4997941,45.7854529 39.7700569,45.7861804 39.3202843,46.235849 L36.619051,48.9370824 C35.952602,49.6035314 34.8098804,49.2309725 34.6651176,48.2999392 L32.385598,33.7045706 C32.3248039,33.3189176 32.4621882,32.9595569 32.7098333,32.7119118 Z' id='' fill='%23FFEB95'%3E%3C/path%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A"); 105 | } 106 | 107 | .color-manager-section-icon-custom { 108 | width: 1.2em; 109 | vertical-align: text-bottom; 110 | content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='' viewBox='0 0 252.667 252.667' xml:space='preserve' width='200px' height='200px' fill='%23000000' stroke='%23000000' stroke-width='0'%3E%3Cg id='' stroke-width='0'/%3E%3Ccircle style='fill:%2314aab1;' cx='126.333' cy='126.333' r='126.333'/%3E%3Cpath style='fill:%23f7fc1d;' d='M215.664,37.002c-49.336-49.336-129.326-49.336-178.662,0l89.331,89.331L215.664,37.002z'/%3E%3Cpath style='fill:%23740181;' d='M126.334,0C94.002,0,61.67,12.334,37.002,37.002l89.331,89.331L126.334,0z'/%3E%3Cpath style='fill:%23F8B242;' d='M37.002,215.664c49.336,49.336,129.326,49.336,178.662,0l-89.331-89.331L37.002,215.664z'/%3E%3Cpath style='fill:%23D09838;' d='M37.003,215.664c24.668,24.668,57.331,37.002,89.331,37.002V126.333L37.003,215.664z'/%3E%3Cpath style='fill:%23E45527;' d='M215.664,37.002l-89.331,89.331l89.331,89.331C265.001,166.328,265.001,86.338,215.664,37.002z'/%3E%3C/svg%3E%0A"); 111 | } 112 | 113 | .cm-section-desc-info-panel { 114 | border-radius: var(--border-radius-color-manager); 115 | padding: 8px 35px 8px 10px; 116 | margin-top: 10px; 117 | margin-bottom: 15px; 118 | border: 1px solid var(--blue-icon-dark); 119 | color: var(--color-primary); 120 | background-color: #FCFCFC; 121 | overflow: auto; 122 | } 123 | 124 | .colour-section { 125 | margin-bottom: 20px; 126 | } 127 | 128 | .colour-section ul { 129 | position: relative; 130 | } 131 | 132 | .colour-section ul li { 133 | list-style-type: none; 134 | display: inline-block; 135 | margin-right: 40px; 136 | margin-bottom: 10px; 137 | margin-top: 10px; 138 | } 139 | 140 | .colour-wrapper { 141 | border: 1px solid currentcolor; 142 | padding: 5px; 143 | min-width: 150px; 144 | width: auto; 145 | margin: 5px; 146 | display: inline-block; 147 | border-radius: var(--border-radius-color-manager); 148 | position: relative; 149 | vertical-align: middle; 150 | box-sizing: content-box; 151 | } 152 | 153 | .delete-icon-wrapper { 154 | position: absolute; 155 | right: 0; 156 | top: 0; 157 | padding: 2px 0 2px 3px; 158 | background-color: var(--pp-white); 159 | border-bottom-left-radius: var(--border-radius-color-manager); 160 | border-left: 1px solid; 161 | border-bottom: 1px solid; 162 | opacity: 0; 163 | transition: var(--transition-color-manager); 164 | } 165 | 166 | .colour-wrapper:hover .delete-icon-wrapper { 167 | opacity: 1; 168 | } 169 | 170 | .colour-boxes { 171 | margin: auto; 172 | display: block; 173 | text-align: center; 174 | } 175 | 176 | .colour-name { 177 | text-align: left; 178 | font-weight: 600; 179 | display: block; 180 | font-size: .85em; 181 | } 182 | 183 | .colour-background { 184 | text-align: left; 185 | display: block; 186 | } 187 | 188 | .colour-background span, .colour-border span, .colour-font span { 189 | display: block; 190 | font-size: .8em; 191 | margin-top: 5px; 192 | } 193 | 194 | .colour-background code, .colour-border code, .colour-font code { 195 | display: block; 196 | width: fit-content; 197 | margin: 3px 0 0 0 !important; 198 | color: var(--pp-black) !important; 199 | background-color: rgb(179, 179, 179) !important; 200 | text-rendering: optimizelegibility; 201 | font-family: monospace !important; 202 | letter-spacing: .06rem; 203 | padding: 1px 3px 3px 3px !important; 204 | border-radius: var(--border-radius-color-manager); 205 | font-size: .9em !important; 206 | } 207 | 208 | .colour-border { 209 | text-align: left; 210 | display: block; 211 | } 212 | 213 | .colour-font { 214 | text-align: left; 215 | display: block; 216 | } 217 | 218 | .default-box-colour { 219 | padding: 2px 10px; 220 | border-radius: var(--border-radius-color-manager); 221 | border: 1px solid var(--pp-black); 222 | box-shadow: var(--box-shadow-color-manager); 223 | margin-left: 5px; 224 | } 225 | 226 | .color-manager-note { 227 | font-size: .8em; 228 | font-style: italic; 229 | } 230 | 231 | li.color-manager-note > a.note-link { 232 | font-weight: 600; 233 | } 234 | 235 | .colour-total-count, .colour-total-count-section { 236 | font-size: .6em; 237 | vertical-align: super; 238 | margin-left: 5px; 239 | padding: 1px 4px 1px 4px; 240 | border-radius: var(--border-radius-color-manager); 241 | color: var(--pp-white); 242 | } 243 | 244 | .colour-total-count { 245 | background-color: var(--pp-green-dark); 246 | } 247 | 248 | .colour-total-count-section { 249 | background-color: var(--blue-icon-dark); 250 | } 251 | 252 | div.color-picker-square { 253 | border-left-width: 5px !important; 254 | } 255 | 256 | .add-colour-btn { 257 | padding: 2px 8px 1px 5px; 258 | background: var(--pp-white); 259 | border: 2px solid var(--pp-green); 260 | position: absolute; 261 | right: 0; 262 | font-size: 1.1em; 263 | border-radius: var(--border-radius-color-manager); 264 | } 265 | 266 | .add-colour-btn a { 267 | transition: var(--transition-color-manager); 268 | } 269 | 270 | .color-manager-section .add-colour-btn a:hover { 271 | color: var(--pp-green) !important; 272 | } 273 | 274 | .add-colour-btn svg { 275 | vertical-align: text-top; 276 | width: 1.1em; 277 | height: 1.1em; 278 | } 279 | 280 | .colour-boxes .add-colour-btn { 281 | position: initial; 282 | font-size: 1em; 283 | margin-left: 1em; 284 | } 285 | 286 | .colour-boxes .no-colours { 287 | margin: 2em auto; 288 | color: var(--pp-grey); 289 | font-style: italic; 290 | } 291 | 292 | .select2-container--default .select2-results > #select2-form-color_id-results.select2-results__options { 293 | font-size: .85em; 294 | } 295 | -------------------------------------------------------------------------------- /Assets/icons/color-palette.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Assets/icons/colour-palette.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 32 | 33 | 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 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /Assets/icons/font-size-color.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Assets/icons/palette-print-bordered.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 17 | 40 | 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 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /Assets/icons/palette-print.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /Controller/ColorManagerController.php: -------------------------------------------------------------------------------- 1 | helper->layout->config for config settings menu sidebar 23 | * Use: $this->helper->layout->plugin for plugin menu sidebar 24 | * @access public 25 | */ 26 | 27 | public function show() 28 | { 29 | $this->response->html($this->helper->layout->config('colorManager:config/colors', array( 30 | 'title' => t('Settings') . ' ⥂ ' . t('Color Manager'), 31 | ))); 32 | } 33 | 34 | public function add() 35 | { 36 | $errors = []; 37 | $values = []; 38 | 39 | $this->response->html($this->helper->layout->config('colorManager:config/add_custom_color', [ 40 | 'errors' => $errors, 41 | 'values' => $values, 42 | 'title' => t('Custom Colors') . ' > ' . t('Add Color'), 43 | ])); 44 | } 45 | 46 | public function remove() 47 | { 48 | $key = $this->request->getStringParam('key'); 49 | $errors = []; 50 | $values = []; 51 | 52 | $custom_colors = $this->configModel->get('kbcolour_ids', ''); 53 | if ($custom_colors == '') { 54 | $custom_colors_array = array(); 55 | } else { 56 | $custom_colors_array = explode(',', $custom_colors); 57 | } 58 | if (($k = array_search($key, $custom_colors_array)) !== false) { 59 | unset($custom_colors_array[$k]); 60 | } 61 | if (is_array($custom_colors_array)) { 62 | $custom_colors_string = implode(',', $custom_colors_array); 63 | } else { 64 | $custom_colors_string = $color_id; 65 | } 66 | $this->configModel->save(['kbcolour_ids' => $custom_colors_string]); 67 | 68 | $this->configModel->remove('kbcolour_name_' . $key); 69 | $this->configModel->remove('kbcolour_backgroundcolor_' . $key); 70 | $this->configModel->remove('kbcolour_bordercolor_' . $key); 71 | 72 | $this->response->redirect($this->helper->url->to('ColorManagerController', 'show', ['plugin' => 'ColorManager', 'url' => t('color-manager')])); 73 | } 74 | 75 | public function save() 76 | { 77 | $errors = []; 78 | $values = []; 79 | 80 | if ($this->request->isPost()) { 81 | $values = $this->request->getValues(); 82 | if (isset($values['color_name'])) { 83 | $color_id = str_replace(' ', '_', strtolower($values['color_name'])); 84 | $custom_colors = $this->configModel->get('kbcolour_ids', ''); 85 | if ($custom_colors == '') { 86 | $custom_colors_array = array(); 87 | } else { 88 | $custom_colors_array = explode(',', $custom_colors); 89 | } 90 | array_push($custom_colors_array, $color_id); 91 | $custom_colors_array = array_unique($custom_colors_array); 92 | if (is_array($custom_colors_array)) { 93 | $custom_colors_string = implode(',', $custom_colors_array); 94 | } else { 95 | $custom_colors_string = $color_id; 96 | } 97 | $this->configModel->save(['kbcolour_ids' => $custom_colors_string]); 98 | $this->configModel->save(['kbcolour_name_' . $color_id => $values['color_name']]); 99 | $this->configModel->save(['kbcolour_backgroundcolor_' . $color_id => $values['background_color']]); 100 | $this->configModel->save(['kbcolour_bordercolor_' . $color_id => $values['border_color']]); 101 | } 102 | } 103 | 104 | $this->response->redirect($this->helper->url->to('ColorManagerController', 'show', ['plugin' => 'ColorManager', 'url' => t('color-manager')])); 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /Helper/CustomColorHelper.php: -------------------------------------------------------------------------------- 1 | ' . $this->colorModelExt->getCssExt() . ''; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | # Plugin Installation 2 | 3 | - **Install via the [Kanboard](https://github.com/kanboard/kanboard "Kanboard - Kanban Project Management Software") Plugin Directory** 4 | - _Go to:_ 5 | - Kanboard: `Plugins` ⥂ `Plugin Directory` 6 | - _or with [PluginManager](https://github.com/aljawaid/PluginManager "A Kanboard plugin") installed:_ 7 | - Kanboard: `Settings` ⥂ `Plugins` ⥂ `Plugin Directory` 8 | - **Install via the [Releases](../master/Releases/ "A copy of each release is saved in the folder") folder** 9 | - A copy of each release is saved in the `/Releases` folder of the repository 10 | - Simply extract the `.zip` file into the `/plugins` directory 11 | - **Install via [GitHub](https://github.com/ "Find the correct plugin from the list of repositories")** 12 | - Download the `.zip` file and decompress everything under the directory `/plugins` 13 | - The folder inside the `.zip` must not contain any branch names and must be exact case (matching the plugin name) 14 | 15 | _Note: The `/plugins` folder is case-sensitive._ 16 | 17 | - **Install using Git CLI** 18 | - `git clone` (_or ftp upload_) and extract the `.zip` file into this folder: `.\plugins\` (must be exact case) 19 | 20 | --- 21 | 22 | Read the full [**Changelog**](../master/changelog.md "See changes") or view the [**README**](../master/README.md "View README") 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 aljawaid 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Locale/ColorManager-Translation-Table.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Locale/ColorManager-Translation-Table.xlsx -------------------------------------------------------------------------------- /Locale/de_DE/translations.php: -------------------------------------------------------------------------------- 1 | 'Eine neue Möglichkeit, Farben in Kanboard voll auszuschöpfen. Wählen Sie aus 3 Farbpaletten oder erstellen Sie Ihre eigene. Wählen Sie in allen Paletten aus über 85 Farben, die zu Ihrem Arbeitsablauf über die Benutzeroberfläche passen.', 8 | // 9 | // ColorManagerContoller.php 10 | // 11 | 'Settings' => 'Einstellungen', 12 | 'Color Manager' => 'Farbmanagement', 13 | 'Custom Colors' => 'Eigene Farben', 14 | 'Add Color' => 'Farbe hinzufügen', 15 | // 16 | // config/add_custom_color.php 17 | // 18 | 'Color Name' => 'Name der Farbe', 19 | 'Background Color' => 'Hintergrundfarbe', 20 | 'Border Color' => 'Rahmenfarbe', 21 | 'Save Color' => 'Farbe speichern', 22 | // 23 | // config/colors.php 24 | // 25 | 'Available Colors' => 'Verfügbare Farben', 26 | 'Default Color Palette' => 'Standard Farbpalette', 27 | 'These colors are part of the core. Pastel styles make these colors universal across all features of the application.' => 'Diese Farben sind Bestandteil des Kanboard Cores. Pasteltöne sorgen dafür, dass diese universell für alle Bereiche der Applikation verwendet werden können.', 28 | 'Task Color' => 'Task Farbe', 29 | 'Change the default color in' => 'Ändere die Standardfarbe zu', 30 | 'Project Settings' => 'Projekteinstellungen', 31 | 'Go to Project Settings' => 'Geh zu den Projekteinstellungen', 32 | 'Extended Color Palette' => 'Erweitert Farbpalette', 33 | 'This palette shows a collection of colors different to those in the default palette.' => 'Diese Palette enthält eine Auswahl von Farben die sich von denen der Standard Palette unterscheiden.', 34 | 'Colors are named based on their common color name.' => 'Die Farben werden auf der Grundlage ihres allgemeinen Farbnamens benannt.', 35 | 'Text Color Palette' => 'Text Farbpalette', 36 | 'This palette shows a collection of colors different to those in the default palette and enhances colors from the extended palette. This palette primarily uses alternative colors for text. These colors are particularly suitable for tags and categories.' => 'Diese Palette zeigt eine Sammlung von Farben, die sich von denen in der Standardpalette unterscheiden, und verbessert Farben aus der erweiterten Palette. Diese Palette verwendet hauptsächlich alternative Farben für Text. Diese Farben eignen sich besonders gut für Tags und Kategorien.', 37 | 'Colors are named based on their common color name. Names are preceded by their text color.' => 'Die Farben werden auf der Grundlage ihres allgemeinen Farbnamens benannt. Namen wird ihre Textfarbe vorangestellt.', 38 | 'Text Color' => 'Textfarbe', 39 | 'Add to this palette' => 'Zu dieser Palette hinzufügen', 40 | 'Custom Color Palette' => 'Benutzerdefinierte Farbpalette', 41 | 'This palette shows all user created colors. These colors are unique to your application.' => 'Diese Palette zeigt alle vom Benutzer erstellten Farben. Diese Farben sind individuell für Ihre Anwendung.', 42 | 'Color names matching colors in other palettes will override those colors. Duplicate color names will not be created.' => 'Farbnamen, die mit Farben in anderen Paletten übereinstimmen, setzen diese Farben außer Kraft. Doppelte Farbnamen werden nicht erstellt.', 43 | 'Delete Color' => 'Farbe löschen', 44 | 'This palette is empty' => 'Diese Palette ist leer', 45 | // 46 | // model/ColorModelExt.php /// COLOR NAMES 47 | // 48 | 'Aqua' => 'Aqua', 49 | 'Amber' => 'Bernstein', 50 | 'Beige' => 'Beige', 51 | 'Blood Red' => 'Blutrot', 52 | 'Blood Red on Pale Orange' => 'Blutrot auf Hellorange', 53 | 'Blue Grey' => 'Blau Grau', 54 | 'Bright Green' => 'Hellgrün', 55 | 'Bright Red' => 'Helles Rot', 56 | 'Bright White' => 'Helles Weiß', 57 | 'Bright Yellow' => 'Helles Gelb', 58 | 'Classic Silver' => 'Klassisches Silber', 59 | 'Copper' => 'Kupfer', 60 | 'Cream' => 'Creme', 61 | 'Crimson' => 'Karminrot', 62 | 'Dark Brown' => 'Dunkelbraun', 63 | 'Dark Brown on Cream' => 'Dunkelbraun auf Creme', 64 | 'Dark Gold' => 'Dunkelgold', 65 | 'Dark Green on Lime Green' => 'Dunkelgrün auf Limette Grün', 66 | 'Dark Pink' => 'Dunkelrosa', 67 | 'Dark Red' => 'Dunkelrot', 68 | 'Deep Amber' => 'Tiefes Bernstein', 69 | 'Deep Blue on Aqua' => 'Tiefblau auf Aqua', 70 | 'Deep Green' => 'Tiefgrün', 71 | 'Deep Grey' => 'Tiefes Grau', 72 | 'Deep Purple' => 'Tiefes Violett', 73 | 'Dim Grey' => 'Abm Grau', 74 | 'Dirty Green' => 'Schmutziges Grün', 75 | 'Dirty Yellow' => 'Schmutziges Gelb', 76 | 'Grey on Black' => 'Grau auf Schwarz', 77 | 'Gold' => 'Gold', 78 | 'Khaki' => 'Khaki', 79 | 'Lime Green' => 'Limonengrün', 80 | 'Lint' => 'Fussel', 81 | 'Magenta' => 'Magenta', 82 | 'Maroon on Classic Silver' => 'Kastanienbraun auf klassischem Silber', 83 | 'Mint Green' => 'Minzgrün', 84 | 'Olive' => 'Olivgrün', 85 | 'Orange on Black' => 'Orange auf Schwarz', 86 | 'Pale Blue' => 'Blassblau', 87 | 'Pale Orange' => 'Blass Orange', 88 | 'Pale Purple' => 'Blassviolett', 89 | 'Peach' => 'Pfirsich', 90 | 'Pumpkin Orange' => 'Kürbis Orange', 91 | 'Red on Black' => 'Rot auf Schwarz', 92 | 'Red Orange' => 'Rot Orange', 93 | 'Royal Blue' => 'Königlich Blau', 94 | 'Scarlet' => 'Scharlachrot', 95 | 'White' => 'Weiß', 96 | 'White on Black' => 'Weiß auf Schwarz', 97 | 'White on Blood Red' => 'Weiß auf Blutrot', 98 | 'White on Blue Grey' => 'Weiß auf Blau Grau', 99 | 'White on Bright Red' => 'Weiß auf Helles Rot', 100 | 'White on Copper' => 'Weiß auf Kupfer', 101 | 'White on Dark Brown' => 'Weiß auf Dunkelbraun', 102 | 'White on Dark Red' => 'Weiß auf Dunkelrot', 103 | 'White on Dark Teal' => 'Weiß auf Dunkles Türkis', 104 | 'White on Deep Blue' => 'Weiß auf Dunkelblau', 105 | 'White on Deep Green' => 'Weiß auf Deep Green', 106 | 'White on Deep Grey' => 'Weiß auf Tiefgrau', 107 | 'White on Deep Purple' => 'Weiß auf Tiefes Violett', 108 | 'White on Dim Grey' => 'Weiß auf schwachem Grau', 109 | 'White on Lime Green' => 'Weiß auf Lindgrün', 110 | 'White on Green' => 'Weiß auf Grün', 111 | 'White on Maroon' => 'Weiß auf Kastanienbraun', 112 | 'White on Olive' => 'Weiß auf Olive', 113 | 'White on Peach' => 'Weiß auf Pfirsich', 114 | 'White on Purple' => 'Weiß auf Violett', 115 | 'White on Red Orange' => 'Weiß auf Rotorange', 116 | 'White on Royal Blue' => 'Weiß auf Königlich Blau', 117 | 'White on Scarlet' => 'Weiß auf Scharlachrot', 118 | 'Yellow Green' => 'Gelbgrün' 119 | ); 120 | -------------------------------------------------------------------------------- /Locale/en_GB/translations.php: -------------------------------------------------------------------------------- 1 | 'A new way to utilise colors to their full potential in Kanboard. Choose from 3 color palettes or create your own. Across all palettes, choose from over 85 colors to match your workflow across the interface.', 8 | // 9 | // ColorManagerContoller.php 10 | // 11 | 'Settings' => 'Settings', 12 | 'Color Manager' => 'Colour Manager', 13 | 'Custom Colors' => 'Custom Colours', 14 | 'Add Color' => 'Add Colour', 15 | // 16 | // config/add_custom_color.php 17 | // 18 | 'Color Name' => 'Colour Name', 19 | 'Background Color' => 'Background Colour', 20 | 'Border Color' => 'Border Colour', 21 | 'Save Color' => 'Save Colour', 22 | // 23 | // config/colors.php 24 | // 25 | 'Available Colors' => 'Available Colours', 26 | 'Default Color Palette' => 'Default Colour Palette', 27 | 'These colors are part of the core. Pastel styles make these colors universal across all features of the application.' => 'These colours are part of the core. Pastel styles make these colours universal across all features of the application.', 28 | 'Task Color' => 'Task Colour', 29 | 'Change the default color in' => 'Change the default colour in', 30 | 'Project Settings' => 'Project Settings', 31 | 'Go to Project Settings' => 'Go to Project Settings', 32 | 'Extended Color Palette' => 'Extended Colour Palette', 33 | 'This palette shows a collection of colors different to those in the default palette.' => 'This palette shows a collection of colours different to those in the default palette.', 34 | 'Colors are named based on their common color name.' => 'Colours are named based on their common colour name.', 35 | 'Text Color Palette' => 'Text Colour Palette', 36 | 'This palette shows a collection of colors different to those in the default palette and enhances colors from the extended palette. This palette primarily uses alternative colors for text. These colors are particularly suitable for tags and categories.' => 'This palette shows a collection of colours different to those in the default palette and enhances colours from the extended palette. This palette primarily uses alternative colours for text. These colours are particularly suitable for tags and categories.', 37 | 'Colors are named based on their common color name. Names are preceded by their text color.' => 'Colours are named based on their common colour name. Names are preceded by their text colour.', 38 | 'Text Color' => 'Text Colour', 39 | 'Add to this palette' => 'Add to this palette', 40 | 'Custom Color Palette' => 'Custom Colour Palette', 41 | 'This palette shows all user created colors. These colors are unique to your application.' => 'This palette shows all user created colours. These colours are unique to your application.', 42 | 'Color names matching colors in other palettes will override those colors. Duplicate color names will not be created.' => 'Colour names matching colours in other palettes will override those colours. Duplicate colour names will not be created.', 43 | 'Delete Color' => 'Delete Colour', 44 | 'This palette is empty' => 'This palette is empty', 45 | // 46 | // model/ColorModelExt.php /// COLOR NAMES 47 | // 48 | 'Aqua' => 'Aqua', 49 | 'Beige' => 'Beige', 50 | 'Blood Red' => 'Blood Red', 51 | 'Blood Red on Pale Orange' => 'Blood Red on Pale Orange', 52 | 'Blue Grey' => 'Blue Grey', 53 | 'Bright Green' => 'Bright Green', 54 | 'Bright Red' => 'Bright Red', 55 | 'Bright White' => 'Bright White', 56 | 'Bright Yellow' => 'Bright Yellow', 57 | 'Classic Silver' => 'Classic Silver', 58 | 'Copper' => 'Copper', 59 | 'Cream' => 'Cream', 60 | 'Crimson' => 'Crimson', 61 | 'Dark Brown' => 'Dark Brown', 62 | 'Dark Brown on Cream' => 'Dark Brown on Cream', 63 | 'Dark Gold' => 'Dark Gold', 64 | 'Dark Green on Lime Green' => 'Dark Green on Lime Green', 65 | 'Dark Pink' => 'Dark Pink', 66 | 'Dark Red' => 'Dark Red', 67 | 'Deep Amber' => 'Deep Amber', 68 | 'Deep Blue on Aqua' => 'Deep Blue on Aqua', 69 | 'Deep Green' => 'Deep Green', 70 | 'Deep Grey' => 'Deep Grey', 71 | 'Deep Purple' => 'Deep Purple', 72 | 'Dim Grey' => 'Dim Grey', 73 | 'Dirty Green' => 'Dirty Green', 74 | 'Dirty Yellow' => 'Dirty Yellow', 75 | 'Gold' => 'Gold', 76 | 'Grey on Black' => 'Grey on Black', 77 | 'Khaki' => 'Khaki', 78 | 'Lime Green' => 'Lime Green', 79 | 'Lint' => 'Lint', 80 | 'Magenta' => 'Magenta', 81 | 'Maroon on Classic Silver' => 'Maroon on Classic Silver', 82 | 'Mint Green' => 'Mint Green', 83 | 'Olive' => 'Olive', 84 | 'Orange on Black' => 'Orange on Black', 85 | 'Pale Blue' => 'Pale Blue', 86 | 'Pale Orange' => 'Pale Orange', 87 | 'Pale Purple' => 'Pale Purple', 88 | 'Peach' => 'Peach', 89 | 'Pumpkin Orange' => 'Pumpkin Orange', 90 | 'Red on Black' => 'Red on Black', 91 | 'Red Orange' => 'Red Orange', 92 | 'Royal Blue' => 'Royal Blue', 93 | 'Scarlet' => 'Scarlet', 94 | 'White' => 'White', 95 | 'White on Black' => 'White on Black', 96 | 'White on Blood Red' => 'White on Blood Red', 97 | 'White on Blue Grey' => 'White on Blue Grey', 98 | 'White on Bright Red' => 'White on Bright Red', 99 | 'White on Copper' => 'White on Copper', 100 | 'White on Dark Brown' => 'White on Dark Brown', 101 | 'White on Dark Red' => 'White on Dark Red', 102 | 'White on Dark Teal' => 'White on Dark Teal', 103 | 'White on Deep Blue' => 'White on Deep Blue', 104 | 'White on Deep Green' => 'White on Deep Green', 105 | 'White on Deep Grey' => 'White on Deep Grey', 106 | 'White on Deep Purple' => 'White on Deep Purple', 107 | 'White on Dim Grey' => 'White on Dim Grey', 108 | 'White on Lime Green' => 'White on Lime Green', 109 | 'White on Green' => 'White on Green', 110 | 'White on Maroon' => 'White on Maroon', 111 | 'White on Olive' => 'White on Olive', 112 | 'White on Peach' => 'White on Peach', 113 | 'White on Purple' => 'White on Purple', 114 | 'White on Red Orange' => 'White on Red Orange', 115 | 'White on Royal Blue' => 'White on Royal Blue', 116 | 'White on Scarlet' => 'White on Scarlet', 117 | 'Yellow Green' => 'Yellow Green', 118 | ); 119 | -------------------------------------------------------------------------------- /Locale/translations-starter-template.php: -------------------------------------------------------------------------------- 1 | '', 8 | // 9 | // ColorManagerContoller.php 10 | // 11 | 'Settings' => '', 12 | 'Color Manager' => '', 13 | 'Custom Colors' => '', 14 | 'Add Color' => '', 15 | // 16 | // config/add_custom_color.php 17 | // 18 | 'Color Name' => '', 19 | 'Background Color' => '', 20 | 'Border Color' => '', 21 | 'Save Color' => '', 22 | // 23 | // config/colors.php 24 | // 25 | 'Available Colors' => '', 26 | 'Default Color Palette' => '', 27 | 'These colors are part of the core. Pastel styles make these colors universal across all features of the application.' => '', 28 | 'Task Color' => '', 29 | 'Change the default color in' => '', 30 | 'Project Settings' => '', 31 | 'Go to Project Settings' => '', 32 | 'Extended Color Palette' => '', 33 | 'This palette shows a collection of colors different to those in the default palette.' => '', 34 | 'Colors are named based on their common color name.' => '', 35 | 'Text Color Palette' => '', 36 | 'This palette shows a collection of colors different to those in the default palette and enhances colors from the extended palette. This palette primarily uses alternative colors for text. These colors are particularly suitable for tags and categories.' => '', 37 | 'Colors are named based on their common color name. Names are preceded by their text color.' => '', 38 | 'Text Color' => '', 39 | 'Add to this palette' => '', 40 | 'Custom Color Palette' => '', 41 | 'This palette shows all user created colors. These colors are unique to your application.' => '', 42 | 'Color names matching colors in other palettes will override those colors. Duplicate color names will not be created.' => '', 43 | 'Delete Color' => '', 44 | 'This palette is empty' => '', 45 | // 46 | // model/ColorModelExt.php /// COLOR NAMES 47 | // 48 | 'Aqua' => '', 49 | 'Beige' => '', 50 | 'Blood Red' => '', 51 | 'Blood Red on Pale Orange' => '', 52 | 'Blue Grey' => '', 53 | 'Bright Green' => '', 54 | 'Bright Red' => '', 55 | 'Bright White' => '', 56 | 'Bright Yellow' => '', 57 | 'Classic Silver' => '', 58 | 'Copper' => '', 59 | 'Cream' => '', 60 | 'Crimson' => '', 61 | 'Dark Brown' => '', 62 | 'Dark Brown on Cream' => '', 63 | 'Dark Gold' => '', 64 | 'Dark Green on Lime Green' => '', 65 | 'Dark Pink' => '', 66 | 'Dark Red' => '', 67 | 'Deep Amber' => '', 68 | 'Deep Blue on Aqua' => '', 69 | 'Deep Green' => '', 70 | 'Deep Grey' => '', 71 | 'Deep Purple' => '', 72 | 'Dim Grey' => '', 73 | 'Dirty Green' => '', 74 | 'Dirty Yellow' => '', 75 | 'Gold' => '', 76 | 'Grey on Black' => '', 77 | 'Khaki' => '', 78 | 'Lime Green' => '', 79 | 'Lint' => '', 80 | 'Magenta' => '', 81 | 'Maroon on Classic Silver' => '', 82 | 'Mint Green' => '', 83 | 'Olive' => '', 84 | 'Orange on Black' => '', 85 | 'Pale Blue' => '', 86 | 'Pale Orange' => '', 87 | 'Pale Purple' => '', 88 | 'Peach' => '', 89 | 'Pumpkin Orange' => '', 90 | 'Red on Black' => '', 91 | 'Red Orange' => '', 92 | 'Royal Blue' => '', 93 | 'Scarlet' => '', 94 | 'White' => '', 95 | 'White on Black' => '', 96 | 'White on Blood Red' => '', 97 | 'White on Blue Grey' => '', 98 | 'White on Bright Red' => '', 99 | 'White on Copper' => '', 100 | 'White on Dark Brown' => '', 101 | 'White on Dark Red' => '', 102 | 'White on Dark Teal' => '', 103 | 'White on Deep Blue' => '', 104 | 'White on Deep Green' => '', 105 | 'White on Deep Grey' => '', 106 | 'White on Deep Purple' => '', 107 | 'White on Dim Grey' => '', 108 | 'White on Lime Green' => '', 109 | 'White on Green' => '', 110 | 'White on Maroon' => '', 111 | 'White on Olive' => '', 112 | 'White on Peach' => '', 113 | 'White on Purple' => '', 114 | 'White on Red Orange' => '', 115 | 'White on Royal Blue' => '', 116 | 'White on Scarlet' => '', 117 | 'Yellow Green' => '', 118 | ); 119 | -------------------------------------------------------------------------------- /Model/ColorModelExt.php: -------------------------------------------------------------------------------- 1 | array( 17 | 'name' => 'Aqua', 18 | 'background' => '#1FE1E7', 19 | 'border' => '#1FE1E7', 20 | ), 21 | 'beige' => array( 22 | 'name' => 'Beige', 23 | 'background' => '#B59F84', 24 | 'border' => '#A29380', 25 | ), 26 | 'blood_red' => array( 27 | 'name' => 'Blood Red', 28 | 'background' => '#700000', 29 | 'border' => '#700000', 30 | 'font' => '#000000', 31 | ), 32 | 'blue_grey' => array( 33 | 'name' => 'Blue Grey', 34 | 'background' => '#5C7890', 35 | 'border' => '#405364', 36 | ), 37 | 'bright_green' => array( 38 | 'name' => 'Bright Green', 39 | 'background' => '#00E11A', 40 | 'border' => '#04B318', 41 | ), 42 | 'bright_red' => array( 43 | 'name' => 'Bright Red', 44 | 'background' => '#F00000', 45 | 'border' => '#000000', 46 | 'font' => '#000000', 47 | ), 48 | 'bright_white' => array( 49 | 'name' => 'Bright White', 50 | 'background' => '#FFFFFF', 51 | 'border' => '#FFFFFF', 52 | 'font' => '#000000', 53 | ), 54 | 'bright_yellow' => array( 55 | 'name' => 'Bright Yellow', 56 | 'background' => '#F7FF00', 57 | 'border' => '#FFE407', 58 | ), 59 | 'classic_silver' => array( 60 | 'name' => 'Classic Silver', 61 | 'background' => '#B1B8BA', 62 | 'border' => '#B1B8BA', 63 | ), 64 | 'copper' => array( 65 | 'name' => 'Copper', 66 | 'background' => '#B77729', 67 | 'border' => '#38240C', 68 | ), 69 | 'cream' => array( 70 | 'name' => 'Cream', 71 | 'background' => '#FDE7A6', 72 | 'border' => '#FDD662', 73 | ), 74 | 'crimson' => array( 75 | 'name' => 'Crimson', 76 | 'background' => '#DC143C', 77 | 'border' => '#800000', 78 | ), 79 | 'dark_brown' => array( 80 | 'name' => 'Dark Brown', 81 | 'background' => '#65463E', 82 | 'border' => '#332623', 83 | ), 84 | 'dark_gold' => array( 85 | 'name' => 'Dark Gold', 86 | 'background' => '#DBA40E', 87 | 'border' => '#8E6A08', 88 | ), 89 | 'dark_red' => array( 90 | 'name' => 'Dark Red', 91 | 'background' => '#951313', 92 | 'border' => '#DC143C', 93 | ), 94 | 'dark_pink' => array( 95 | 'name' => 'Dark Pink', 96 | 'background' => '#8C6070', 97 | 'border' => '#F48FB1', 98 | ), 99 | 'deep_amber' => array( 100 | 'name' => 'Deep Amber', 101 | 'background' => '#F0AD4E', 102 | 'border' => '#BD7309', 103 | ), 104 | 'deep_green' => array( 105 | 'name' => 'Deep Green', 106 | 'background' => '#0A7029', 107 | 'border' => '#024015', 108 | ), 109 | 'deep_grey' => array( 110 | 'name' => 'Deep Grey', 111 | 'background' => '#868B8E', 112 | 'border' => '#646464', 113 | ), 114 | 'deep_purple' => array( 115 | 'name' => 'Deep Purple', 116 | 'background' => '#8E44AD', 117 | 'border' => '#610288', 118 | ), 119 | 'dim_grey' => array( 120 | 'name' => 'Dim Grey', 121 | 'background' => '#6A6A6A', 122 | 'border' => '#000000', 123 | 'font' => '#000000', 124 | ), 125 | 'dirty_green' => array( 126 | 'name' => 'Dirty Green', 127 | 'background' => '#5CB85C', 128 | 'border' => '#367936', 129 | ), 130 | 'dirty_yellow' => array( 131 | 'name' => 'Dirty Yellow', 132 | 'background' => '#D1D100', 133 | 'border' => '#6C6C0F', 134 | ), 135 | 'gold' => array( 136 | 'name' => 'Gold', 137 | 'background' => '#F8D210', 138 | 'border' => '#A48900', 139 | ), 140 | 'khaki' => array( 141 | 'name' => 'Khaki', 142 | 'background' => '#A88C6A', 143 | 'border' => '#755024', 144 | ), 145 | 'lime_green' => array( 146 | 'name' => 'Lime Green', 147 | 'background' => '#63B83E', 148 | 'border' => '#39771E', 149 | ), 150 | 'lint' => array( 151 | 'name' => 'Lint', 152 | 'background' => '#BACC81', 153 | 'border' => '#99A869', 154 | ), 155 | 'magenta' => array( 156 | 'name' => 'Magenta', 157 | 'background' => '#FF00FF', 158 | 'border' => '#B904B9', 159 | ), 160 | 'mint_green' => array( 161 | 'name' => 'Mint Green', 162 | 'background' => '#2CF760', 163 | 'border' => '#BDF4CB', 164 | ), 165 | 'olive' => array( 166 | 'name' => 'Olive', 167 | 'background' => '#5E7345', 168 | 'border' => '#252D1C', 169 | ), 170 | 'pale_blue' => array( 171 | 'name' => 'Pale Blue', 172 | 'background' => '#90ADC6', 173 | 'border' => '#646464', 174 | ), 175 | 'pale_orange' => array( 176 | 'name' => 'Pale Orange', 177 | 'background' => '#FFA500', 178 | 'border' => '#000000', 179 | 'font' => '#000000', 180 | ), 181 | 'pale_purple' => array( 182 | 'name' => 'Pale Purple', 183 | 'background' => '#A16AE8', 184 | 'border' => '#6B3AAA', 185 | ), 186 | 'peach' => array( 187 | 'name' => 'Peach', 188 | 'background' => '#FC4F46', 189 | 'border' => '#F22B2B', 190 | ), 191 | 'pumpkin_orange' => array( 192 | 'name' => 'Pumpkin Orange', 193 | 'background' => '#FF6D36', 194 | 'border' => '#F05216', 195 | ), 196 | 'red_orange' => array( 197 | 'name' => 'Red Orange', 198 | 'background' => '#FF3F00', 199 | 'border' => '#FF3F00', 200 | ), 201 | 'royal_blue' => array( 202 | 'name' => 'Royal Blue', 203 | 'background' => '#1953BE', 204 | 'border' => '#1953BE', 205 | 'font' => '#000000', 206 | ), 207 | 'scarlet' => array( 208 | 'name' => 'Scarlet', 209 | 'background' => '#AE0000', 210 | 'border' => '#6A0303', 211 | ), 212 | 'white' => array( 213 | 'name' => 'White', 214 | 'background' => '#FFFFFF', 215 | 'border' => '#EEEEEE', 216 | ), 217 | 'yellow_green' => array( 218 | 'name' => 'Yellow Green', 219 | 'background' => '#C8DF52', 220 | 'border' => '#A5BB32', 221 | ), 222 | ); 223 | 224 | 225 | protected $text_colors = array( 226 | 'blood_red_on_pale_orange' => array( 227 | 'name' => 'Blood Red on Pale Orange', 228 | 'background' => '#FFA500', 229 | 'border' => '#000000', 230 | 'font' => '#700000', 231 | ), 232 | 'dark_brown_on_cream' => array( 233 | 'name' => 'Dark Brown on Cream', 234 | 'background' => '#FDE7A6', 235 | 'border' => '#FDD662', 236 | 'font' => '#846101', 237 | ), 238 | 'dark_green_on_lime_green' => array( 239 | 'name' => 'Dark Green on Lime Green', 240 | 'background' => '#63B83E', 241 | 'border' => '#39771E', 242 | 'font' => '#013311', 243 | ), 244 | 'deep_blue_on_aqua' => array( 245 | 'name' => 'Deep Blue on Aqua', 246 | 'background' => '#1FE1E7', 247 | 'border' => '#1FE1E7', 248 | 'font' => '#0000FF', 249 | ), 250 | 'grey_on_black' => array( 251 | 'name' => 'Grey on Black', 252 | 'background' => '#000000', 253 | 'border' => '#B5B5B5', 254 | 'font' => '#B5B5B5', 255 | ), 256 | 'maroon_on_classic_silver' => array( 257 | 'name' => 'Maroon on Classic Silver', 258 | 'background' => '#B1B8BA', 259 | 'border' => '#B1B8BA', 260 | 'font' => '#800000', 261 | ), 262 | 'orange_on_black' => array( 263 | 'name' => 'Orange on Black', 264 | 'background' => '#000000', 265 | 'border' => '#000000', 266 | 'font' => '#FFA500', 267 | ), 268 | 'red_on_black' => array( 269 | 'name' => 'Red on Black', 270 | 'background' => '#000000', 271 | 'border' => '#000000', 272 | 'font' => '#F00000', 273 | ), 274 | 'white_on_black' => array( 275 | 'name' => 'White on Black', 276 | 'background' => '#000000', 277 | 'border' => '#000000', 278 | 'font' => '#FFFFFF', 279 | ), 280 | 'white_on_blood_red' => array( 281 | 'name' => 'White on Blood Red', 282 | 'background' => '#700000', 283 | 'border' => '#700000', 284 | 'font' => '#FFFFFF', 285 | ), 286 | 'white_on_blue_grey' => array( 287 | 'name' => 'White on Blue Grey', 288 | 'background' => '#5C7890', 289 | 'border' => '#405364', 290 | 'font' => '#FFFFFF', 291 | ), 292 | 'white_on_bright_red' => array( 293 | 'name' => 'White on Bright Red', 294 | 'background' => '#F00000', 295 | 'border' => '#F00000', 296 | 'font' => '#FFFFFF', 297 | ), 298 | 'white_on_copper' => array( 299 | 'name' => 'White on Copper', 300 | 'background' => '#B77729', 301 | 'border' => '#38240C', 302 | 'font' => '#FFFFFF', 303 | ), 304 | 'white_on_dark_brown' => array( 305 | 'name' => 'White on Dark Brown', 306 | 'background' => '#65463E', 307 | 'border' => '#332623', 308 | 'font' => '#FFFFFF', 309 | ), 310 | 'white_on_dark_red' => array( 311 | 'name' => 'White on Dark Red', 312 | 'background' => '#951313', 313 | 'border' => '#DC143C', 314 | 'font' => '#FFFFFF', 315 | ), 316 | 'white_on_dark_teal' => array( 317 | 'name' => 'White on Dark Teal', 318 | 'background' => '#00695C', 319 | 'border' => '#004038', 320 | 'font' => '#FFFFFF', 321 | ), 322 | 'white_on_deep_blue' => array( 323 | 'name' => 'White on Deep Blue', 324 | 'background' => '#0000FF', 325 | 'border' => '#030373', 326 | 'font' => '#FFFFFF', 327 | ), 328 | 'white_on_deep_green' => array( 329 | 'name' => 'White on Deep Green', 330 | 'background' => '#0A7029', 331 | 'border' => '#024015', 332 | 'font' => '#FFFFFF', 333 | ), 334 | 'white_on_deep_grey' => array( 335 | 'name' => 'White on Deep Grey', 336 | 'background' => '#868B8E', 337 | 'border' => '#646464', 338 | 'font' => '#FFFFFF', 339 | ), 340 | 'white_on_deep_purple' => array( 341 | 'name' => 'White on Deep Purple', 342 | 'background' => '#8E44AD', 343 | 'border' => '#610288', 344 | 'font' => '#FFFFFF', 345 | ), 346 | 'white_on_dim_grey' => array( 347 | 'name' => 'White on Dim Grey', 348 | 'background' => '#6A6A6A', 349 | 'border' => '#000000', 350 | 'font' => '#FFFFFF', 351 | ), 352 | 'white_on_green' => array( 353 | 'name' => 'White on Green', 354 | 'background' => '#06C200', 355 | 'border' => '#015B2A', 356 | 'font' => '#FFFFFF', 357 | ), 358 | 'white_on_lime_green' => array( 359 | 'name' => 'White on Lime Green', 360 | 'background' => '#63B83E', 361 | 'border' => '#39771E', 362 | 'font' => '#FFFFFF', 363 | ), 364 | 'white_on_maroon' => array( 365 | 'name' => 'White on Maroon', 366 | 'background' => '#800000', 367 | 'border' => '#4F0404', 368 | 'font' => '#FFFFFF', 369 | ), 370 | 'white_on_olive' => array( 371 | 'name' => 'White on Olive', 372 | 'background' => '#5E7345', 373 | 'border' => '#252D1C', 374 | 'font' => '#FFFFFF', 375 | ), 376 | 'white_on_peach' => array( 377 | 'name' => 'White on Peach', 378 | 'background' => '#FC4F46', 379 | 'border' => '#F22B2B', 380 | 'font' => '#FFFFFF', 381 | ), 382 | 'white_on_purple' => array( 383 | 'name' => 'White on Purple', 384 | 'background' => '#9700FD', 385 | 'border' => '#24003C', 386 | 'font' => '#FFFFFF', 387 | ), 388 | 'white_on_red_orange' => array( 389 | 'name' => 'White on Red Orange', 390 | 'background' => '#FF3F00', 391 | 'border' => '#FF3F00', 392 | 'font' => '#FFFFFF', 393 | ), 394 | 'white_on_royal_blue' => array( 395 | 'name' => 'White on Royal Blue', 396 | 'background' => '#1953BE', 397 | 'border' => '#1953BE', 398 | 'font' => '#FFFFFF', 399 | ), 400 | 'white_on_scarlet' => array( 401 | 'name' => 'White on Scarlet', 402 | 'background' => '#AE0000', 403 | 'border' => '#6A0303', 404 | 'font' => '#FFFFFF', 405 | ), 406 | ); 407 | 408 | // phpcs:disable PSR1.Methods.CamelCapsMethodName.NotCamelCaps 409 | private function custom_colors() 410 | { 411 | // phpcs:enable 412 | $custom_colors = $this->configModel->get('kbcolour_ids', ''); 413 | $custom_colors_array = explode(',', $custom_colors); 414 | $new_colors = []; 415 | 416 | if ($this->configModel->get('kbcolour_ids', '') != '') { 417 | foreach ($custom_colors_array as $color_id) { 418 | $new_color = array( 419 | $color_id => array( 420 | 'name' => $this->configModel->get('kbcolour_name_' . $color_id, ''), 421 | 'background' => $this->configModel->get('kbcolour_backgroundcolor_' . $color_id, ''), 422 | 'border' => $this->configModel->get('kbcolour_bordercolor_' . $color_id, ''), 423 | ), 424 | ); 425 | $new_colors = array_merge($new_colors, $new_color); 426 | } 427 | 428 | return $new_colors; 429 | } 430 | 431 | return $new_colors; 432 | } 433 | 434 | public function getAllColors() 435 | { 436 | $combine_colors = array_merge($this->default_colors, $this->static_colors, $this->text_colors, $this->custom_colors()); 437 | return $combine_colors; 438 | } 439 | 440 | public function getCustomColors() 441 | { 442 | if ($this->configModel->get('kbcolour_ids', '') != '') { 443 | return $this->custom_colors(); 444 | } 445 | 446 | return array(); 447 | } 448 | 449 | public function getStaticColors() 450 | { 451 | return $this->static_colors; 452 | } 453 | 454 | public function getTextColors() 455 | { 456 | return $this->text_colors; 457 | } 458 | 459 | public function getStaticList() 460 | { 461 | $listing = array(); 462 | 463 | foreach ($this->static_colors as $color_id => $color) { 464 | $listing[$color_id] = t($color['name']); 465 | } 466 | 467 | return $listing; 468 | } 469 | 470 | public function getTextColorList() 471 | { 472 | $listing = array(); 473 | 474 | foreach ($this->text_colors as $color_id => $color) { 475 | $listing[$color_id] = t($color['name']); 476 | } 477 | 478 | return $listing; 479 | } 480 | 481 | public function getCssExt() 482 | { 483 | $buffer = ''; 484 | 485 | if ($this->configModel->get('kbcolour_ids', '') != '') { 486 | foreach ($this->custom_colors() as $color => $values) { 487 | $buffer .= '.task-board.color-' . $color . ', .task-summary-container.color-' . $color . ', .color-picker-square.color-' . $color . ', .task-board-category.color-' . $color . ', .table-list-category.color-' . $color . ', .task-tag.color-' . $color . ', .action-color-' . $color . ' {'; 488 | $buffer .= 'background-color: ' . $values['background'] . ';'; 489 | $buffer .= 'border-color: ' . $values['border'] . ';'; 490 | $buffer .= '}'; 491 | $buffer .= 'td.color-' . $color . ' { background-color: ' . $values['background'] . '; }'; 492 | $buffer .= '.table-list-row.color-' . $color . ' { border-left: 5px solid ' . $values['border'] . '; }'; 493 | $buffer .= 'select#form-default_color option[value="' . $color . '"], option[value="' . $color . '"] {'; 494 | $buffer .= 'background-color: ' . $values['background'] . ';'; 495 | $buffer .= 'border-color: ' . $values['border'] . ';'; 496 | $buffer .= '}'; 497 | } 498 | } 499 | foreach ($this->text_colors as $color => $values) { 500 | $buffer .= '.task-board.color-' . $color . ', .task-summary-container.color-' . $color . ', .color-picker-square.color-' . $color . ', .task-board-category.color-' . $color . ', .table-list-category.color-' . $color . ', .task-tag.color-' . $color . ', .action-color-' . $color . ' {'; 501 | $buffer .= 'background-color: ' . $values['background'] . ';'; 502 | $buffer .= 'border-color: ' . $values['border'] . ';'; 503 | if (isset($values['font'])) { 504 | $buffer .= 'color: ' . $values['font'] . '; position: relative; }'; 505 | $buffer .= 'select#form-default_color option[value="' . $color . '"], option[value="' . $color . '"] {'; 506 | $buffer .= 'color: ' . $values['font'] . ';'; 507 | } 508 | $buffer .= '}'; 509 | if (isset($values['font'])) { 510 | $buffer .= '.color-picker-square.color-' . $color . ':before { content: "\2609"; text-align: center; display: block; position: absolute; margin-top: -4px; margin-left: 1px; }'; 511 | $buffer .= '.task-summary-container.color-' . $color . ' .task-summary-columns .task-summary-column { color: ' . $values['font'] . '; }'; 512 | $buffer .= '.task-summary-container.color-' . $color . ' .task-summary-columns .task-summary-column span, .action-color-' . $color . ' { color: ' . $values['font'] . '; }'; 513 | } 514 | $buffer .= 'td.color-' . $color . ' { background-color: ' . $values['background'] . '; }'; 515 | $buffer .= '.table-list-row.color-' . $color . ' { border-left: 5px solid ' . $values['border'] . '; }'; 516 | $buffer .= 'select#form-default_color option[value="' . $color . '"], option[value="' . $color . '"] {'; 517 | $buffer .= 'background-color: ' . $values['background'] . ';'; 518 | $buffer .= 'border-color: ' . $values['border'] . ';'; 519 | $buffer .= '}'; 520 | } 521 | foreach ($this->static_colors as $color => $values) { 522 | $buffer .= '.task-board.color-' . $color . ', .task-summary-container.color-' . $color . ', .color-picker-square.color-' . $color . ', .task-board-category.color-' . $color . ', .table-list-category.color-' . $color . ', .task-tag.color-' . $color . ', .action-color-' . $color . ' {'; 523 | $buffer .= 'background-color: ' . $values['background'] . ';'; 524 | $buffer .= 'border-color: ' . $values['border'] . ';'; 525 | if (isset($values['font'])) { 526 | $buffer .= 'color: ' . $values['font'] . '; position: relative; }'; 527 | $buffer .= 'select#form-default_color option[value="' . $color . '"], option[value="' . $color . '"] {'; 528 | $buffer .= 'color: ' . $values['font'] . ';'; 529 | } 530 | $buffer .= '}'; 531 | if (isset($values['font'])) { 532 | $buffer .= '.color-picker-square.color-' . $color . ':before { content: "\2609"; text-align: center; display: block; position: absolute; margin-top: -4px; margin-left: 1px; }'; 533 | $buffer .= '.task-summary-container.color-' . $color . ' .task-summary-columns .task-summary-column { color: ' . $values['font'] . '; }'; 534 | $buffer .= '.task-summary-container.color-' . $color . ' .task-summary-columns .task-summary-column span, .action-color-' . $color . ' { color: ' . $values['font'] . '; }'; 535 | } 536 | $buffer .= 'td.color-' . $color . ' { background-color: ' . $values['background'] . '; }'; 537 | $buffer .= '.table-list-row.color-' . $color . ' { border-left: 5px solid ' . $values['border'] . '; }'; 538 | $buffer .= 'select#form-default_color option[value="' . $color . '"], option[value="' . $color . '"] {'; 539 | $buffer .= 'background-color: ' . $values['background'] . ';'; 540 | $buffer .= 'border-color: ' . $values['border'] . ';'; 541 | $buffer .= '}'; 542 | } 543 | foreach ($this->default_colors as $color => $values) { 544 | $buffer .= 'select#form-default_color option[value="' . $color . '"], option[value="' . $color . '"], .action-color-' . $color . ' {'; 545 | $buffer .= 'background-color: ' . $values['background'] . ';'; 546 | $buffer .= 'border-color: ' . $values['border'] . ';'; 547 | $buffer .= '}'; 548 | } 549 | 550 | return $buffer; 551 | } 552 | } 553 | -------------------------------------------------------------------------------- /Plugin.php: -------------------------------------------------------------------------------- 1 | hook->on('template:layout:css', array('template' => 'plugins/ColorManager/Assets/css/color-manager.css')); 16 | 17 | // Views - Add Menu Item - Template Hook 18 | // - Override name should start lowercase e.g. pluginNameExampleCamelCase 19 | $this->template->hook->attach('template:config:sidebar', 'colorManager:config/sidebar'); 20 | $this->template->hook->attach('template:layout:bottom', 'colorManager:layout/css_ext'); 21 | 22 | // Extra Page - Routes 23 | // - Example: $this->route->addRoute('/my/custom/route', 'MyController', 'show', 'PluginNameExampleStudlyCaps'); 24 | // - Must have the corresponding action in the matching controller 25 | $this->route->addRoute('/settings/color-manager', 'ColorManagerController', 'show', 'ColorManager'); 26 | 27 | $this->helper->register('customColorHelper', '\Kanboard\Plugin\ColorManager\Helper\CustomColorHelper'); 28 | 29 | $this->hook->on('model:color:get-list', function (&$listing) { 30 | $new_colors = []; 31 | $custom_colors = $this->configModel->get('kbcolour_ids', ''); 32 | $custom_colors_array = explode(',', $custom_colors); 33 | 34 | if ($custom_colors != '') { 35 | foreach ($custom_colors_array as $val) { 36 | $new_color = array( 37 | $val => array( 38 | 'name' => $this->configModel->get('kbcolour_name_' . $val, ''), 39 | ), 40 | ); 41 | $new_colors = array_merge($new_colors, $new_color); 42 | } 43 | 44 | $new_list = array(); 45 | foreach ($new_colors as $color_id => $color) { 46 | $new_list[$color_id] = t($color['name']); 47 | } 48 | } 49 | 50 | $staticColors = $this->colorModelExt->getStaticList(); 51 | 52 | $textColors = $this->colorModelExt->getTextColorList(); 53 | 54 | $listing = array_merge($listing, $staticColors, $textColors, isset($new_list) ? $new_list : array()); 55 | 56 | array_multisort($listing, SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE); 57 | 58 | return $listing; 59 | }); 60 | } 61 | 62 | public function onStartup() 63 | { 64 | Translator::load($this->languageModel->getCurrentLanguage(), __DIR__ . '/Locale'); 65 | } 66 | 67 | public function getClasses() 68 | { 69 | return [ 70 | 'Plugin\ColorManager\Model' => [ 71 | 'ColorModelExt', 72 | ], 73 | ]; 74 | } 75 | 76 | public function getPluginName() 77 | { 78 | // Plugin Name MUST be identical to namespace for Plugin Directory to detect updated versions - do not translate the plugin name here 79 | return 'ColorManager'; 80 | } 81 | 82 | public function getPluginDescription() 83 | { 84 | return t('A new way to utilise colors to their full potential in Kanboard. Choose from 3 color palettes or create your own. Across all palettes, choose from over 85 colors to match your workflow across the interface.'); 85 | } 86 | 87 | public function getPluginAuthor() 88 | { 89 | return 'aljawaid'; 90 | } 91 | 92 | public function getPluginVersion() 93 | { 94 | return '3.7.0'; 95 | } 96 | 97 | public function getCompatibleVersion() 98 | { 99 | // Examples: '>=1.0.37' '<1.0.37' '<=1.0.37' 100 | // Tested on KB v1.2.32+ from plugin v3.7.0 101 | return '>=1.2.20'; 102 | } 103 | 104 | public function getPluginHomepage() 105 | { 106 | return 'https://github.com/aljawaid/ColorManager'; 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

ColorManager

2 |

3 | 4 | GitHub Latest Release (by date) 5 | 6 | 7 | GitHub All Releases 8 | 9 | 10 | GitHub Repository File Count 11 | 12 | 13 | GitHub Repository Size 14 | 15 | 16 | GitHub Code Size 17 | 18 |

19 |

20 | 21 | GitHub Discussions 22 | 23 | 24 | GitHub Commits Since Last Release 25 | 26 | 27 | GitHub Commit Monthly Activity 28 | 29 | 30 | Kanboard 31 | 32 |

33 | 34 | A new way to utilise colors to their full potential in Kanboard. Choose from 3 color palettes or create your own. Combining all palettes, choose from **over 85 colors** to match your workflow across the interface. 35 | 36 |

[↓ Bottom] [→ Next] [↑ Top]

37 | 38 | ## Features 39 | 40 | - New dedicated settings page 41 | - Show color values as box examples 42 | - Show total color counts 43 | - Sort all colors alphabetically 44 | - Pretty URL `mydomain.com/settings/color-manager` 45 | 46 | **Default Color Palette** 47 | - Contains the 16 default application colors 48 | - Show default color example instead of just the color name _(in Project Settings)_ 49 | - Display CSS properties for each color (background color, border color) 50 | 51 | **Extended Color Palette** 52 | - **_Contains 40 new rich colors_** 53 | - Perfect for tasks 54 | - Includes variations of `white` 55 | - Display CSS properties for each color (background color, border color) 56 | 57 | **Text Color Palette** 58 | - **_Contains 30 new vibrant colors_** 59 | - Perfect for tags and categories 60 | - Includes variations of `black` 61 | - Extended colors with matching or contrasting text color 62 | - Display CSS properties for each color (background color, border color, font color) 63 | 64 | **Custom Color Palette** 65 | - Create your own favorite colors 66 | - Display CSS properties for each color (background color, border color) 67 | 68 | **Dropdown Color Lists** 69 | - Sort colors from all palettes alphabetically 70 | - Show color examples in the task creation dropdown list 71 | - Redesign color square (left color = border, right color = background, centre dot = font color) 72 | - Show color examples in the Automatic Action creation dropdown list 73 | - Show color examples in the Project Settings dropdown list 74 | 75 |

[↓ Bottom] [← Previous] [→ Next] [↑ Top]

76 | 77 | ## Screenshots 78 | 79 | **Kanboard Settings - _Default Color Palette_** 80 | 81 | ![Default Color Palette](../master/screenshot-settings-default-palette.png "Default Color Palette") 82 | 83 | **Kanboard Settings - _Extended Color Palette_** 84 | 85 | ![Extended Color Palette](../master/screenshot-settings-extended-palette.png "Extended Color Palette") 86 | 87 | **Kanboard Settings - _Text Color Palette_** 88 | 89 | ![Text Color Palette](../master/screenshot-settings-text-palette.png "Text Color Palette") 90 | 91 | **Kanboard Settings - _Custom Color Palette_** 92 | 93 | ![Custom Color Palette](../master/screenshot-settings-custom-palette.png "Custom Color Palette") 94 | 95 | ![Empty Custom Color Palette](../master/screenshot-settings-custom-palette-empty.png "Empty Custom Color Palette") 96 | 97 | **Project Settings** 98 | 99 | ![Default Task Dropdown List](../master/screenshot-default-task-dropdown-list.png "Default Task Dropdown List") 100 | 101 | **Automatic Actions - Creation** 102 | 103 | ![Automatic Action Creation](../master/screenshot-automatic-action-dropdown-list.png "Automatic Action Dropdown List") 104 | 105 | **Automatic Actions** _- compatible with [AutomaticActionUX](https://github.com/aljawaid/AutomaticActionUX)_ 106 | 107 | ![Automatic Actions](../master/screenshot-automatic-action-interface.png "Automatic Actions") 108 | 109 |

[↓ Bottom] [← Previous] [→ Next] [↑ Top]

110 | 111 | ## Usage 112 | 113 | Go to `Settings` ⥂ `Color Manager` 114 | 115 |

[↓ Bottom] [← Previous] [→ Next] [↑ Top]

116 | 117 | ## Installation & Compatibility 118 | 119 |

120 | 121 | Code Scanning 122 | 123 | 124 | PHP Compatibility Test 125 | 126 | 127 | PHP Compatibility Test 128 | 129 | 130 | PHP Compatibility Test 131 | 132 |

133 | 134 |
135 | Installation 136 | 137 | - Install via the **[Kanboard](https://github.com/kanboard/kanboard "Kanboard - Kanban Project Management Software") Plugin Directory** or see [INSTALL.md](../master/INSTALL.md) 138 | - Read the full [**Changelog**](../master/changelog.md "See changes") to see the latest updates 139 | 140 |
141 |
142 | Compatibility 143 | 144 | - Requires [Kanboard](https://github.com/kanboard/kanboard "Kanboard - Kanban Project Management Software") ≥`1.2.20` 145 | - **Other Plugins & Action Plugins** 146 | - _No known issues_ 147 | - Compatible with [AutomaticActionUX](https://github.com/aljawaid/AutomaticActionUX), [KanboardCSS](https://github.com/aljawaid/KanboardCSS), [PluginManager](https://github.com/aljawaid/PluginManager), [TagManager](https://github.com/aljawaid/TagManager), [ThemeMaestro](https://github.com/JustFxDev/ThemeMaestro) 148 | - **Core Files & Templates** 149 | - _No template overrides_ 150 | - _No database changes_ 151 | 152 |
153 |
154 | Translations 155 | 156 | - English (UK), German 157 | - _Starter template available_ 158 | 159 |
160 | 161 |

[↓ Bottom] [← Previous] [→ Next] [↑ Top]

162 | 163 | ## Authors & Contributors 164 | 165 | - [@aljawaid](https://github.com/aljawaid) - Author 166 | - [Craig Crosby](https://github.com/creecros) - Contributor 167 | - _Contributors welcome_ 168 | 169 |

[↓ Bottom] [← Previous] [↑ Top]

170 | 171 | ## License 172 | 173 | - This project is distributed under the [MIT License](../master/LICENSE "Read The MIT license") 174 | 175 | --- 176 | 177 |

178 | 179 | ColorManager 180 | 181 | 182 | ColorManager 183 | 184 | 185 | ColorManager 186 | 187 | 188 | ColorManager 189 | 190 | 191 | ColorManager 192 | 193 | 194 | ColorManager 195 | 196 | 197 | GitHub commits since latest release (by date) 198 | 199 |

200 | 201 |

[↑ Top]

202 | -------------------------------------------------------------------------------- /Releases/ColorManager-2.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-2.0.zip -------------------------------------------------------------------------------- /Releases/ColorManager-2.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-2.1.zip -------------------------------------------------------------------------------- /Releases/ColorManager-2.5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-2.5.zip -------------------------------------------------------------------------------- /Releases/ColorManager-2.6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-2.6.zip -------------------------------------------------------------------------------- /Releases/ColorManager-3.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-3.0.zip -------------------------------------------------------------------------------- /Releases/ColorManager-3.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-3.1.zip -------------------------------------------------------------------------------- /Releases/ColorManager-3.2.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-3.2.zip -------------------------------------------------------------------------------- /Releases/ColorManager-3.5.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-3.5.zip -------------------------------------------------------------------------------- /Releases/ColorManager-3.6.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-3.6.zip -------------------------------------------------------------------------------- /Releases/ColorManager-3.7.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/ColorManager-3.7.zip -------------------------------------------------------------------------------- /Releases/KBColours-1.0.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/KBColours-1.0.zip -------------------------------------------------------------------------------- /Releases/KBColours-1.1.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/Releases/KBColours-1.1.zip -------------------------------------------------------------------------------- /Template/config/add_custom_color.php: -------------------------------------------------------------------------------- 1 | 4 |
5 | 6 | form->label(t('Color Name'), 'color_name') ?> 7 | form->text('color_name', $values, $errors, ['required']) ?> 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 |
17 | 18 | form->csrf() ?> 19 |
20 | -------------------------------------------------------------------------------- /Template/config/colors.php: -------------------------------------------------------------------------------- 1 | task->colorModel->getDefaultColors(); 3 | $staticColours = $this->task->colorModelExt->getStaticColors(); 4 | $textColours = $this->task->colorModelExt->getTextColors(); 5 | $customColors = $this->task->colorModelExt->getCustomColors(); 6 | $defaultBackground = $this->task->colorModelExt->getAllColors()[$this->task->colorModel->getDefaultColor()]['background']; 7 | $defaultBorder = $this->task->colorModelExt->getAllColors()[$this->task->colorModel->getDefaultColor()]['border']; 8 | $customColours = is_null(count($this->task->colorModelExt->getCustomColors())) ? 0 : count($this->task->colorModelExt->getCustomColors()); 9 | ?> 10 | 11 |
12 |

13 | 14 | task->colorModel->getList()) ?> 15 |

16 |
17 |
18 |

19 | 20 | 21 |

22 |

23 | 24 |

25 |
26 |
27 | 38 |
39 | 40 |
41 | 42 | $color): ?> 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 |
68 |
69 | 70 |
71 |

72 | 73 | task->colorModelExt->getStaticColors()); ?> 74 |

75 |

76 | 77 |

78 |

79 | 80 |

81 |
82 | 83 |
84 | 85 | $color): ?> 86 | 87 |
88 | 89 |
90 |
91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
100 |
101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 |
110 |
111 | 112 |
113 |
114 | 115 |
116 |

117 | 118 | task->colorModelExt->getTextColors()); ?> 119 |

120 |

121 | 122 |

123 |

124 | 125 |

126 |
127 | 128 |
129 | 130 | $color): ?> 131 | 132 |
133 | 134 |
135 |
136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
145 |
146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 |
155 |
156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 |
165 |
166 | 167 |
168 |
169 | 170 |
171 | 172 | 188 | 189 |

190 | 191 | 192 |

193 |

194 | 195 |

196 |

197 | 198 |

199 |
200 | 201 | 202 |
203 | 204 | 205 | $color): ?> 206 |
207 |
208 | 209 | url->icon('trash', '', 'ColorManagerController', 'remove', ['plugin' => 'colorManager', 'key' => $color_id], false, 'delete-icon', t('Delete Color')) ?> 210 | 211 |
212 |
213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 |
222 |
223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 |
232 |
233 | 234 | 235 |

236 | 252 |

253 | 254 |
255 | 256 |
257 | -------------------------------------------------------------------------------- /Template/config/sidebar.php: -------------------------------------------------------------------------------- 1 |
  • app->checkMenuSelection('ColorManagerController', 'show', 'ColorManager') ?>> 2 | url->link(t('Color Manager'), 'ColorManagerController', 'show', ['plugin' => 'ColorManager']) ?> 3 |
  • 4 | -------------------------------------------------------------------------------- /Template/layout/css_ext.php: -------------------------------------------------------------------------------- 1 | customColorHelper->colorCssExt() ?> 2 | -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | 4 | ## v3.7 5 | 6 | _(most recent changes are listed on top):_ 7 | - FIX: Multiple PHP Calls 8 | - FIX: Move SVG Icons - exclude from release packages 9 | - FIX: Code Syntax - `ColorModelExt.php` 10 | - FIX: Code Syntax - `ColorManagerController.php` 11 | - FIX: Code Syntax - `ColorModelExt.php` 12 | - FIX: Line Endings - `css_ext.php` 13 | - FIX: Code Syntax - `colors.php`- ignore specific test rules 14 | - FIX: Code Syntax - `Plugin.php` 15 | - FIX: Code Syntax - `ColorManagerController.php` 16 | - FIX: Markdown Syntax - `changelog.md` 17 | - FIX: CSS Code Syntax & Line Endings 18 | - NEW: Add Code Scanning Badges to README.md 19 | - FIX: README Navigation Links for GitHub 20 | - FIX: Code Syntax 21 | - FIX: Markdown Syntax 22 | - FIX: Line Endings 23 | - NEW: Add Footer Badges to README.md 24 | - NEW: Add Section Navigation Links to README.md 25 | - NEW: Add Badges to README.md 26 | - NEW: Add README Page Navigation Links 27 | - FIX: Content Flow for README.md 28 | - Create INSTALL.md 29 | 30 | 31 | ## v3.6 32 | 33 | _(most recent changes are listed on top):_ 34 | - FIX: Unix (LF) Line Endings and Tabs > Spaces 35 | 36 | 37 | ## v3.5 38 | 39 | _(most recent changes are listed on top):_ 40 | - NEW: Display Actual Colors for Actions in AutomaticActionUX 41 | - FIX: Empty CSS Rulesets 42 | - FIX: README.md links 43 | 44 | 45 | ## v3.2 46 | 47 | _(most recent changes are listed on top):_ 48 | - FIX: Rename `white_on_supreme_blue` to `white_on_royal_blue` 49 | - FIX: Rename `supreme_blue` to `royal_blue` 50 | 51 | 52 | ## v3.1 53 | 54 | _(most recent changes are listed on top):_ 55 | - FIX: Long Colour Names Show Incorrectly in Select2 Dropdown - fixes #31 56 | - FIX: Translation for `dark_green_on_lime_green` 57 | 58 | 59 | ## v3.0 60 | 61 | _(most recent changes are listed on top):_ 62 | - Add `white_on_lime_green` to Text Colour Palette 63 | - Add `white_on_dim_grey` to Text Colour Palette 64 | - Add `white_on_deep_purple` to Text Colour Palette 65 | - Add `dark_green_on_lime` to Text Colour Palette 66 | - Add `dark_brown_on_cream` to Text Colour Palette 67 | - Add `blood_red_on_pale_orange` to Text Colour Palette 68 | - Add `white_on_supreme_blue` to Text Colour Palette 69 | - Add `supreme_blue` to Extended Colour Palette 70 | - Add `white_on_red_orange` to Text Colour Palette 71 | - Add `red_orange` to Extended Colour Palette 72 | - Add `maroon_on_classic_silver` to Text Colour Palette 73 | - Add `classic_silver` to Extended Colour Palette 74 | - Add Compatibility for ThemeMaestro 75 | - Add `white_on_blood_red` to Text Colour Palette 76 | - Add `blood_red` to Extended Colour Palette 77 | - Add `deep_blue_on_aqua` to Text Colour Palette 78 | - Add `aqua` to Extended Colour Palette 79 | - Update Plugin Description Colour Total 80 | - FIX: Colour Boxes - fix width for long colour names 81 | - FIX: Whitespaces in `de_DE` 82 | - Update Screenshots 83 | - NEW: Show Text Colour Code 84 | - Add Anchors and Classes to Palettes 85 | - FIX: Change `white_on_red` to `white_on_bright_red` 86 | - Move `orange_on_black` to Text Color Palette 87 | - Move `grey_on_black` to Text Color Palette 88 | - Move `red_on_black` to Text Color Palette 89 | - FIX: Delete `black_on_yellow` - duplicate to `bright_yellow` as all palette text color is now black 90 | - FIX: Change `black_on_red` to `bright_red` 91 | - FIX: Change `bright_orange` to `pumpkin_orange` 92 | - FIX: Change `black_on_orange` to `pale_orange` 93 | - FIX: Change `black_on_grey` to `dim_grey` 94 | - Move `white_on_scarlet` to Text Color Palette 95 | - UPDATE: Translations for Text Color Palette 96 | - NEW: Add Text Color Palette 97 | - UPDATE: Translations for Text Color Palette 98 | - FIX: Rename Variable 99 | - FIX: Variable Naming to Match Model Function 100 | - Change CSS Class 101 | - FIX: Mention Translation in README.md 102 | - NEW: Make Titles Bolder 103 | - Rename palette 104 | - Sort Colours in Code - colours are now coded alphabetically too 105 | - FIX: Border Colour `red_on_black` 106 | - Add Button `if` statement - show only if palette contains colours, as the button is shown next to the text 107 | - NEW: Show if Custom Colour Palette is Empty 108 | 109 | 110 | ## v2.6 111 | 112 | (most recent changes are listed on top):_ 113 | - FIX: Extra Whitespaces in `de_DE` 114 | - Update `de_DE` Colour Names - thanks @JustFxDev 115 | 116 | 117 | ## v2.5 118 | 119 | (most recent changes are listed on top):_ 120 | - Better plugin description 121 | - Update mention of total count in description 122 | - NEW: Add 5 New Colours to Extended Palette - closes #20 123 | - Add `magenta` to Extra Colour Palette - #3 124 | - Add `black_on_yellow` to Extra Colour Palette - #3 125 | - Add `black_on_grey` to Extra Colour Palette - #3 126 | - Add `grey_on_black` to Extra Colour Palette - #3 127 | - Add `bright_white` to Extra Colour Palette - requested by @JustFxDev 128 | - NEW: Add Colour Name Translations #22 129 | - FIX: Translations Coding Consistency #21 130 | - FIX: Conflicting Asset Path Between Kanboard Versions 131 | - Translate Colour Name in Tooltip 132 | - NEW: Add `de_DE` Translations #21 - thanks @JustFxDev 133 | - FIX: Remove Unused String 134 | - FIX: `white_on_green` too dark 135 | - FIX: `bright_yellow` not bright enough 136 | - Fixed path to svg icons 137 | 138 | 139 | ## v2.1 140 | 141 | _(most recent changes are listed on top):_ 142 | - Revert: Translated Pretty URL - must stick to `mydomain.com/settings/color-manager` as translating causes page rendering issues with other plugins' settings' pages 143 | - FIX: #18 make route static (Bug: Settings Page Overrides Other Plugin Settings Page) 144 | 145 | 146 | ## v2.0 147 | 148 | ### KBColours _becomes_ ColorManager 149 | 150 | #### Reinstall of this plugin is required if upgrading 151 | 152 | _(most recent changes are listed on top):_ 153 | - Mention plugin compatibility 154 | - FIX: Task font colours were being ignored 155 | - NEW: #11 #15 Add translated URL - thanks @creecros 156 | - FIX: CSS Transition and Add Variable 157 | - Remove helper modal and manually build modal with svg icon 158 | - Add `white_on_copper` to Extra Colour Palette 159 | - Add `copper` to Extra Colour Palette 160 | - Add `cream` to Extra Colour Palette 161 | - Add `dirty_green` to Extra Colour Palette 162 | - Add `deep_amber` to Extra Colour Palette 163 | - Add `deep_purple` to Extra Colour Palette 164 | - Add `dirty_yellow` to Extra Colour Palette 165 | - Add `white_on_deep_blue` to Extra Colour Palette 166 | - Add `bright_green` to Extra Colour Palette 167 | - Add `bright_orange` to Extra Colour Palette 168 | - Add `white_on_deep_green` to Extra Colour Palette 169 | - Add `deep_green` to Extra Colour Palette 170 | - Add `yellow_green` to Extra Colour Palette 171 | - Add `pale_blue` to Extra Colour Palette 172 | - Add `white_on_black` to Extra Colour Palette 173 | - Add `pale_purple` to Extra Colour Palette 174 | - Add `beige` to Extra Colour Palette 175 | - Add `white_on_green` to Extra Colour Palette 176 | - Add `white_on_deep_grey` to Extra Colour Palette 177 | - Add `deep_grey` to Extra Colour Palette 178 | - Add `white_on_scarlet` to Extra Colour Palette 179 | - Add `scarlet` to Extra Colour Palette 180 | - Add `white_on_olive` to Extra Colour Palette 181 | - Add `olive` to Extra Colour Palette 182 | - Add `white_on_peach` to Extra Colour Palette 183 | - Add `peach` to Extra Colour Palette 184 | - Add `dark_pink` to Extra Colour Palette 185 | - Add `lint` to Extra Colour Palette 186 | - Add `white_on_dark_brown` to Extra Colour Palette 187 | - Add `dark_brown` to Extra Colour Palette 188 | - Add `bright_yellow` to Extra Colour Palette 189 | - Add `white_on_blue_grey` to Extra Colour Palette 190 | - Add `blue_grey` to Extra Colour Palette 191 | - Add `white_on_dark_red` to Extra Colour Palette 192 | - Add `dark_red` to Extra Colour Palette 193 | - Add `lime_green` to Extra Colour Palette 194 | - Add `khaki` to Extra Colour Palette 195 | - Add `black_on_orange` to Extra Colour Palette 196 | - Add `orange_on_black` to Extra Colour Palette 197 | - Add `red_on_black` to Extra Colour Palette 198 | - Add `black_on_red` to Extra Colour Palette 199 | - Add `white_on_red` to Extra Colour Palette 200 | - Add `white_on_purple` to Extra Colour Palette 201 | - Add `white_on_dark_teal` to Extra Colour Palette 202 | - Add Custom Colour Palette Description 203 | - Add Default Colour Palette Description 204 | - Add `dark_gold` colour 205 | - Add Extra Colour Palette Description 206 | - Add Section Icons 207 | - Change Page Title Icon 208 | - Add `en_GB` Translations 209 | - Translate Plugin 210 | - Rename CSS Classes 211 | - Rename CSS Variables 212 | - FIX: CSS Classes Conflict - `.total-count` conflicted with PluginManager 213 | - FIX: Colour Square for Default Colours in Dropdown 214 | - FIX: Font Color in Dropdowns 215 | - Update Plugin Description 216 | - Group CSS 217 | - Rename Model 218 | - Rename Helper 219 | - Rename Add Colour Template 220 | - Rename Controller 221 | - Rename CSS File 222 | - Rename Plugin in Plugin.php 223 | - Translate & Fix Wording 224 | - FIX: #8 Custom Colours Are Not Sorted in Dropdown Lists - colours are now sorted in the lists regardless of titlecase or lowercase 225 | - FIX: Use `isset` instead of just `if` 226 | - NEW: Sort array - thanks @creecros 227 | - Add Tooltip & Class to Delete Colour Icon 228 | - NEW: Show Delete Colour Icon on Hover 229 | - Add 3 Colours - `White on Maroon` `Mint Green` `Gold` 230 | - Remove `maroon` and Add `crimson` 231 | - Add html entity for white text indication in dropdowns 232 | - Add Font Color 233 | - NEW: Sort Colours by Name 234 | - NEW: Add tooltips to colour names 235 | - FIX: FA Icon Name 236 | - FIX: HTML 237 | - FIX: Wording 238 | - FIX: HTML 239 | - FIX: Note 240 | - Add Palette Section Headings #1 #3 #4 241 | - FIX: Total Count Styling 242 | - FIX: Translations 243 | - Add Border Effect to Square Colour Dropdown for All Colours 244 | - NEW: #3 autobuild select css for project settings color definitions - thanks @creecros 245 | - FIX: #3 ability to add custom color and remove, using metadata - thanks @creecros 246 | - Make boxes smaller 247 | - Fix CSS Jumping Side Menu 248 | - FIX: Title 249 | - Add Badge Count 250 | - FIX: Sidebar Translation - WIP #2 251 | - Add Border Highlight for Dropdowns 252 | - Seperate custom and default in config - thanks @creecros 253 | - Add getCustomColors to model - thanks @creecros 254 | - Add helper, model ext, and layout with hook - thanks @creecros 255 | - Add `White` 256 | - NEW: Add Custom Colours Section 257 | - Add total colour count - default + custom 258 | - NEW: Show actual colours in (Automatic Action creation) dropdown list 259 | - NEW: Show Actual Colours in Dropdown List - Show in default colour list... settings > project settings 260 | 261 | 262 | ## v1.1 263 | 264 | _(most recent changes are listed on top):_ 265 | - FIX: Faulty code where the automatic actions page was replaced by a blank page (without loss of data) 266 | 267 | 268 | ## v1.0 269 | 270 | _(most recent changes are listed on top):_ 271 | - Initial release 272 | - Translations starter template included 273 | 274 | --- 275 | 276 | Read the full [**Changelog**](../master/changelog.md "See changes") or view the [**README**](../master/README.md "View README") 277 | -------------------------------------------------------------------------------- /screenshot-automatic-action-dropdown-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-automatic-action-dropdown-list.png -------------------------------------------------------------------------------- /screenshot-automatic-action-interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-automatic-action-interface.png -------------------------------------------------------------------------------- /screenshot-default-task-dropdown-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-default-task-dropdown-list.png -------------------------------------------------------------------------------- /screenshot-settings-custom-palette-empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-settings-custom-palette-empty.png -------------------------------------------------------------------------------- /screenshot-settings-custom-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-settings-custom-palette.png -------------------------------------------------------------------------------- /screenshot-settings-default-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-settings-default-palette.png -------------------------------------------------------------------------------- /screenshot-settings-extended-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-settings-extended-palette.png -------------------------------------------------------------------------------- /screenshot-settings-text-palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aljawaid/ColorManager/b6cbfff1953ff4b64732389f864260961d651d33/screenshot-settings-text-palette.png --------------------------------------------------------------------------------