Code Monkey home page Code Monkey logo

customizable-header-plugin's People

Contributors

dependabot[bot] avatar mawinter69 avatar timja avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

jonesbusy timja

customizable-header-plugin's Issues

Application navigator button

What feature do you want to see added?

I'd like to have a button at the top left corner that I can click to open a menu for navigating to related non-Jenkins Web sites that already have similar buttons.

The list of linked Web sites would be configured by the Jenkins administrator. Each link would have:

  • Icon. The administrator would typically deploy the image under userContent.
  • Visible text.
  • Target URI.
  • A way to control whether the link is shown to unauthenticated users. Perhaps a whole ACL.

Prior art in other Web sites

Microsoft Teams has an application navigator button with 3*3 dots:

Screen shot of Microsoft Teams application navigator button in Microsoft Edge Screen shot of Microsoft Teams application navigation menu in Microsoft Edge

Atlassian Jira Cloud has an application navigator button with 3*3 squares:

Screen shot of Atlassian Jira application navigator button in Microsoft Edge Screen shot of Atlassian Jira application navigation menu in Microsoft Edge

Alternative: HTML in title

It is already possible to set up something similar by using this Customizable Header plugin and adding HTML to the title field and custom CSS to show the menu on :hover. The result looks nice but is not entirely satisfactory:

  • :hover makes the menu easy to open accidentally for mouse users.
  • :hover without a tab stop makes the menu unreachable for blind users.
  • The title is at the right side of the Jenkins logo, so it's not consistent with non-Jenkins web sites having the application navigator button in the corner.
  • Jenkins strips class attributes from the HTML, which requires some contortions in the custom CSS.
  • The Web browser temporarily renders the title wrong, when it has loaded the HTML but not yet the custom CSS.
  • Unauthenticated users would see the same links.

image

Alternative: Sidebar Link plugin

The Sidebar Link plugin lets a Jenkins administrator add links to other websites in the sidebar of the main Jenkins dashboard. However:

  • The sidebar mainly consists of links to pages within Jenkins. I'd like to separate the application navigation from these.
  • The content of the sidebar depends on which page is open within Jenkins. I'd like the application navigation to be the same on all pages.

Upstream changes

No response

Missing/wrong context-aware header config option

header: |-
      FAILED TO EXPORT
      io.jenkins.plugins.customizable_header.CustomHeaderConfiguration#header: No configurator found for type class io.jenkins.plugins.customizable_header.headers.HeaderSelector

I have enabled "Context Aware" and ticked both checkboxes.

Unable to configure Customizable Header in system configure

Jenkins and plugins versions report

After install of customizable-header plugin, it is not possible to configure the customizable header in system config.

The plugin has been successfully installed and configured on several systems (5 so far).

However, we have 2 systems that do not display customizable header configuration fields after plugin install:

Controller 1:
OS: Red Hat Enterprise Linux 9.2
Jenkins version (LTS): 2.426.1-1.1 @
customizable-header version: 61.v9c97c69b_7ee3

Controller 2:
OS: Red Hat Enterprise Linux 9.2
Jenkins version (Weekly): 2.430
customizable-header version: 61.v9c97c69b_7ee3

A jenkins log recorder was configured for 'io.jenkins.plugins.customizable_header' with both all and finest levels but no log output was observed in the recorder.

No log statements for customizable_header observed in journalctl.

Any diagnostic tips are appreciated.

What Operating System are you using (both controller, and any agents involved in the problem)?

Red Hat Enterprise Linux 9.2

Reproduction steps

  • Install plugin customizable-header.
  • Reload, service restart, host reboot all unsuccessful.

Expected Results

Able to configure Customizable header at http://JENKINS_CONTROLLER_URL/manage/configure link.

Actual Results

Unable to configure Customizable Header via http://JENKINS_CONTROLLER_URL/manage/configure link
/var/lib/jenkins/io.jenkins.plugins.customizable_header.CustomHeaderConfiguration.xml not present

Anything else?

Workaround:
If I manually copy/edit the io.jenkins.plugins.customizable_header.CustomHeaderConfiguration.xml from another system and restart the Jenkins service, the banner is properly displayed.

