diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fb32776fb370..9531dad73529 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,31 +2,31 @@ This page provides information about contributing code to the Jenkins core codebase. -:exclamation: There's a lot more to the Jenkins project than just code. For more information on the ways that you can contribute to the Jenkins project, see [Participate]. +:exclamation: There's a lot more to the Jenkins project than just code. For more information on the ways that you can contribute to the Jenkins project, see [Participate](https://www.jenkins.io/participate/). ## Getting started 1. Fork the repository on GitHub 2. Clone the forked repository to your machine 3. Install the necessary development tools. In order to develop Jenkins, you need the following: - * Java Development Kit (JDK) 11 or 8. - In the Jenkins project we usually use [Eclipse Adoptium](https://adoptium.net/) or [OpenJDK](https://openjdk.java.net/), but you can use other JDKs as well. - * Apache Maven 3.8.1 or above. You can [download Maven here]. - In the Jenkins project we usually use the most recent Maven release. - * Any IDE which supports importing Maven projects. - * Install [NodeJS](https://nodejs.org/en/). **Note:** only needed to work on the frontend assets found in the `war` module. - * Frontend tasks are run using [yarn](https://yarnpkg.com/lang/en/). Run `npm install -g yarn` to install it. -4. Set up your development environment as described in [Preparing for Plugin Development] + * Java Development Kit (JDK) 11 or 17. + In the Jenkins project we usually use [Eclipse Temurin](https://adoptium.net/) or [OpenJDK](https://openjdk.java.net/), but you can use other JDKs as well. + * Apache Maven 3.8.1 or above. You can [download Maven here](https://maven.apache.org/download.cgi). + In the Jenkins project we usually use the most recent Maven release. + * Any IDE which supports importing Maven projects. + * Install [NodeJS](https://nodejs.org/en/). **Note:** only needed to work on the frontend assets found in the `war` module. + * Frontend tasks are run using [yarn](https://yarnpkg.com/lang/en/). Run `npm install -g yarn` to install it. +4. Set up your development environment as described in [Preparing for Plugin Development](https://www.jenkins.io/doc/developer/tutorial/prepare/) If you want to contribute to Jenkins, or just learn about the project, you can start by fixing some easier issues. In the Jenkins issue tracker we mark such issues as `newbie-friendly`. -You can find them by using this query (check the link) for [newbie friendly issues]. +You can find them by using this query (check the link) for [newbie friendly issues](https://issues.jenkins.io/issues/?jql=project%20%3D%20JENKINS%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20component%20%3D%20core%20AND%20labels%20in%20(newbie-friendly)). ## Building and Debugging The Jenkins core build flow is built around Maven. -You can read a description of the [building and debugging process here]. +You can read a description of the [building and debugging process here](https://www.jenkins.io/doc/developer/building/). If you want simply to build the `jenkins.war` file as fast as possible without tests, run: @@ -35,9 +35,9 @@ mvn -am -pl war,bom -Pquick-build clean install ``` The WAR file will be created in `war/target/jenkins.war`. -After that, you can start Jenkins using Java CLI ([guide]). +After that, you can start Jenkins using Java CLI ([guide](https://www.jenkins.io/doc/book/installing/war-file/#run-the-war-file)). If you want to debug the WAR file without using Maven plugins, -You can run the executable with [Remote Debug Flags] +You can run the executable with [Remote Debug Flags](https://stackoverflow.com/questions/975271/remote-debugging-a-java-application) and then attach IDE Debugger to it. To launch a development instance, after the above command, run: @@ -87,7 +87,7 @@ There are 3 profiles for tests: * `all-tests` - runs all tests, with re-run (default) In addition to the included tests, you can also find extra integration and UI -tests in the [Acceptance Test Harness (ATH)] repository. +tests in the [Acceptance Test Harness (ATH)](https://github.com/jenkinsci/acceptance-test-harness) repository. If you propose complex UI changes, you should create new ATH tests for them. ### JavaScript unit tests @@ -100,7 +100,7 @@ cd war; yarn test ## Proposing Changes The Jenkins project source code repositories are hosted at GitHub. -All proposed changes are submitted, and code reviewed, using a [GitHub pull request] process. +All proposed changes are submitted, and code reviewed, using a [GitHub pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) process. To submit a pull request: @@ -108,15 +108,15 @@ To submit a pull request: It is a good practice is to create branches instead of pushing to master. 2. In the GitHub Web UI, click the _New Pull Request_ button. 3. Select `jenkinsci` as _base fork_ and `master` as `base`, then click _Create Pull Request_. - * We integrate all changes into the master branch towards the Weekly releases. - * After that, the changes may be backported to the current LTS baseline by the LTS Team. - Read more about the [backporting process]. -4. Fill in the Pull Request description according to the [proposed template]. + * We integrate all changes into the master branch towards the Weekly releases. + * After that, the changes may be backported to the current LTS baseline by the LTS Team. + Read more about the [backporting process](https://www.jenkins.io/download/lts/). +4. Fill in the Pull Request description according to the [proposed template](.github/PULL_REQUEST_TEMPLATE.md). 5. Click _Create Pull Request_. 6. Wait for CI results/reviews, process the feedback. - * If you do not get feedback after 3 days, feel free to ping `@jenkinsci/core-pr-reviewers` in the comments. - * Usually we merge pull requests after 2 approvals from reviewers, no requested changes, and having waited some more time to give others an opportunity to provide their feedback. - See [this page](/docs/MAINTAINERS.adoc) for more information about our review process. + * If you do not get feedback after 3 days, feel free to ping `@jenkinsci/core-pr-reviewers` in the comments. + * Usually we merge pull requests after 2 approvals from reviewers, no requested changes, and having waited some more time to give others an opportunity to provide their feedback. + See [this page](/docs/MAINTAINERS.adoc) for more information about our review process. Once your Pull Request is ready to be merged, the repository maintainers will integrate it, prepare changelogs, and @@ -185,25 +185,25 @@ Failure to work around the problem as described above will result in a `could no ## Copyright -The Jenkins core is licensed under [MIT license], with a few exceptions in bundled classes. +The Jenkins core is licensed under [MIT license](./LICENSE.txt), with a few exceptions in bundled classes. We consider all contributions as MIT unless it's explicitly stated otherwise. MIT-incompatible code contributions will be rejected. Contributions under MIT-compatible licenses may also be rejected if they are not ultimately necessary. -We **Do NOT** require pull request submitters to sign the [contributor agreement] +We **Do NOT** require pull request submitters to sign the [contributor agreement](https://www.jenkins.io/project/governance/#cla) as long as the code is licensed under MIT, and merged by one of the contributors with the signed agreement. We still encourage people to sign the contributor agreement if they intend to submit more than a few pull requests. Signing is also a mandatory prerequisite for getting merge/push permissions to core repositories -and for joining teams like the [Jenkins Security Team]. +and for joining teams like the [Jenkins Security Team](https://www.jenkins.io/security/#team). ## Continuous Integration The Jenkins project has a Continuous Integration server... powered by Jenkins, of course. -It is located at [ci.jenkins.io]. +It is located at [ci.jenkins.io](https://ci.jenkins.io/). -The Jenkins project uses [Jenkins Pipeline] to run builds. -The code for the core build flow is stored in the [Jenkinsfile] in the repository root. +The Jenkins project uses [Jenkins Pipeline](https://www.jenkins.io/doc/book/pipeline/) to run builds. +The code for the core build flow is stored in the [Jenkinsfile](./Jenkinsfile) in the repository root. If you want to update that build flow (e.g. "add more checks"), just submit a pull request. @@ -213,21 +213,3 @@ just submit a pull request. * [Jenkins Chat Channels](https://www.jenkins.io/chat/) * [Beginners Guide To Contributing](https://www.jenkins.io/participate/) * [List of newbie-friendly issues in the core](https://issues.jenkins.io/issues/?jql=project%20%3D%20JENKINS%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20component%20%3D%20core%20AND%20labels%20in%20(newbie-friendly)) - -[Preparing for Plugin Development]: https://www.jenkins.io/doc/developer/tutorial/prepare/ -[newbie friendly issues]: https://issues.jenkins.io/issues/?jql=project%20%3D%20JENKINS%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20component%20%3D%20core%20AND%20labels%20in%20(newbie-friendly) -[Participate]: https://www.jenkins.io/participate/ -[building and debugging process here]: https://www.jenkins.io/doc/developer/building/ -[guide]: https://www.jenkins.io/doc/book/installing/war-file/#run-the-war-file -[Remote Debug Flags]: https://stackoverflow.com/questions/975271/remote-debugging-a-java-application -[Acceptance Test Harness (ATH)]: https://github.com/jenkinsci/acceptance-test-harness -[backporting process]: https://www.jenkins.io/download/lts/ -[proposed template]: .github/PULL_REQUEST_TEMPLATE.md -[MIT license]: ./LICENSE.txt -[contributor agreement]: https://www.jenkins.io/project/governance/#cla -[Jenkins Security Team]: https://www.jenkins.io/security/#team -[ci.jenkins.io]: https://ci.jenkins.io/ -[Jenkins Pipeline]: https://www.jenkins.io/doc/book/pipeline/ -[Jenkinsfile]: ./Jenkinsfile -[download Maven here]: https://maven.apache.org/download.cgi -[GitHub pull request]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests diff --git a/README.md b/README.md index 9c48c427cc2b..625fde92128b 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Latest releases: # Source -Our latest and greatest source of Jenkins can be found on [GitHub]. Fork us! +Our latest and greatest source of Jenkins can be found on [GitHub](https://github.com/jenkinsci/jenkins). Fork us! # Contributing to Jenkins @@ -57,7 +57,7 @@ Documentation for Jenkins core maintainers is in the [maintainers guidelines](do # News and Website -All information about Jenkins can be found on our [website]. +All information about Jenkins can be found on our [website](https://www.jenkins.io/). Follow us on [Twitter](https://twitter.com/jenkinsci) or [LinkedIn](https://www.linkedin.com/company/jenkins-project/). # Governance @@ -71,8 +71,4 @@ Jenkins is used by millions of users and thousands of companies. See [adopters](https://www.jenkins.io/project/adopters/) for the list of Jenkins adopters and their success stories. # License -Jenkins is **licensed** under the **[MIT License]**. - -[MIT License]: https://github.com/jenkinsci/jenkins/blob/master/LICENSE.txt -[GitHub]: https://github.com/jenkinsci/jenkins -[website]: https://www.jenkins.io/ +Jenkins is **licensed** under the **[MIT License](https://github.com/jenkinsci/jenkins/blob/master/LICENSE.txt)**. diff --git a/bom/pom.xml b/bom/pom.xml index 6b8d1b3c6246..37895381a44b 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -56,7 +56,7 @@ THE SOFTWARE. org.springframework spring-framework-bom - 5.3.21 + 5.3.22 pom import diff --git a/cli/pom.xml b/cli/pom.xml index 2bfaf2dd6a86..1338f2dfae5f 100644 --- a/cli/pom.xml +++ b/cli/pom.xml @@ -106,18 +106,6 @@ ${junit.jupiter.version} test - - org.junit.jupiter - junit-jupiter-api - ${junit.jupiter.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.jupiter.version} - test - diff --git a/core/pom.xml b/core/pom.xml index fe1415c82182..cda15a406ff3 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -521,18 +521,6 @@ THE SOFTWARE. ${junit.jupiter.version} test - - org.junit.jupiter - junit-jupiter-api - ${junit.jupiter.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.jupiter.version} - test - org.junit.vintage junit-vintage-engine diff --git a/core/src/main/java/hudson/model/AbstractProject.java b/core/src/main/java/hudson/model/AbstractProject.java index 8b46d0cd0a7e..ad7f2f9f7830 100644 --- a/core/src/main/java/hudson/model/AbstractProject.java +++ b/core/src/main/java/hudson/model/AbstractProject.java @@ -1100,16 +1100,27 @@ public CauseOfBlockage getCauseOfBlockage() { /** * Returns the project if any of the downstream project is either - * building, waiting, pending or buildable. + * building, or queued and not blocked by an upstream/downstream project build. *

* This means eventually there will be an automatic triggering of * the given project (provided that all builds went smoothly.) */ public AbstractProject getBuildingDownstream() { - Set unblockedTasks = Jenkins.get().getQueue().getUnblockedTasks(); + // Unblocked downstream tasks must block this project. + Set tasks = Jenkins.get().getQueue().getUnblockedTasks(); + // Blocked downstream tasks must block this project. + // Projects blocked by upstream or downstream builds + // are ignored to break deadlocks. + for (Queue.Item item : Jenkins.get().getQueue().getBlockedItems()) { + if (item.getCauseOfBlockage() instanceof AbstractProject.BecauseOfUpstreamBuildInProgress || + item.getCauseOfBlockage() instanceof AbstractProject.BecauseOfDownstreamBuildInProgress) { + continue; + } + tasks.add(item.task); + } for (AbstractProject tup : getTransitiveDownstreamProjects()) { - if (tup != this && (tup.isBuilding() || unblockedTasks.contains(tup))) + if (tup != this && (tup.isBuilding() || tasks.contains(tup))) return tup; } return null; @@ -1117,16 +1128,27 @@ public AbstractProject getBuildingDownstream() { /** * Returns the project if any of the upstream project is either - * building or is in the queue. + * building, or queued and not blocked by an upstream/downstream project build. *

* This means eventually there will be an automatic triggering of * the given project (provided that all builds went smoothly.) */ public AbstractProject getBuildingUpstream() { - Set unblockedTasks = Jenkins.get().getQueue().getUnblockedTasks(); + // Unblocked upstream tasks must block this project. + Set tasks = Jenkins.get().getQueue().getUnblockedTasks(); + // Blocked upstream tasks must block this project. + // Projects blocked by upstream or downstream builds + // are ignored to break deadlocks. + for (Queue.Item item : Jenkins.get().getQueue().getBlockedItems()) { + if (item.getCauseOfBlockage() instanceof AbstractProject.BecauseOfUpstreamBuildInProgress || + item.getCauseOfBlockage() instanceof AbstractProject.BecauseOfDownstreamBuildInProgress) { + continue; + } + tasks.add(item.task); + } for (AbstractProject tup : getTransitiveUpstreamProjects()) { - if (tup != this && (tup.isBuilding() || unblockedTasks.contains(tup))) + if (tup != this && (tup.isBuilding() || tasks.contains(tup))) return tup; } return null; diff --git a/core/src/main/java/hudson/model/ParametersAction.java b/core/src/main/java/hudson/model/ParametersAction.java index 662946d23213..94915107432f 100644 --- a/core/src/main/java/hudson/model/ParametersAction.java +++ b/core/src/main/java/hudson/model/ParametersAction.java @@ -208,7 +208,7 @@ public String getDisplayName() { @Override public String getIconFileName() { - return "document-properties.png"; + return "symbol-parameters"; } @Override diff --git a/core/src/main/java/hudson/model/UpdateCenter.java b/core/src/main/java/hudson/model/UpdateCenter.java index 3aad76f1f043..1307381b48ff 100644 --- a/core/src/main/java/hudson/model/UpdateCenter.java +++ b/core/src/main/java/hudson/model/UpdateCenter.java @@ -1065,6 +1065,12 @@ public List getUpdates() { return new ArrayList<>(pluginMap.values()); } + // for Jelly + @Restricted(NoExternalUse.class) + public boolean hasIncompatibleUpdates(PluginManager.MetadataCache cache) { + return getUpdates().stream().anyMatch(plugin -> !plugin.isCompatible(cache)); + } + @Restricted(NoExternalUse.class) public List getPluginsWithUnavailableUpdates() { Map pluginMap = new LinkedHashMap<>(); diff --git a/core/src/main/java/hudson/model/listeners/package-info.java b/core/src/main/java/hudson/model/listeners/package-info.java new file mode 100644 index 000000000000..1b634908be95 --- /dev/null +++ b/core/src/main/java/hudson/model/listeners/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Listener interfaces for various events that occur inside the server. + */ +package hudson.model.listeners; diff --git a/core/src/main/java/hudson/model/listeners/package.html b/core/src/main/java/hudson/model/listeners/package.html deleted file mode 100644 index 395a670b1851..000000000000 --- a/core/src/main/java/hudson/model/listeners/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Listener interfaces for various events that occur inside the server. - \ No newline at end of file diff --git a/core/src/main/java/hudson/model/package-info.java b/core/src/main/java/hudson/model/package-info.java new file mode 100644 index 000000000000..fd6f5e9ae856 --- /dev/null +++ b/core/src/main/java/hudson/model/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Core object model that are bound to URLs via stapler, rooted at {@link jenkins.model.Jenkins}. + */ +package hudson.model; diff --git a/core/src/main/java/hudson/model/package.html b/core/src/main/java/hudson/model/package.html deleted file mode 100644 index 73e34b62da65..000000000000 --- a/core/src/main/java/hudson/model/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Core object model that are bound to URLs via stapler, rooted at Hudson. - \ No newline at end of file diff --git a/core/src/main/java/hudson/node_monitors/package-info.java b/core/src/main/java/hudson/node_monitors/package-info.java new file mode 100644 index 000000000000..7fc92a21b600 --- /dev/null +++ b/core/src/main/java/hudson/node_monitors/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Code that monitors the health of agents + */ +package hudson.node_monitors; diff --git a/core/src/main/java/hudson/node_monitors/package.html b/core/src/main/java/hudson/node_monitors/package.html deleted file mode 100644 index e178fe411c74..000000000000 --- a/core/src/main/java/hudson/node_monitors/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Code that monitors the health of agents - \ No newline at end of file diff --git a/core/src/main/java/hudson/scheduler/package-info.java b/core/src/main/java/hudson/scheduler/package-info.java new file mode 100644 index 000000000000..a7d5f837b7c2 --- /dev/null +++ b/core/src/main/java/hudson/scheduler/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Classes that implement cron-like features + */ +package hudson.scheduler; diff --git a/core/src/main/java/hudson/scheduler/package.html b/core/src/main/java/hudson/scheduler/package.html deleted file mode 100644 index 6809b27ad9a6..000000000000 --- a/core/src/main/java/hudson/scheduler/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Classes that implement cron-like features - \ No newline at end of file diff --git a/core/src/main/java/hudson/scm/browsers/package-info.java b/core/src/main/java/hudson/scm/browsers/package-info.java new file mode 100644 index 000000000000..a97097007581 --- /dev/null +++ b/core/src/main/java/hudson/scm/browsers/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Code that computes links to external source code repository browsers. + */ +package hudson.scm.browsers; diff --git a/core/src/main/java/hudson/scm/browsers/package.html b/core/src/main/java/hudson/scm/browsers/package.html deleted file mode 100644 index 34cdf0e8aff1..000000000000 --- a/core/src/main/java/hudson/scm/browsers/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Code that computes links to external source code repository browsers. - \ No newline at end of file diff --git a/core/src/main/java/hudson/scm/package-info.java b/core/src/main/java/hudson/scm/package-info.java new file mode 100644 index 000000000000..e7ec169ef42c --- /dev/null +++ b/core/src/main/java/hudson/scm/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Jenkins's interface with source code management systems. Start with {@link hudson.scm.SCM}. + */ +package hudson.scm; diff --git a/core/src/main/java/hudson/scm/package.html b/core/src/main/java/hudson/scm/package.html deleted file mode 100644 index d2a0046c665f..000000000000 --- a/core/src/main/java/hudson/scm/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Hudson's interface with source code management systems. Start with SCM - \ No newline at end of file diff --git a/core/src/main/java/hudson/search/package-info.java b/core/src/main/java/hudson/search/package-info.java new file mode 100644 index 000000000000..7574b3413653 --- /dev/null +++ b/core/src/main/java/hudson/search/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * QuickSilver-like search/jump capability for better navigation around Jenkins. + */ +package hudson.search; diff --git a/core/src/main/java/hudson/search/package.html b/core/src/main/java/hudson/search/package.html deleted file mode 100644 index 2626d06125af..000000000000 --- a/core/src/main/java/hudson/search/package.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -QuickSilver-like -search/jump capability for better navigation around the website. - \ No newline at end of file diff --git a/core/src/main/java/hudson/security/package-info.java b/core/src/main/java/hudson/security/package-info.java new file mode 100644 index 000000000000..6ee840f80008 --- /dev/null +++ b/core/src/main/java/hudson/security/package-info.java @@ -0,0 +1,29 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Security-related code. + * @see Security + */ +package hudson.security; diff --git a/core/src/main/java/hudson/security/package.html b/core/src/main/java/hudson/security/package.html deleted file mode 100644 index 833be9b59f0e..000000000000 --- a/core/src/main/java/hudson/security/package.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Security-related code. -See: Security - diff --git a/core/src/main/java/hudson/slaves/package-info.java b/core/src/main/java/hudson/slaves/package-info.java new file mode 100644 index 000000000000..8e9d74d31ef3 --- /dev/null +++ b/core/src/main/java/hudson/slaves/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Code related to agents. + */ +package hudson.slaves; diff --git a/core/src/main/java/hudson/slaves/package.html b/core/src/main/java/hudson/slaves/package.html deleted file mode 100644 index a5080940f2ac..000000000000 --- a/core/src/main/java/hudson/slaves/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Code related to agents. - \ No newline at end of file diff --git a/core/src/main/java/hudson/tasks/package-info.java b/core/src/main/java/hudson/tasks/package-info.java new file mode 100644 index 000000000000..915c1bf03479 --- /dev/null +++ b/core/src/main/java/hudson/tasks/package-info.java @@ -0,0 +1,29 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Built-in {@link hudson.tasks.Builder}s and {@link hudson.tasks.Publisher}s + * that perform the actual heavy-lifting of a build. + */ +package hudson.tasks; diff --git a/core/src/main/java/hudson/tasks/package.html b/core/src/main/java/hudson/tasks/package.html deleted file mode 100644 index 3ecc377e257b..000000000000 --- a/core/src/main/java/hudson/tasks/package.html +++ /dev/null @@ -1,28 +0,0 @@ - - - -Built-in Builders and Publishers -that perform the actual heavy-lifting of a build. - diff --git a/core/src/main/java/hudson/triggers/package-info.java b/core/src/main/java/hudson/triggers/package-info.java new file mode 100644 index 000000000000..839420612965 --- /dev/null +++ b/core/src/main/java/hudson/triggers/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Built-in {@link hudson.triggers.Trigger}s that run periodically to kick a new build. + */ +package hudson.triggers; diff --git a/core/src/main/java/hudson/triggers/package.html b/core/src/main/java/hudson/triggers/package.html deleted file mode 100644 index dd0f97ed8b13..000000000000 --- a/core/src/main/java/hudson/triggers/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Built-in Triggers that run periodically to kick a new build. - \ No newline at end of file diff --git a/core/src/main/java/hudson/util/package-info.java b/core/src/main/java/hudson/util/package-info.java new file mode 100644 index 000000000000..b2836260331f --- /dev/null +++ b/core/src/main/java/hudson/util/package-info.java @@ -0,0 +1,28 @@ +/* + * The MIT License + * + * Copyright (c) 2022, Jenkins project contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +/** + * Other miscellaneous utility code + */ +package hudson.util; diff --git a/core/src/main/java/hudson/util/package.html b/core/src/main/java/hudson/util/package.html deleted file mode 100644 index 097530685397..000000000000 --- a/core/src/main/java/hudson/util/package.html +++ /dev/null @@ -1,27 +0,0 @@ - - - -Other miscellaneous utility code - \ No newline at end of file diff --git a/core/src/main/java/jenkins/model/NewViewLink.java b/core/src/main/java/jenkins/model/NewViewLink.java deleted file mode 100644 index 65ce84928c34..000000000000 --- a/core/src/main/java/jenkins/model/NewViewLink.java +++ /dev/null @@ -1,67 +0,0 @@ -package jenkins.model; - -import com.google.common.annotations.VisibleForTesting; -import hudson.Extension; -import hudson.model.Action; -import hudson.model.ModifiableViewGroup; -import hudson.model.TransientViewActionFactory; -import hudson.model.View; -import hudson.model.ViewGroup; -import java.util.Collections; -import java.util.List; -import org.kohsuke.accmod.Restricted; -import org.kohsuke.accmod.restrictions.NoExternalUse; - -@Extension -@Restricted(NoExternalUse.class) -public class NewViewLink extends TransientViewActionFactory { - - @VisibleForTesting - static final String ICON_FILE_NAME = "folder"; - @VisibleForTesting - public static final String URL_NAME = "newView"; - - @Override - public List createFor(final View v) { - // do not show the action if the viewgroup is not modifiable - ViewGroup vg = v.getOwner(); - if (vg instanceof ModifiableViewGroup) { - return List.of(new NewViewLinkAction((ModifiableViewGroup) vg)); - } - return Collections.emptyList(); - } - - private static class NewViewLinkAction implements Action { - - private ModifiableViewGroup target; - - private NewViewLinkAction(ModifiableViewGroup target) { - this.target = target; - } - - @Override - public String getIconFileName() { - if (hasPermission()) { - return ICON_FILE_NAME; - } - return null; - } - - @Override - public String getDisplayName() { - return Messages.NewViewLink_NewView(); - } - - @Override - public String getUrlName() { - // getUrl returns the path from the root (without the context and no leading slash) - // we need to add the slash so that this is not relative to the current URL but to the context - return "/" + target.getUrl() + URL_NAME; - } - - private boolean hasPermission() { - return target.hasPermission(View.CREATE); - } - - } -} diff --git a/core/src/main/resources/hudson/PluginManager/_table.js b/core/src/main/resources/hudson/PluginManager/_table.js index 45e431338cdf..8f32bb57273f 100644 --- a/core/src/main/resources/hudson/PluginManager/_table.js +++ b/core/src/main/resources/hudson/PluginManager/_table.js @@ -1,13 +1,3 @@ -function checkPluginsWithoutWarnings() { - var inputs = document.getElementsByTagName('input'); - for(var i = 0; i < inputs.length; i++) { - var candidate = inputs[i]; - if(candidate.type === "checkbox" && !candidate.disabled) { - candidate.checked = candidate.dataset.compatWarning === 'false'; - } - } -} - Behaviour.specify("#filter-box", '_table', 0, function(e) { function applyFilter() { var filter = e.value.toLowerCase().trim(); @@ -80,11 +70,11 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { /** * Wait for document onload. - */ - Element.observe(window, "load", function() { + */ + Element.observe(window, "load", function() { var pluginsTable = select('#plugins'); var pluginTRs = selectAll('.plugin', pluginsTable); - + if (!pluginTRs) { return; } @@ -93,16 +83,16 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { function i18n(messageId) { return pluginI18n.getAttribute('data-' + messageId); } - + // Create a map of the plugin rows, making it easy to index them. var plugins = {}; for (var i = 0; i < pluginTRs.length; i++) { var pluginTR = pluginTRs[i]; var pluginId = pluginTR.getAttribute('data-plugin-id'); - + plugins[pluginId] = pluginTR; } - + function getPluginTR(pluginId) { return plugins[pluginId]; } @@ -114,24 +104,24 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { return pluginId; } } - + function processSpanSet(spans) { var ids = []; for (var i = 0; i < spans.length; i++) { var span = spans[i]; var pluginId = span.getAttribute('data-plugin-id'); var pluginName = getPluginName(pluginId); - + span.update(pluginName); ids.push(pluginId); } return ids; } - + function markAllDependentsDisabled(pluginTR) { var jenkinsPluginMetadata = pluginTR.jenkinsPluginMetadata; var dependentIds = jenkinsPluginMetadata.dependentIds; - + if (dependentIds) { // If the only dependent is jenkins-core (it's a bundle plugin), then lets // treat it like all its dependents are disabled. We're really only interested in @@ -151,7 +141,7 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { pluginTR.removeClassName('all-dependents-disabled'); return; } - + // The dependent is a plugin.... var dependentPluginTr = getPluginTR(dependentId); if (dependentPluginTr && dependentPluginTr.jenkinsPluginMetadata.enableInput.checked) { @@ -161,14 +151,14 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { } } } - + pluginTR.addClassName('all-dependents-disabled'); } function markHasDisabledDependencies(pluginTR) { var jenkinsPluginMetadata = pluginTR.jenkinsPluginMetadata; var dependencyIds = jenkinsPluginMetadata.dependencyIds; - + if (dependencyIds) { for (var i = 0; i < dependencyIds.length; i++) { var dependencyPluginTr = getPluginTR(dependencyIds[i]); @@ -179,10 +169,10 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { } } } - + pluginTR.removeClassName('has-disabled-dependency'); } - + function setEnableWidgetStates() { for (var i = 0; i < pluginTRs.length; i++) { var pluginMetadata = pluginTRs[i].jenkinsPluginMetadata; @@ -195,7 +185,7 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { markHasDisabledDependencies(pluginTRs[i]); } } - + function addDependencyInfoRow(pluginTR, infoTR) { infoTR.addClassName('plugin-dependency-info'); pluginTR.insert({ @@ -212,7 +202,7 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { } } - function populateEnableDisableInfo(pluginTR, infoContainer) { + function populateEnableDisableInfo(pluginTR, infoContainer) { var pluginMetadata = pluginTR.jenkinsPluginMetadata; // Remove all existing class info @@ -224,9 +214,9 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { var dependencySpans = pluginMetadata.dependencies; infoContainer.update('

' + i18n('cannot-enable') + '
' + i18n('disabled-dependencies') + '.
'); - + // Go through each dependency element. Show the spans where the dependency is - // disabled. Hide the others. + // disabled. Hide the others. for (var i = 0; i < dependencySpans.length; i++) { var dependencySpan = dependencySpans[i]; var pluginId = dependencySpan.getAttribute('data-plugin-id'); @@ -244,15 +234,15 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { dependencySpan.setStyle({display: 'inline-block'}); } } - + dependenciesDiv.setStyle({display: 'inherit'}); infoContainer.appendChild(dependenciesDiv); - + return true; } if (pluginTR.hasClassName('has-dependents')) { if (!pluginTR.hasClassName('all-dependents-disabled')) { var dependentIds = pluginMetadata.dependentIds; - + // If the only dependent is jenkins-core (it's a bundle plugin), then lets // treat it like all its dependents are disabled. We're really only interested in // dependent plugins in this case. @@ -273,7 +263,7 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { infoContainer.appendChild(getDependentsDiv(pluginTR, true)); return true; } - + return false; } @@ -333,7 +323,7 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { var dependentsDiv = select('.dependent-list', pluginTR); var enableTD = select('td.enable', pluginTR); var uninstallTD = select('td.uninstall', pluginTR); - + pluginTR.jenkinsPluginMetadata = { enableInput: enableInput, dependenciesDiv: dependenciesDiv, @@ -348,7 +338,7 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { pluginTR.jenkinsPluginMetadata.dependents = selectAll('span', dependentsDiv); pluginTR.jenkinsPluginMetadata.dependentIds = processSpanSet(pluginTR.jenkinsPluginMetadata.dependents); } - + // Setup event handlers... if (enableInput) { // Toggling of the enable/disable checkbox requires a check and possible @@ -357,8 +347,8 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { setEnableWidgetStates(); }); } - - // + + // var infoTR = document.createElement("tr"); var infoTD = document.createElement("td"); var infoDiv = document.createElement("div"); @@ -377,7 +367,7 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { } showInfoTimeout = undefined; } - + // Handle mouse in/out of the enable/disable cell (left most cell). if (enableTD) { Element.observe(enableTD, 'mouseenter', function() { @@ -416,11 +406,25 @@ Behaviour.specify("#filter-box", '_table', 0, function(e) { for (var i = 0; i < pluginTRs.length; i++) { initPluginRowHandling(pluginTRs[i]); } - + setEnableWidgetStates(); }); }()); Element.observe(window, "load", function() { document.getElementById('filter-box').focus(); -}); \ No newline at end of file + + const compatibleCheckbox = document.querySelector("[data-select='compatible']"); + if (compatibleCheckbox) { + compatibleCheckbox.addEventListener("click", () => { + const inputs = document.getElementsByTagName('input'); + for (let i = 0; i < inputs.length; i++) { + const candidate = inputs[i]; + if (candidate.type === "checkbox" && !candidate.disabled) { + candidate.checked = candidate.dataset.compatWarning === 'false'; + } + } + window.updateTableHeaderCheckbox(); + }) + } +}); diff --git a/core/src/main/resources/hudson/PluginManager/index.jelly b/core/src/main/resources/hudson/PluginManager/index.jelly index 27970a070912..73a52662420a 100644 --- a/core/src/main/resources/hudson/PluginManager/index.jelly +++ b/core/src/main/resources/hudson/PluginManager/index.jelly @@ -29,12 +29,6 @@ THE SOFTWARE.
- - ${%Select}: ${%All}, - ${%Compatible}, - ${%None}
-
- ${%UpdatePageDescription}
${%UpdatePageLegend(rootURL+'/updateCenter/')}
diff --git a/core/src/main/resources/hudson/PluginManager/table.jelly b/core/src/main/resources/hudson/PluginManager/table.jelly index 4f0976b5e121..5ffcfebf7d21 100644 --- a/core/src/main/resources/hudson/PluginManager/table.jelly +++ b/core/src/main/resources/hudson/PluginManager/table.jelly @@ -59,12 +59,23 @@ THE SOFTWARE.
+ + - @@ -77,7 +88,6 @@ THE SOFTWARE. -
- ${%Install} + + + + + + ${%Name}
This plugin is deprecated. In general, this means that it is either obsolete, no longer being developed, or may no longer work. Learn more. -loading=Loading \ No newline at end of file +loading=Loading +CompatibleTooltip=Selects plugin updates that are compatible with their current version diff --git a/core/src/main/resources/jenkins/model/Messages.properties b/core/src/main/resources/jenkins/model/Messages.properties index de5287bc8c20..9f956b5639da 100644 --- a/core/src/main/resources/jenkins/model/Messages.properties +++ b/core/src/main/resources/jenkins/model/Messages.properties @@ -61,8 +61,6 @@ JenkinsLocationConfiguration.does_not_look_like_an_email_address=Does not look l Mailer.Localhost.Error=Please set a valid host name, instead of localhost Mailer.NotHttp.Error=The URL is invalid, please ensure you are using http:// or https:// with a valid domain. -NewViewLink.NewView=New View - PatternProjectNamingStrategy.DisplayName=Pattern PatternProjectNamingStrategy.NamePatternRequired=Name Pattern is required PatternProjectNamingStrategy.NamePatternInvalidSyntax=regular expression''s syntax is invalid. diff --git a/core/src/main/resources/jenkins/model/Messages_de.properties b/core/src/main/resources/jenkins/model/Messages_de.properties index a4aafa192b44..c213d03ebf8d 100644 --- a/core/src/main/resources/jenkins/model/Messages_de.properties +++ b/core/src/main/resources/jenkins/model/Messages_de.properties @@ -49,8 +49,6 @@ DefaultProjectNamingStrategy.DisplayName=keine Einschränkung Mailer.Address.Not.Configured=Adresse nicht konfiguriert Mailer.Localhost.Error=Bitte verwenden Sie einen konkreten Hostnamen anstelle von localhost . -NewViewLink.NewView=Ansicht anlegen - PatternProjectNamingStrategy.DisplayName=Muster PatternProjectNamingStrategy.NamePatternRequired=Der Reguläre Ausdruck darf nicht leer sein. PatternProjectNamingStrategy.NamePatternInvalidSyntax=Der Reguläre Ausdruck ist ungültig. diff --git a/core/src/main/resources/jenkins/model/Messages_fr.properties b/core/src/main/resources/jenkins/model/Messages_fr.properties index 063e401c59a1..86a486bebe38 100644 --- a/core/src/main/resources/jenkins/model/Messages_fr.properties +++ b/core/src/main/resources/jenkins/model/Messages_fr.properties @@ -52,5 +52,3 @@ ParameterizedJobMixIn.build_now=Lancer un build BlockedBecauseOfBuildInProgress.shortDescription=Le build #{0} est déjà en cours {1} BlockedBecauseOfBuildInProgress.ETA=\ (fin prévue à : {0}) BuildDiscarderProperty.displayName=Supprimer les anciens builds - -NewViewLink.NewView=Créer une Vue diff --git a/core/src/main/resources/jenkins/model/Messages_it.properties b/core/src/main/resources/jenkins/model/Messages_it.properties index 2388568df935..fb207588ae44 100644 --- a/core/src/main/resources/jenkins/model/Messages_it.properties +++ b/core/src/main/resources/jenkins/model/Messages_it.properties @@ -72,7 +72,6 @@ Mailer.Address.Not.Configured=Indirizzo non ancora configurato \ Mailer.Localhost.Error=Impostare un nome host valido anziché localhost Mailer.NotHttp.Error=L''URL non è valido, assicurarsi di utilizzare http:// o \ https:// con un dominio valido. -NewViewLink.NewView=Nuova vista ParameterizedJobMixIn.build_now=Compila ora ParameterizedJobMixIn.build_with_parameters=Compila con parametri PatternProjectNamingStrategy.DisplayName=Pattern diff --git a/core/src/main/resources/jenkins/model/Messages_ja.properties b/core/src/main/resources/jenkins/model/Messages_ja.properties index 26c941c645e7..0eb0d10b1c0c 100644 --- a/core/src/main/resources/jenkins/model/Messages_ja.properties +++ b/core/src/main/resources/jenkins/model/Messages_ja.properties @@ -52,8 +52,6 @@ CLI.safe-shutdown.shortDescription=\ DefaultProjectNamingStrategy.DisplayName=デフォルト -NewViewLink.NewView=新規ビュー - PatternProjectNamingStrategy.DisplayName=パターン PatternProjectNamingStrategy.NamePatternRequired=パターンは必須です。 PatternProjectNamingStrategy.NamePatternInvalidSyntax=正規表現に誤りがあります。 diff --git a/core/src/main/resources/jenkins/model/Messages_ko.properties b/core/src/main/resources/jenkins/model/Messages_ko.properties index 0ffab2537d1c..be79243c6eff 100644 --- a/core/src/main/resources/jenkins/model/Messages_ko.properties +++ b/core/src/main/resources/jenkins/model/Messages_ko.properties @@ -4,8 +4,6 @@ Hudson.ViewAlreadyExists="{0}" 이름의 뷰가 이미 존재합니다. CLI.restart.shortDescription=Jenkins를 안전하게 재시작 -NewViewLink.NewView=새로운 뷰 - ParameterizedJobMixIn.build_with_parameters=파라미터와 함께 빌드 ParameterizedJobMixIn.build_now=지금 빌드 BlockedBecauseOfBuildInProgress.shortDescription=빌드 #{0} 가 이미 진행중입니다{1} diff --git a/core/src/main/resources/jenkins/model/Messages_pt_BR.properties b/core/src/main/resources/jenkins/model/Messages_pt_BR.properties index 94cdc13fb189..5813f57d7b97 100644 --- a/core/src/main/resources/jenkins/model/Messages_pt_BR.properties +++ b/core/src/main/resources/jenkins/model/Messages_pt_BR.properties @@ -62,7 +62,6 @@ Mailer.NotHttp.Error=A URL é inválida, por favor se certifique que você está válido. Hudson.Computer.IncorrectNumberOfExecutors=Campo "Número de executores" incorreto. Ele precisa ser um número não \ negativo. -NewViewLink.NewView=Nova visão EnforceSlaveAgentPortAdministrativeMonitor.displayName=Impor porta TCP para o agente BuiltInNodeMigration.DisplayName=Nome do nó embutido e migração de rótulo SimpleGlobalBuildDiscarderStrategy.displayName=Descartador de construção específico diff --git a/core/src/main/resources/jenkins/model/Messages_ru.properties b/core/src/main/resources/jenkins/model/Messages_ru.properties index da2b98ea3eac..ffe1e499f1ce 100644 --- a/core/src/main/resources/jenkins/model/Messages_ru.properties +++ b/core/src/main/resources/jenkins/model/Messages_ru.properties @@ -55,4 +55,3 @@ PatternProjectNamingStrategy.NamePatternInvalidSyntax=Некорректное ParameterizedJobMixIn.build_with_parameters=Собрать с параметрами CLI.disable-job.shortDescription=Запретить задачу CLI.enable-job.shortDescription=Разрешить задачу -NewViewLink.NewView=Новое представление \ No newline at end of file diff --git a/core/src/main/resources/jenkins/model/Messages_tr.properties b/core/src/main/resources/jenkins/model/Messages_tr.properties index e4634eb73d00..f3108bf971ec 100644 --- a/core/src/main/resources/jenkins/model/Messages_tr.properties +++ b/core/src/main/resources/jenkins/model/Messages_tr.properties @@ -30,7 +30,6 @@ Hudson.NoJavaInPath=java, PATH içerisinde değil. JDK Hudson.NoName=İsim belirtilmedi Hudson.UnsafeChar=''{0}'' güvenli olmayan bir karakter Hudson.ViewName=Hepsi -NewViewLink.NewView=Yeni Görünüm ParameterizedJobMixIn.build_now=Şimdi Yapılandır BlockedBecauseOfBuildInProgress.shortDescription=Yapılandırma #{0} zaten işlemde {1} BlockedBecauseOfBuildInProgress.ETA=\ (ETA: {0}) diff --git a/core/src/main/resources/jenkins/model/Messages_zh_TW.properties b/core/src/main/resources/jenkins/model/Messages_zh_TW.properties index b3a9630243dd..897c1d17f266 100644 --- a/core/src/main/resources/jenkins/model/Messages_zh_TW.properties +++ b/core/src/main/resources/jenkins/model/Messages_zh_TW.properties @@ -55,8 +55,6 @@ JenkinsLocationConfiguration.does_not_look_like_an_email_address=這看起來不 Mailer.Localhost.Error=請設定有效的主機名稱,不要用 localhost Mailer.NotHttp.Error=URL 無效,請確保您使用 http\:// 或 https\:// 和有效的網域名稱。 -NewViewLink.NewView=新增視景 - PatternProjectNamingStrategy.DisplayName=樣式 PatternProjectNamingStrategy.NamePatternRequired=一定要輸入名稱樣式 PatternProjectNamingStrategy.NamePatternInvalidSyntax=正規表示式語法錯誤。 diff --git a/core/src/main/resources/lib/layout/breadcrumb.jelly b/core/src/main/resources/lib/layout/breadcrumb.jelly index 56117a62d83d..69c451477aaf 100644 --- a/core/src/main/resources/lib/layout/breadcrumb.jelly +++ b/core/src/main/resources/lib/layout/breadcrumb.jelly @@ -26,6 +26,9 @@ THE SOFTWARE. Used inside <l:layout> to render additional breadcrumb items. + + Display name of the breadcrumb. + URL that the breadcrumb item links to. Can be omitted. @@ -33,16 +36,24 @@ THE SOFTWARE. If specified, this ID will be assigned to the LI element. This is useful for programmatically adding the context menu - - Display name of the breadcrumb. + + If true, this breadcrumb item will include a '⌄' symbol to display a dropdown menu with items + from the '{breadcrumb.href}/contextMenu' path. Since TODO
  • - - ${attrs.title} - + + + ${attrs.title} + + + + ${attrs.title} + + +
  • diff --git a/core/src/main/resources/lib/layout/breadcrumbBar.jelly b/core/src/main/resources/lib/layout/breadcrumbBar.jelly index 770e4ee15beb..cb2047167653 100644 --- a/core/src/main/resources/lib/layout/breadcrumbBar.jelly +++ b/core/src/main/resources/lib/layout/breadcrumbBar.jelly @@ -42,19 +42,10 @@ THE SOFTWARE.