});
function shallowRender(props: Partial<PluginUpdatesProps> = {}) {
- return shallow<PluginUpdatesProps>(<PluginUpdates {...props} />);
+ return shallow<PluginUpdatesProps>(<PluginUpdates pluginName="Xoo" {...props} />);
}
>
<PluginUpdateItem
key="1.3"
+ pluginName="Xoo"
release={
{
"date": "2012-02-10",
/>
<PluginUpdateItem
key="1.1"
+ pluginName="Xoo"
release={
{
"date": "2012-02-01",
/>
<PluginUpdateItem
key="1.2"
+ pluginName="Xoo"
release={
{
"date": "2012-02-02",
</div>
<div>
{plugin.release.description}
- <PluginChangeLogButton release={plugin.release} update={plugin.update} />
+ <PluginChangeLogButton
+ pluginName={plugin.name}
+ release={plugin.release}
+ update={plugin.update}
+ />
{plugin.update.requires.length > 0 && (
<p className="little-spacer-top">
<strong>
import { ButtonLink } from '../../../components/controls/buttons';
import Dropdown from '../../../components/controls/Dropdown';
import EllipsisIcon from '../../../components/icons/EllipsisIcon';
+import { translateWithParameters } from '../../../helpers/l10n';
import { Release, Update } from '../../../types/plugins';
import PluginChangeLog from './PluginChangeLog';
interface Props {
+ pluginName: string;
release: Release;
update: Update;
}
-export default function PluginChangeLogButton({ release, update }: Props) {
+export default function PluginChangeLogButton({ pluginName, release, update }: Props) {
return (
<Dropdown
className="display-inline-block little-spacer-left"
overlay={<PluginChangeLog release={release} update={update} />}
>
- <ButtonLink className="js-changelog">
+ <ButtonLink
+ className="js-changelog"
+ aria-label={translateWithParameters(
+ 'marketplace.show_plugin_changelog',
+ pluginName,
+ release.version
+ )}
+ >
<EllipsisIcon />
</ButtonLink>
</Dropdown>
</strong>
{translate('marketplace._installed')}
</li>
- <PluginUpdates updates={plugin.updates} />
+ <PluginUpdates pluginName={plugin.name} updates={plugin.updates} />
</ul>
</td>
import PluginChangeLogButton from './PluginChangeLogButton';
interface Props {
+ pluginName: string;
update: Update;
release: Release;
}
</div>
<div>
{release.description}
- <PluginChangeLogButton release={release} update={update} />
+ <PluginChangeLogButton
+ pluginName={this.props.pluginName}
+ release={release}
+ update={update}
+ />
</div>
</li>
);
import PluginUpdateItem from './PluginUpdateItem';
export interface PluginUpdatesProps {
+ pluginName: string;
updates?: Update[];
}
-export default function PluginUpdates({ updates }: PluginUpdatesProps) {
+export default function PluginUpdates({ pluginName, updates }: PluginUpdatesProps) {
if (!updates || updates.length <= 0) {
return null;
}
update.release ? (
<PluginUpdateItem
key={update.release.version}
+ pluginName={pluginName}
release={update.release}
update={update}
/>
</div>
<div>
<PluginChangeLogButton
+ pluginName="Sonar Foo"
release={
{
"date": "2020-01-01",
</div>
<div>
<PluginChangeLogButton
+ pluginName="Sonar Foo"
release={
{
"date": "2020-01-01",
</div>
<div>
<PluginChangeLogButton
+ pluginName="Sonar Foo"
release={
{
"date": "2020-01-01",
</div>
<div>
<PluginChangeLogButton
+ pluginName="Sonar Foo"
release={
{
"date": "2020-01-01",
marketplace.update_status.REQUIRES_SYSTEM_UPGRADE=Requires system update
marketplace.update_status.DEPS_REQUIRE_SYSTEM_UPGRADE=Some of dependencies requires system update
marketplace.installing_this_plugin_will_also_install_x=Installing this plugin will also install: {0}
+marketplace.show_plugin_changelog=See {0} {1} changelog
marketplace.update_to_x=Update to {0}
marketplace.uninstall=Uninstall
marketplace.i_accept_the=I accept the