Are you interested in contributing a fix?

I can assist in debugging if provided some guidance.

Custom header flicker

Jenkins and plugins versions report

Environment
Paste the output here

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows Server

Reproduction steps

Enable custom header
Refresh any page in Jenkins.

Expected Results

Smooth transitions between pages just like when custom header is not enabled

Actual Results

The header is repainted. It looks ugly and distracts.

Anything else?

No response

Open application links in the same tab

What feature do you want to see added?

Currently, the application links (#25) have target="_blank" so they open in a new tab of the Web browser. I'd like a way to open them in the current tab by default, but allow Ctrl+click or middle-click to open in a new tab.

This could be a global setting or a per-user setting. I don't think it should be configurable for each application link; that would just confuse users.

According to #31 (comment), Microsoft and Jira open application links in new tabs. I can confirm that for Microsoft, but not for Jira. Jira Cloud https://jira.atlassian.com/secure/Dashboard.jspa opens application links in the current tab, and so does Jira Server, even if my user profile is configured with "External links: Open in new tab".

Upstream changes

No response

Dynamic header

What feature do you want to see added?

The header could be made dynamic depending on the state of certain projects, e.g. change the logo or use a different background color

Upstream changes

No response

Application link logo alt text is useless and overlaps

Jenkins and plugins versions report

Environment
Jenkins: 2.414.3
OS: Windows Server 2012 R2 - 6.3
Java: 17.0.8.1 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
Office-365-Connector:4.20.0
analysis-model-api:11.11.0
ansicolor:1.0.4
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
atlassian-bitbucket-server-integration:4.0.0
authentication-tokens:1.53.v1c90fd9191a_b_
authorize-project:1.7.1
azure-ad:412.vdf45b_6a_b_da_81
azure-sdk:157.v855da_0b_eb_dc2
basic-branch-build-strategies:81.v05e333931c7d
bitbucket-server-checks:1.0-SNAPSHOT (private-49d94041-kalle)
bootstrap5-api:5.3.2-2
bouncycastle-api:2.29
branch-api:2.1128.v717130d4f816
buildtriggerbadge:251.vdf6ef853f3f5
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.0.2
cloudbees-bitbucket-branch-source:848.v42c6a_317eda_e
cloudbees-disk-usage-simple:187.v6378d330d1d4
cloudbees-folder:6.858.v898218f3609d
command-launcher:107.v773860566e2e
commons-httpclient3-api:3.1-3
commons-lang3-api:3.13.0-62.v7d18e55f51e2
commons-text-api:1.10.0-78.v3e7b_ea_d5a_fe1
compress-artifacts:98.vb_20f3c77ddf7
configuration-as-code:1714.v09593e830cfa
copyartifact:722.v0662a_9b_e22a_c
credentials:1304.v5ec13eecef46
credentials-binding:642.v737c34dea_6c2
customizable-header:40.v2e0e4f17e70c
data-tables-api:1.13.6-5
display-url-api:2.200.vb_9327d658781
dtkit-api:3.0.2
durable-task:523.va_a_22cf15d5e0
echarts-api:5.4.0-7
extended-read-permission:53.v6499940139e5
fast-track:1.0.0
font-awesome-api:6.4.2-1
forensics-api:2.3.0
git:5.2.0
git-client:4.5.0
git-forensics:2.0.0
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
hudson-wsclean-plugin:1.0.8
instance-identity:173.va_37c494ec4e5
ionicons-api:56.v1b_1c8c49374e
jackson2-api:2.15.3-366.vfe8d1fa_f8c87
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.9-1
jdk-tool:73.vddf737284550
jersey2-api:2.41-133.va_03323b_a_1396
jira:3.11
job-restrictions:0.8
jquery3-api:3.7.1-1
junit:1240.vf9529b_881428
lockable-resources:1185.v0c528656ce04
mailer:463.vedf8358e006b_
manage-permission:1.0.1
matrix-auth:3.2.1
matrix-project:818.v7eb_e657db_924
metrics:4.2.18-442.v02e107157925
mina-sshd-api-common:2.11.0-86.v836f585d47fa_
mina-sshd-api-core:2.11.0-86.v836f585d47fa_
okhttp-api:4.11.0-157.v6852a_a_fa_ec11
pipeline-build-step:505.v5f0844d8d126
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-graph-view:202.v6da_a_9e590325
pipeline-groovy-lib:689.veec561a_dee13
pipeline-input-step:477.v339683a_8d55e
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2144.v077a_d1928a_40
pipeline-model-definition:2.2144.v077a_d1928a_40
pipeline-model-extensions:2.2144.v077a_d1928a_40
pipeline-rest-api:2.33
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2144.v077a_d1928a_40
pipeline-stage-view:2.33
pipeline-utility-steps:2.16.0
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.6.0
prism-api:1.29.0-8
resource-disposer:0.23
scm-api:676.v886669a_199a_a_
script-security:1275.v23895f409fb_d
sidebar-link:2.4.1
simple-queue:1.4.4
snakeyaml-api:2.2-111.vc6598e30cc65
ssh-credentials:308.ve4497b_ccd8f4
sshd:3.312.v1c601b_c83b_0e
structs:325.vcb_307d2a_2782
timestamper:1.26
token-macro:384.vf35b_f26814ec
trilead-api:2.84.v72119de229b_7
variant:60.v7290fc0eb_b_cd
warnings-ng:10.5.1
workflow-aggregator:596.v8c21c963d92d
workflow-api:1283.v99c10937efcb_
workflow-basic-steps:1042.ve7b_140c4a_e0c
workflow-cps:3806.va_3a_6988277b_2
workflow-durable-task-step:1289.v4d3e7b_01546b_
workflow-job:1360.vc6700e3136f5
workflow-multibranch:756.v891d88f2cd46
workflow-scm-step:415.v434365564324
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:865.v43e78cc44e0d
ws-cleanup:0.45
xunit:3.1.3

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows

Reproduction steps

Define an application link with a logo URL that does not resolve to a loadable image.

Expected Results

The logo does not appear. The title appears and is readable.

<a class="jenkins-dropdown__item" href="http://jira.example.com/" target="_blank">
      <div class="jenkins-dropdown__item__icon"><img alt="" src="https://example.com/jenkins/userContent/sidebar/jira.png"></div>
      Example Jira
    </a>

Actual Results

A copy of the title appears in the place of the logo, and it overlaps with the actual title, making that more difficult to read.

<a class="jenkins-dropdown__item" href="http://jira.example.com/" target="_blank">
      <div class="jenkins-dropdown__item__icon"><img alt="Example Jira" src="https://example.com/jenkins/userContent/sidebar/jira.png"></div>
      Example Jira
    </a>

Anything else?

Alt text is not necessary for accessibility here. The same title is in the DOM immediately after the logo, so the logo can be considered decorative.

Thin header

What feature do you want to see added?

A header that is a bit thinner than the current one. 2.5rem instead of 3.5 maybe. This includes a smaller icon as well lg instead of xlg probably.

Upstream changes

No response

Allow to show system wide message below the header but above the crumbbar

What feature do you want to see added?

Currently one can show a message on the start page of Jenkins (that seems to be repeated in folders), but to apply styling one needs to write html and owasp will prevent to apply classes.
So it would be nice to be able show a custom message below the actual header, e.g. to inform about coming maintenance or ongoing incidents.
There should be 3 background colors (red, orange, blue or green) to choose from

Upstream changes

No response

Dark theme logo background is not working with latest dark theme plugin

Jenkins and plugins versions report

Jenkins latest weekly
latest dark theme plugin

What Operating System are you using (both controller, and any agents involved in the problem)?

Any

Reproduction steps

  1. switch to dark theme
  2. Create custom header with logo text

Expected Results

background of logo is dark

Actual Results

background of logo is white

Anything else?

No response

time based color header

What feature do you want to see added?

A header that changes colors based on the local time of the user

Upstream changes

No response

more flexibility for the background

What feature do you want to see added?

It would be nice when one can e.g. define gradients to make a rainbow
Instead of setting background-color simply define background in css

Upstream changes

No response

Icon logo not configurable

Reproduction steps

Select logo of type Icon

Expected Results

I can configure the icon

Actual Results

nothing there to specify what to use

Anything else?

Maybe remove the Icon completely. Seems nobody is missing it and the icons are anyway deprecated.

Support HTML for 'title' field

What feature do you want to see added?

That's probably a niche case scenario, but I do have something in mind where links would be handy.

Upstream changes

No response

User specific headers

What feature do you want to see added?

The header at least the coloring could be user specific

Upstream changes

No response

Host-relative application link logo URL is concatenated to Jenkins root URL

Jenkins and plugins versions report

Environment
Jenkins: 2.414.3
OS: Windows Server 2012 R2 - 6.3
Java: 17.0.8.1 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
---
Office-365-Connector:4.20.0
analysis-model-api:11.11.0
ansicolor:1.0.4
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
atlassian-bitbucket-server-integration:4.0.0
authentication-tokens:1.53.v1c90fd9191a_b_
authorize-project:1.7.1
azure-ad:412.vdf45b_6a_b_da_81
azure-sdk:157.v855da_0b_eb_dc2
basic-branch-build-strategies:81.v05e333931c7d
bitbucket-server-checks:1.0-SNAPSHOT (private-49d94041-kalle)
bootstrap5-api:5.3.2-2
bouncycastle-api:2.29
branch-api:2.1128.v717130d4f816
buildtriggerbadge:251.vdf6ef853f3f5
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.0.2
cloudbees-bitbucket-branch-source:848.v42c6a_317eda_e
cloudbees-disk-usage-simple:187.v6378d330d1d4
cloudbees-folder:6.858.v898218f3609d
command-launcher:107.v773860566e2e
commons-httpclient3-api:3.1-3
commons-lang3-api:3.13.0-62.v7d18e55f51e2
commons-text-api:1.10.0-78.v3e7b_ea_d5a_fe1
compress-artifacts:98.vb_20f3c77ddf7
configuration-as-code:1714.v09593e830cfa
copyartifact:722.v0662a_9b_e22a_c
credentials:1304.v5ec13eecef46
credentials-binding:642.v737c34dea_6c2
customizable-header:40.v2e0e4f17e70c
data-tables-api:1.13.6-5
display-url-api:2.200.vb_9327d658781
dtkit-api:3.0.2
durable-task:523.va_a_22cf15d5e0
echarts-api:5.4.0-7
extended-read-permission:53.v6499940139e5
fast-track:1.0.0
font-awesome-api:6.4.2-1
forensics-api:2.3.0
git:5.2.0
git-client:4.5.0
git-forensics:2.0.0
handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953
hudson-wsclean-plugin:1.0.8
instance-identity:173.va_37c494ec4e5
ionicons-api:56.v1b_1c8c49374e
jackson2-api:2.15.3-366.vfe8d1fa_f8c87
jakarta-activation-api:2.0.1-3
jakarta-mail-api:2.0.1-3
javax-activation-api:1.2.0-6
javax-mail-api:1.6.2-9
jaxb:2.3.9-1
jdk-tool:73.vddf737284550
jersey2-api:2.41-133.va_03323b_a_1396
jira:3.11
job-restrictions:0.8
jquery3-api:3.7.1-1
junit:1240.vf9529b_881428
lockable-resources:1185.v0c528656ce04
mailer:463.vedf8358e006b_
manage-permission:1.0.1
matrix-auth:3.2.1
matrix-project:818.v7eb_e657db_924
metrics:4.2.18-442.v02e107157925
mina-sshd-api-common:2.11.0-86.v836f585d47fa_
mina-sshd-api-core:2.11.0-86.v836f585d47fa_
okhttp-api:4.11.0-157.v6852a_a_fa_ec11
pipeline-build-step:505.v5f0844d8d126
pipeline-graph-analysis:202.va_d268e64deb_3
pipeline-graph-view:202.v6da_a_9e590325
pipeline-groovy-lib:689.veec561a_dee13
pipeline-input-step:477.v339683a_8d55e
pipeline-milestone-step:111.v449306f708b_7
pipeline-model-api:2.2144.v077a_d1928a_40
pipeline-model-definition:2.2144.v077a_d1928a_40
pipeline-model-extensions:2.2144.v077a_d1928a_40
pipeline-rest-api:2.33
pipeline-stage-step:305.ve96d0205c1c6
pipeline-stage-tags-metadata:2.2144.v077a_d1928a_40
pipeline-stage-view:2.33
pipeline-utility-steps:2.16.0
plain-credentials:143.v1b_df8b_d3b_e48
plugin-util-api:3.6.0
prism-api:1.29.0-8
resource-disposer:0.23
scm-api:676.v886669a_199a_a_
script-security:1275.v23895f409fb_d
sidebar-link:2.4.1
simple-queue:1.4.4
snakeyaml-api:2.2-111.vc6598e30cc65
ssh-credentials:308.ve4497b_ccd8f4
sshd:3.312.v1c601b_c83b_0e
structs:325.vcb_307d2a_2782
timestamper:1.26
token-macro:384.vf35b_f26814ec
trilead-api:2.84.v72119de229b_7
variant:60.v7290fc0eb_b_cd
warnings-ng:10.5.1
workflow-aggregator:596.v8c21c963d92d
workflow-api:1283.v99c10937efcb_
workflow-basic-steps:1042.ve7b_140c4a_e0c
workflow-cps:3806.va_3a_6988277b_2
workflow-durable-task-step:1289.v4d3e7b_01546b_
workflow-job:1360.vc6700e3136f5
workflow-multibranch:756.v891d88f2cd46
workflow-scm-step:415.v434365564324
workflow-step-api:639.v6eca_cd8c04a_a_
workflow-support:865.v43e78cc44e0d
ws-cleanup:0.45
xunit:3.1.3

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows

Reproduction steps

  1. Install Jenkins at HTTP context path "/jenkins/".
  2. Install the customizable header plugin.
  3. Define an application link and set "/jenkins/userContent/jira.png" as its logo URL.

Expected Results

The image source URL should be https://example.com/jenkins/userContent/sidebar/jira.png or just /jenkins/userContent/sidebar/jira.png.

<a class="jenkins-dropdown__item" href="http://jira.example.com/" target="_blank">
      <div class="jenkins-dropdown__item__icon"><img alt="Example Jira" src="https://example.com/jenkins/userContent/sidebar/jira.png"></div>
      Example Jira
    </a>

Actual Results

The image source URL is https://example.com/jenkins//jenkins/userContent/sidebar/jira.png.

<a class="jenkins-dropdown__item" href="http://jira.example.com/" target="_blank">
      <div class="jenkins-dropdown__item__icon"><img alt="Example Jira" src="https://example.com/jenkins//jenkins/userContent/sidebar/jira.png"></div>
      Example Jira
    </a>

Anything else?

I originally had to include /jenkins/ in the logo URL as a workaround, as described in #25 (comment). Now with Customizable Header Version 40.v2e0e4f17e70c, this workaround instead causes the image not to be displayed.

Although the host-relative URL was a workaround, it could also be used for referencing non-Jenkins applications at the same host. If such an installation is deliberately not supported (e.g. for cross-origin security reasons), that would be good to call out in the description of the logo URL setting.

Context aware header

What feature do you want to see added?

The logo changes depending on the context.
When currently in a job show the status or weather icon (ideally with some javascript to update the logo without needing to reload the page
When in a folder show the folder symbol,
When on a computer show the status of the computer, ...

Upstream changes

No response

Store a resized copy of the logo image

What feature do you want to see added?

I'd like the plugin to store a resized copy of the logo image so it can be optimally served and avoid error in case the image used is missing.

Currently the header is hotlinking the logo, resulting in flashing if the image is big (as the image is resized on the fly but briefly displayed at its original size) and unnecessary bandwidth consumption.

image

Corresponding config: https://github.com/jenkins-infra/kubernetes-management/blob/2b0cf03ced0d552da2e3fd16e39ebdbd25ba2396/config/jenkins_infra.ci.jenkins.io.yaml#L717-L729

Upstream changes

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.