PDF rausgenommen
This commit is contained in:
@ -0,0 +1,26 @@
|
||||
<p>{{ 'ScheduledReports_EmailHello'|translate }}</p>
|
||||
<p>{{ 'CoreUpdater_ThereIsNewPluginVersionAvailableForUpdate'|translate }}</p>
|
||||
|
||||
<ul>
|
||||
{% for plugin in pluginsToBeNotified %}
|
||||
<li>{{ plugin.name }} {{ plugin.latestVersion }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
{% if hasThemeUpdate %}
|
||||
<p>
|
||||
{{ 'CoreUpdater_NotificationClickToUpdateThemes'|translate }}<br/>
|
||||
{{ host }}index.php?module=CorePluginsAdmin&action=themes
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
{% if hasPluginUpdate %}
|
||||
<p>
|
||||
{{ 'CoreUpdater_NotificationClickToUpdatePlugins'|translate }}<br/>
|
||||
{{ host }}index.php?module=CorePluginsAdmin&action=plugins
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<p>
|
||||
{{ 'Installation_HappyAnalysing'|translate }}
|
||||
</p>
|
@ -0,0 +1,22 @@
|
||||
<div class="getNewPlugins">
|
||||
<div class="row">
|
||||
{% for plugin in plugins %}
|
||||
<div class="col s12">
|
||||
|
||||
<h3 class="pluginName" piwik-plugin-name="{{ plugin.name|e('html_attr') }}">{{ plugin.displayName }}</h3>
|
||||
<span>
|
||||
{{ plugin.description }}
|
||||
<br />
|
||||
<a href="javascript:;" piwik-plugin-name="{{ plugin.name|e('html_attr') }}">{{ 'General_MoreDetails'|translate }}</a>
|
||||
</span>
|
||||
|
||||
{% if not loop.last %}<br /><br />{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="widgetBody">
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}"
|
||||
>{{ 'CorePluginsAdmin_ViewAllMarketplacePlugins'|translate }}</a>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,32 @@
|
||||
<div class="getNewPlugins isAdminPage">
|
||||
<div class="row">
|
||||
{% for plugin in plugins %}
|
||||
<div class="col s12 m4">
|
||||
|
||||
<h3 class="pluginName"
|
||||
title="{{ plugin.description|e('html_attr') }}"
|
||||
piwik-plugin-name="{{ plugin.name|e('html_attr') }}">{{ plugin.displayName }}</h3>
|
||||
<p class="description"
|
||||
title="{{ plugin.description|e('html_attr') }}">{{ plugin.description }}</p>
|
||||
|
||||
{% if plugin.screenshots and plugin.screenshots.0 is defined %}
|
||||
<br />
|
||||
<img piwik-plugin-name="{{ plugin.name|e('html_attr') }}"
|
||||
class="screenshot"
|
||||
src="{{ plugin.screenshots.0 }}?w=600" width="100%" alt="">
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="widgetBody">
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}"
|
||||
>{{ 'CorePluginsAdmin_ViewAllMarketplacePlugins'|translate }}</a>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.getNewPlugins .col .description').dotdotdot({
|
||||
watch: 'window'
|
||||
});
|
||||
</script>
|
||||
</div>
|
@ -0,0 +1,23 @@
|
||||
<div class="getNewPlugins getPremiumFeatures widgetBody">
|
||||
<div class="row">
|
||||
{% for plugin in plugins %}
|
||||
<div class="col s12 m4">
|
||||
|
||||
<h3 class="pluginName" piwik-plugin-name="{{ plugin.name|e('html_attr') }}">{{ plugin.displayName }}</h3>
|
||||
<span class="pluginBody">
|
||||
{{ plugin.description }}
|
||||
<br />
|
||||
<a href="javascript:;" class="pluginMoreDetails" piwik-plugin-name="{{ plugin.name|e('html_attr') }}">{{ 'General_MoreDetails'|translate }}</a>
|
||||
</span>
|
||||
</div>
|
||||
{% if loop.index % 3 == 0 %}
|
||||
</div><div class="row">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="widgetBody">
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview', 'show': 'premium'}) }}"
|
||||
>{{ 'CorePluginsAdmin_ViewAllMarketplacePlugins'|translate }}</a>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,43 @@
|
||||
{% extends 'admin.twig' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div style="max-width:980px;">
|
||||
|
||||
{% for plugin in plugins %}
|
||||
<h2>{{ 'Marketplace_InstallingPlugin'|translate(plugin.name) }}</h2>
|
||||
|
||||
<div>
|
||||
|
||||
{% if plugin.isTheme %}
|
||||
|
||||
<p>{{ 'Marketplace_StepDownloadingThemeFromMarketplace'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepThemeSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
|
||||
|
||||
<p><strong><a class="btn" href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce, 'redirectTo': 'marketplace'}) }}">{{ 'Marketplace_ActionActivateTheme'|translate }}</a></strong>
|
||||
|
||||
|
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview', 'show': 'themes'}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a></p>
|
||||
|
||||
{% else %}
|
||||
|
||||
<p>{{ 'Marketplace_StepDownloadingPluginFromMarketplace'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepPluginSuccessfullyInstalled'|translate(plugin.name, plugin.latestVersion) }}</p>
|
||||
|
||||
<p><strong><a class="btn" href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'activate', 'pluginName': plugin.name, 'nonce': nonce, 'redirectTo': 'marketplace'}) }}">{{ 'Marketplace_ActionActivatePlugin'|translate }}</a></strong>
|
||||
|
||||
|
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview', 'show': ''}) }}">{{ 'Marketplace_BackToMarketplace'|translate }}</a></p>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -0,0 +1,75 @@
|
||||
{% set defaultLicenseKeyFields %}
|
||||
<div piwik-field uicontrol="text" name="license_key"
|
||||
class="valign licenseKeyText"
|
||||
full-width="true"
|
||||
ng-model="licenseController.licenseKey"
|
||||
ng-change="licenseController.updatedLicenseKey()"
|
||||
placeholder="{% if isValidConsumer %}{{ 'Marketplace_LicenseKeyIsValidShort'|translate }}{% else %}{{ 'Marketplace_LicenseKey'|translate|e('html_attr') }}{% endif %}">
|
||||
</div>
|
||||
<div piwik-save-button
|
||||
class="valign"
|
||||
onconfirm="licenseController.updateLicense()"
|
||||
data-disabled="!licenseController.enableUpdate"
|
||||
value="{% if hasLicenseKey %}{{ 'CoreUpdater_UpdateTitle'|translate|e('html_attr') }}{% else %}{{ 'Marketplace_ActivateLicenseKey'|translate|e('html_attr') }}{% endif %}"
|
||||
id="submit_license_key"></div>
|
||||
{% endset %}
|
||||
|
||||
<div class="marketplace-max-width" ng-controller="PiwikMarketplaceLicenseController as licenseController">
|
||||
<div class="marketplace-paid-intro">
|
||||
{% if isValidConsumer %}
|
||||
{% if isSuperUser %}
|
||||
{{ 'Marketplace_PaidPluginsWithLicenseKeyIntro'|translate('')|raw }}
|
||||
<br/>
|
||||
|
||||
<div class="licenseToolbar valign-wrapper">
|
||||
{{ defaultLicenseKeyFields|raw }}
|
||||
|
||||
<div piwik-save-button
|
||||
class="valign"
|
||||
id="remove_license_key"
|
||||
onconfirm="licenseController.removeLicense()"
|
||||
value="{{ 'Marketplace_RemoveLicenseKey'|translate|e('html_attr') }}"
|
||||
></div>
|
||||
|
||||
<a href="{{ linkTo({'action': 'subscriptionOverview'}) }}" class="btn valign">
|
||||
{{ 'Marketplace_ViewSubscriptions'|translate }}
|
||||
</a>
|
||||
|
||||
{% if isAutoUpdatePossible and isPluginsAdminEnabled and paidPluginsToInstallAtOnce|length %}
|
||||
<a href="javascript:;" class="btn installAllPaidPlugins valign">
|
||||
{{ 'Marketplace_InstallPurchasedPlugins'|translate }}
|
||||
</a>
|
||||
{% include '@Marketplace/paid-plugins-install-list.twig' %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
<div piwik-activity-indicator loading="licenseController.isUpdating"></div>
|
||||
{% endif %}
|
||||
|
||||
{% else %}
|
||||
{% if isSuperUser %}
|
||||
{{ 'Marketplace_PaidPluginsNoLicenseKeyIntro'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/recommends/premium-plugins/'>", "</a>")|raw }}
|
||||
|
||||
<br/>
|
||||
|
||||
<div class="licenseToolbar valign-wrapper">
|
||||
{{ defaultLicenseKeyFields|raw }}
|
||||
</div>
|
||||
|
||||
<div piwik-activity-indicator loading="licenseController.isUpdating"></div>
|
||||
|
||||
{% else %}
|
||||
{{ 'Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess'|translate("<a target='_blank' rel='noreferrer noopener' href='https://matomo.org/recommends/premium-plugins/'>", "</a>")|raw }}
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="ui-confirm" id="confirmRemoveLicense">
|
||||
<h2>{{ 'Marketplace_ConfirmRemoveLicense'|translate }}</h2>
|
||||
<input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
|
||||
<input role="no" type="button" value="{{ 'General_No'|translate }}"/>
|
||||
</div>
|
@ -0,0 +1,25 @@
|
||||
|
||||
{% macro pluginDeveloper(owner) %}
|
||||
{% if 'piwik' == owner or 'matomo-org' == owner %}<img title="Matomo" alt="Matomo" style="padding-bottom:2px;height:12px;" src="plugins/Morpheus/images/logo-dark.svg"/>{% else %}{{ owner }}{% endif %}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro featuredIcon(align='') %}
|
||||
<img class="featuredIcon"
|
||||
title="{{ 'Marketplace_FeaturedPlugin'|translate }}"
|
||||
src="plugins/Marketplace/images/rating_important.png"
|
||||
align="{{ align }}" />
|
||||
{% endmacro %}
|
||||
|
||||
{% macro missingRequirementsPleaseUpdateNotice(plugin) %}
|
||||
{% if plugin.missingRequirements and 0 < plugin.missingRequirements|length %}
|
||||
{% for req in plugin.missingRequirements -%}
|
||||
<div class="alert alert-danger">
|
||||
{% set requirement = req.requirement|capitalize %}
|
||||
{% if 'Php' == requirement %}
|
||||
{% set requirement = 'PHP' %}
|
||||
{% endif %}
|
||||
{{ 'CorePluginsAdmin_MissingRequirementsNotice'|translate(requirement, req.actualVersion, req.requiredVersion) }}
|
||||
</div>
|
||||
{%- endfor %}
|
||||
{% endif %}
|
||||
{% endmacro %}
|
@ -0,0 +1,85 @@
|
||||
{% extends "admin.twig" %}
|
||||
{% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
|
||||
|
||||
{% set title %}{{ 'Marketplace_Marketplace'|translate }}{% endset %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="marketplace" piwik-marketplace>
|
||||
|
||||
<div piwik-content-intro>
|
||||
<h2 piwik-enriched-headline feature-name="{{ 'CorePluginsAdmin_Marketplace'|translate }}"
|
||||
>{{ title|e('html_attr') }}</h2>
|
||||
<p>
|
||||
{% if not isSuperUser %}
|
||||
{% if showThemes %}
|
||||
{{ 'Marketplace_NotAllowedToBrowseMarketplaceThemes'|translate }}
|
||||
{% else %}
|
||||
{{ 'Marketplace_NotAllowedToBrowseMarketplacePlugins'|translate }}
|
||||
{% endif %}
|
||||
{% elseif showThemes %}
|
||||
{{ 'CorePluginsAdmin_ThemesDescription'|translate }}
|
||||
{{ 'Marketplace_InstallingNewPluginViaMarketplaceOrUpload'|translate(('CorePluginsAdmin_Themes'|translate), '<a href="#" class="uploadPlugin">', ('CorePluginsAdmin_Theme'|translate), '</a>')|raw }}
|
||||
{% else %}
|
||||
{{ 'CorePluginsAdmin_PluginsExtendPiwik'|translate }}
|
||||
{{ 'Marketplace_InstallingNewPluginViaMarketplaceOrUpload'|translate(('General_Plugins'|translate), '<a href="#" class="uploadPlugin">', ('General_Plugin'|translate), '</a>')|raw }}
|
||||
{% endif %}
|
||||
</p>
|
||||
|
||||
{% include '@Marketplace/licenseform.twig' %}
|
||||
|
||||
{% include '@Marketplace/uploadPluginDialog.twig' %}
|
||||
|
||||
<div class="row marketplaceActions" ng-controller="PiwikMarketplaceController as marketplace">
|
||||
<div piwik-field uicontrol="select" name="plugin_type"
|
||||
class="col s12 m6 l4"
|
||||
ng-model="marketplace.pluginType"
|
||||
ng-change="marketplace.changePluginType()"
|
||||
title="{{ 'Show'|translate|e('html_attr') }}"
|
||||
value="{{ pluginType }}"
|
||||
full-width="true"
|
||||
options="{{ pluginTypeOptions|json_encode }}">
|
||||
</div>
|
||||
|
||||
<div piwik-field uicontrol="select" name="plugin_sort"
|
||||
title="{{ 'Sort'|translate|e('html_attr') }}"
|
||||
value="{{ sort }}"
|
||||
ng-model="marketplace.pluginSort"
|
||||
ng-change="marketplace.changePluginSort()"
|
||||
class="col s12 m6 l4"
|
||||
full-width="true"
|
||||
options="{{ pluginSortOptions|json_encode }}">
|
||||
</div>
|
||||
|
||||
{# Hide filters and search for themes because we don't have many of them #}
|
||||
{% if (pluginsToShow|length) > 20 or query %}
|
||||
<div class="col s12 m12 l4 ">
|
||||
<form action="{{ linkTo({'sort': ''}) }}" method="post" class="plugin-search">
|
||||
<div piwik-field uicontrol="text" name="query"
|
||||
title="{{ 'General_Search'|translate }} {{ numAvailablePlugins }} {{ 'General_Plugins'|translate|lcfirst }}..."
|
||||
value="{{ query }}"
|
||||
full-width="true">
|
||||
</div>
|
||||
<span class="icon-search" onclick="$('form.plugin-search').submit();"></span>
|
||||
</form>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include '@Marketplace/plugin-list.twig' %}
|
||||
|
||||
<div class="footer-message center">
|
||||
{{ 'Marketplace_DevelopersLearnHowToDevelopPlugins'|translate('<a target="_blank" rel="noreferrer noopener" href="https://developer.matomo.org/develop">', '</a>')|raw }}
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<a rel="noreferrer noopener" href="https://shop.matomo.org/faq/" target="_blank">FAQ</a> |
|
||||
<a rel="noreferrer noopener" href="https://shop.matomo.org/terms-conditions/" target="_blank">Terms</a> |
|
||||
<a rel="noreferrer noopener" href="https://matomo.org/privacy-policy/" target="_blank">Privacy</a> |
|
||||
<a rel="noreferrer noopener" href="https://matomo.org/contact/" target="_blank">Contact</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -0,0 +1,18 @@
|
||||
<div class="ui-confirm" id="installAllPaidPluginsAtOnce">
|
||||
<h2>{{ 'Marketplace_InstallAllPurchasedPlugins'|translate }}</h2>
|
||||
<p>
|
||||
{{ 'Marketplace_InstallThesePlugins'|translate }}
|
||||
<br /><br />
|
||||
</p>
|
||||
<ul>
|
||||
{% for pluginName in paidPluginsToInstallAtOnce %}
|
||||
<li>{{ pluginName }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
<input role="install" type="button" data-href="{{ linkTo({'action': 'installAllPaidPlugins', 'nonce': installNonce}) }}"
|
||||
value="{{ 'Marketplace_InstallAllPurchasedPluginsAction'|translate(paidPluginsToInstallAtOnce|length) }}">
|
||||
<input role="cancel" type="button" value="{{ 'General_Cancel'|translate }}"/>
|
||||
</p>
|
||||
</div>
|
@ -0,0 +1,331 @@
|
||||
{% import '@Marketplace/macros.twig' as marketplaceMacro %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="pluginDetails">
|
||||
{% if errorMessage %}
|
||||
{{ errorMessage }}
|
||||
{% elseif plugin %}
|
||||
|
||||
{% set isBundle = plugin.isBundle is defined and plugin.isBundle %}
|
||||
|
||||
{% if plugin.versions is not empty and plugin.versions[plugin.versions|length - 1] %}
|
||||
{% set latestVersion = plugin.versions[plugin.versions|length - 1] %}
|
||||
{% else %}
|
||||
{% set latestVersion = '' %}
|
||||
{% endif %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col s12 m9">
|
||||
<h2>{{ plugin.displayName }}</h2>
|
||||
<p class="description">
|
||||
{% if plugin.featured %}
|
||||
{{ marketplaceMacro.featuredIcon('left') }}
|
||||
{% endif %}
|
||||
{{ plugin.description }}
|
||||
</p>
|
||||
<div class="contentDetails">
|
||||
<div id="pluginDetailsTabs" class="row">
|
||||
<div class="col s12">
|
||||
<ul class="tabs">
|
||||
<li class="tab col s3"><a href="#tabs-description">{{ 'General_Description'|translate }}</a></li>
|
||||
|
||||
{% if latestVersion.readmeHtml.faq %}
|
||||
<li class="tab col s3"><a href="#tabs-faq">{{ 'General_Faq'|translate }}</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if latestVersion.readmeHtml.documentation %}
|
||||
<li class="tab col s3"><a href="#tabs-documentation">{{ 'General_Documentation'|translate }}</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if plugin.screenshots|length %}
|
||||
<li class="tab col s3"><a href="#tabs-screenshots">{{ 'Marketplace_Screenshots'|translate }}</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
|
||||
<li class="tab col s3"><a href="#tabs-reviews">{{ 'Marketplace_Reviews'|translate }}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="tabs-description" class="tab-content col s12">
|
||||
{% if isSuperUser and (plugin.isDownloadable or plugin.isInstalled) %}
|
||||
{{ marketplaceMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
|
||||
|
||||
{% if isMultiServerEnvironment %}
|
||||
<div class="alert alert-warning">{{ 'Marketplace_MultiServerEnvironmentWarning'|translate }}</div>
|
||||
{% elseif not isAutoUpdateEnabled %}
|
||||
<div class="alert alert-warning">{{ 'Marketplace_AutoUpdateDisabledWarning'|translate("'[General]enable_auto_update=1'", "'config/config.ini.php'") }}</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if hasSomeAdminAccess and plugin.isMissingLicense is defined and plugin.isMissingLicense %}
|
||||
<div class="alert alert-danger">{{ 'Marketplace_PluginLicenseMissingDescription'|translate }}</div>
|
||||
{% elseif hasSomeAdminAccess and plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
|
||||
<div class="alert alert-warning">{{ 'Marketplace_PluginLicenseExceededDescription'|translate }}</div>
|
||||
{% endif %}
|
||||
|
||||
{{ latestVersion.readmeHtml.description|raw }}
|
||||
</div>
|
||||
|
||||
{% if latestVersion.readmeHtml.faq %}
|
||||
<div id="tabs-faq" class="tab-content col s12">
|
||||
{{ latestVersion.readmeHtml.faq|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if latestVersion.readmeHtml.documentation %}
|
||||
<div id="tabs-documentation" class="tab-content col s12">
|
||||
{{ latestVersion.readmeHtml.documentation|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if plugin.screenshots|length %}
|
||||
<div id="tabs-screenshots" class="tab-content col s12">
|
||||
<div class="thumbnails">
|
||||
{% for screenshot in plugin.screenshots %}
|
||||
<div class="thumbnail">
|
||||
<a href="{{ screenshot }}" target="_blank"><img src="{{ screenshot }}?w=400" width="400" alt=""></a>
|
||||
<p>
|
||||
{{ screenshot|split('/')|last|replace({'_': ' ', '.png': '', '.jpg': '', '.jpeg': ''}) }}
|
||||
</p>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
|
||||
<div id="tabs-reviews" class="tab-content col s12">
|
||||
<iframe class="reviewIframe"
|
||||
style="{% if plugin.shop.reviews.height %}height:{{ plugin.shop.reviews.height }}px;{% endif %}"
|
||||
id="{{ plugin.shop.reviews.embedUrl|md5 }}"
|
||||
src="{{ plugin.shop.reviews.embedUrl|raw }}"></iframe>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 m3">
|
||||
<div class="metadata">
|
||||
<div class="actionButton">
|
||||
{% if not plugin.isDownloadable or not isSuperUser %}
|
||||
{% if hasSomeAdminAccess and plugin.hasExceededLicense is defined and plugin.hasExceededLicense and plugin.consumer %}
|
||||
{% if plugin.consumer.loginUrl is defined and plugin.consumer.loginUrl %}
|
||||
<a class="install update"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="{{ plugin.consumer.loginUrl|default('')|e('html_attr') }}"
|
||||
>{{ 'Marketplace_UpgradeSubscription'|translate }}</a>
|
||||
{% endif %}
|
||||
|
||||
{% elseif not plugin.isDownloadable and plugin.isPaid and plugin.shop is defined and plugin.shop %}
|
||||
|
||||
{% if plugin.shop.variations|length %}
|
||||
|
||||
<div class="input-field variationPicker">
|
||||
<select title="{{ 'Marketplace_ShownPriceIsExclTax'|translate|e('html_attr') }} {{ 'Marketplace_CurrentNumPiwikUsers'|translate(numUsers)|e('html_attr') }}">
|
||||
{% for variation in plugin.shop.variations %}
|
||||
<option value="{{ variation.addToCartUrl }}"
|
||||
title="{{ 'Marketplace_PriceExclTax'|translate(variation.price, variation.currency)|e('html_attr') }} {{ 'Marketplace_CurrentNumPiwikUsers'|translate(numUsers)|e('html_attr') }}"
|
||||
{% if variation.recommended is defined and variation.recommended %}selected{% endif %}
|
||||
>{{ variation.name }} - {{ variation.prettyPrice }} / {{ variation.period }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<a class="install update addToCartLink" target="_blank"
|
||||
title="{{ 'Marketplace_ClickToCompletePurchase'|translate|e('html_attr') }}"
|
||||
rel="noreferrer noopener"
|
||||
href="{{ plugin.shop.url|default('')|e('html_attr') }}"
|
||||
>{{ 'Marketplace_AddToCart'|translate }}</a>
|
||||
{% else %}
|
||||
<a class="install update" target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="{% if plugin.shop is defined and plugin.shop and plugin.shop.url %}{{ plugin.shop.url|e('html_attr') }}{% else %}{{ plugin.homepage|e('html_attr') }}{% endif %}"
|
||||
>{{ 'General_MoreDetails'|translate }}</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% elseif isSuperUser %}
|
||||
{% if not isAutoUpdatePossible %}
|
||||
<a onclick="$(this).css('display', 'none')" href="{{ linkTo({'action': 'download', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}"
|
||||
class="download">{{ 'General_Download'|translate }}</a>
|
||||
{% elseif plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
|
||||
<a class="install update"
|
||||
href="{{ linkTo({'module': 'Marketplace', 'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}"
|
||||
>{{ 'CoreUpdater_UpdateTitle'|translate }}</a>
|
||||
{% elseif plugin.isInstalled %}
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
{% elseif 0 < plugin.missingRequirements|length %}
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
{% else %}
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
|
||||
class="install">{{ 'Marketplace_ActionInstall'|translate }}</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if plugin.specialOffer is defined and plugin.specialOffer %}<p style="color: green;"><br />{{ plugin.specialOffer }}</p>{% endif %}
|
||||
|
||||
<p><br /></p>
|
||||
<dl>
|
||||
{% if not isBundle %}
|
||||
<dt>{{ 'CorePluginsAdmin_Version'|translate }}</dt>
|
||||
<dd>{{ plugin.latestVersion }}</dd>
|
||||
{% endif %}
|
||||
|
||||
<dt>{{ 'Marketplace_PluginKeywords'|translate }}</dt>
|
||||
<dd>{{ plugin.keywords|join(', ') }}</dd>
|
||||
|
||||
{% if plugin.lastUpdated and not isBundle %}
|
||||
<dt>{{ 'Marketplace_LastUpdated'|translate }}</dt>
|
||||
<dd>{{ plugin.lastUpdated }}</dd>
|
||||
{% endif %}
|
||||
{% if plugin.numDownloads %}
|
||||
<dt>{{ 'General_Downloads'|translate }}</dt>
|
||||
<dd title="{{ 'Marketplace_NumDownloadsLatestVersion'|translate(latestVersion.numDownloads|number_format) }}">{{ plugin.numDownloads }}</dd>
|
||||
{% endif %}
|
||||
|
||||
{% if not isBundle %}
|
||||
<dt>{{ 'Marketplace_Developer'|translate }}</dt>
|
||||
<dd>{{ marketplaceMacro.pluginDeveloper(plugin.owner) }}</dd>
|
||||
{% if latestVersion and latestVersion.license is defined and latestVersion.license and latestVersion.license.name is defined and latestVersion.license.name %}
|
||||
<dt>{{ 'Marketplace_License'|translate }}</dt>
|
||||
<dd>
|
||||
{% if latestVersion.license.url is defined and latestVersion.license.url %}
|
||||
<a rel="noreferrer noopener"
|
||||
href="{{ latestVersion.license.url }}"
|
||||
target="_blank">{{ latestVersion.license.name }}</a>
|
||||
{% else %}
|
||||
{{ latestVersion.license.name }}
|
||||
{% endif %}
|
||||
</dd>
|
||||
{% endif %}
|
||||
<dt>{{ 'Marketplace_Authors'|translate }}</dt>
|
||||
<dd>{% for author in plugin.authors if author.name %}
|
||||
|
||||
{% spaceless %}
|
||||
{% if author.homepage %}
|
||||
<a target="_blank" rel="noreferrer noopener" href="{{ author.homepage }}">{{ author.name }}</a>
|
||||
{% elseif author.email %}
|
||||
<a href="mailto:{{ author.email|escape('url') }}">{{ author.name }}</a>
|
||||
{% else %}
|
||||
{{ author.name }}
|
||||
{% endif %}
|
||||
|
||||
{% if loop.index < plugin.authors|length %}
|
||||
,
|
||||
{% endif %}
|
||||
{% endspaceless %}
|
||||
|
||||
{% endfor %}
|
||||
</dd>
|
||||
{% endif %}
|
||||
<dt>{{ 'CorePluginsAdmin_Websites'|translate }}</dt>
|
||||
<dd>
|
||||
{% if plugin.homepage %}
|
||||
<a target="_blank" rel="noreferrer noopener" href="{{ plugin.homepage }}">{{ 'Marketplace_PluginWebsite'|translate }}</a>
|
||||
{%- endif -%}
|
||||
|
||||
{%- if plugin.changelog is defined and plugin.changelog and plugin.changelog.url is defined and plugin.changelog.url -%}
|
||||
{%- if plugin.homepage %}, {% endif %}
|
||||
<a target="_blank" rel="noreferrer noopener" href="{{ plugin.changelog.url }}">{{ 'CorePluginsAdmin_Changelog'|translate }}</a>
|
||||
{%- endif -%}
|
||||
|
||||
{%- if plugin.repositoryUrl %}, <a target="_blank" href="{{ plugin.repositoryUrl }}">GitHub</a>{% endif %}
|
||||
</dd>
|
||||
|
||||
{% if plugin.activity and plugin.activity.numCommits %}
|
||||
<dt>{{ 'CorePluginsAdmin_Activity'|translate }}</dt>
|
||||
<dd>
|
||||
{{ plugin.activity.numCommits }} commits
|
||||
|
||||
{% if plugin.activity.numContributors > 1 %}
|
||||
{{ 'Marketplace_ByXDevelopers'|translate(plugin.activity.numContributors) }}
|
||||
{% endif %}
|
||||
{% if plugin.activity.lastCommitDate %}
|
||||
{{ 'Marketplace_LastCommitTime'|translate(plugin.activity.lastCommitDate) }}
|
||||
{% endif %}</dd>
|
||||
{% endif %}
|
||||
</dl>
|
||||
|
||||
{% if plugin.support is not empty %}
|
||||
{% for entry in plugin.support %}
|
||||
{% if entry.name and entry.value %}
|
||||
<dt>{{ entry.name }}</dt>
|
||||
<dd>{{ entry.value }}</dd>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
|
||||
var active = 0;
|
||||
{% if activeTab %}
|
||||
var $activeTab = $('#tabs-{{ activeTab|e('js') }}');
|
||||
if ($activeTab) {
|
||||
active = $activeTab.index() - 1;
|
||||
}
|
||||
{% endif %}
|
||||
|
||||
$('#pluginDetailsTabs .tabs').tabs();
|
||||
$('#pluginDetailsTabs .tabs').tabs('select_tab', active >= 0 ? active : 0);
|
||||
|
||||
$('.pluginDetails a').each(function (index, a) {
|
||||
var link = $(a).attr('href');
|
||||
|
||||
if (link && 0 === link.indexOf('http')) {
|
||||
$(a).attr('target', '_blank');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% if plugin.shop is defined and plugin.shop and plugin.shop.reviews and plugin.shop.reviews.embedUrl is defined and plugin.shop.reviews.embedUrl %}
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
var $iFrames = $('.pluginDetails iframe.reviewIframe');
|
||||
for (var i = 0; i < $iFrames.length; i++) {
|
||||
iFrameResize({checkOrigin: ['{{ plugin.shop.reviews.embedUrl|domainOnly }}']}, $iFrames[i]);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
var $variationPicker = $('.pluginDetails .variationPicker select');
|
||||
if ($variationPicker.val()) {
|
||||
$('.addToCartLink').attr('href', $variationPicker.val());
|
||||
}
|
||||
$variationPicker.on('change', function () {
|
||||
$('.addToCartLink').attr('href', $variationPicker.val())
|
||||
});
|
||||
|
||||
if ($variationPicker.length) {
|
||||
$variationPicker.material_select();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock %}
|
@ -0,0 +1,166 @@
|
||||
{% import '@Marketplace/macros.twig' as marketplaceMacro %}
|
||||
|
||||
{% if pluginsToShow|length > 0 %}
|
||||
<div class="pluginListContainer row">
|
||||
{% for plugin in pluginsToShow %}
|
||||
<div class="col s12 m6 l4">
|
||||
{% embed 'contentBlock.twig' with {'title': ''} %}
|
||||
{% block content %}
|
||||
<div class="plugin">
|
||||
<h3 class="card-title" title="{{ 'General_MoreDetails'|translate }}">
|
||||
<a href="#" piwik-plugin-name="{{ plugin.name }}">{{ plugin.displayName }}</a>
|
||||
</h3>
|
||||
|
||||
<p class="description">
|
||||
{{ plugin.description }}
|
||||
<a class="more" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
|
||||
› {{ 'General_MoreLowerCase'|translate }}</a>
|
||||
</p>
|
||||
|
||||
{% if showThemes %}
|
||||
{# Screenshot for themes #}
|
||||
<a class="more" href="#" piwik-plugin-name="{{ plugin.name }}">
|
||||
<img title="{{ 'General_MoreDetails'|translate }}"
|
||||
class="preview" src="{{ plugin.screenshots|first }}?w=250&h=150"/></a>
|
||||
{% endif %}
|
||||
|
||||
<ul class="metadata">
|
||||
{% if plugin.isBundle is not defined or not plugin.isBundle %}
|
||||
<li>
|
||||
{% if plugin.latestVersion %}
|
||||
{{ 'CorePluginsAdmin_Version'|translate }}: {{ plugin.latestVersion }}
|
||||
{% endif %}
|
||||
|
||||
{% if plugin.canBeUpdated %}
|
||||
<a class="update-available"
|
||||
{% if plugin.changelog is defined and plugin.changelog and plugin.changelog.url is defined and plugin.changelog.url %}
|
||||
target="_blank" href="{{ plugin.changelog.url|e('html_attr') }}"
|
||||
{% else %}
|
||||
href="#" piwik-plugin-name="{{ plugin.name }}"
|
||||
{% endif %}
|
||||
title="{{ 'Marketplace_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}">
|
||||
{{ 'Marketplace_NewVersion'|translate }}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% if plugin.lastUpdated %}
|
||||
<li>{{ 'Marketplace_Updated'|translate }}: {{ plugin.lastUpdated }}</li>
|
||||
{% endif %}
|
||||
{% if plugin.numDownloads %}
|
||||
<li>{{ 'General_Downloads'|translate }}: {{ plugin.numDownloads }}</li>
|
||||
{% endif %}
|
||||
<li>{{ 'Marketplace_Developer'|translate }}: {{ marketplaceMacro.pluginDeveloper(plugin.owner) }}</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
||||
{% macro moreDetailsLink(plugin) %}
|
||||
{% set canBePurchased = not plugin.isDownloadable and plugin.shop is defined and plugin.shop and plugin.shop.url %}
|
||||
<a class="btn btn-block plugin-details {% if canBePurchased %}purchaseable{% endif %}" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
|
||||
|
||||
{% if canBePurchased and plugin.shop.variations %}
|
||||
{% set foundCheapest = 0 %}
|
||||
{% for variation in plugin.shop.variations %}
|
||||
{% if not foundCheapest and variation.cheapest is defined and variation.cheapest %}
|
||||
{% set foundCheapest = 1 %}
|
||||
{{ 'Marketplace_PriceFromPerPeriod'|translate(variation.prettyPrice, variation.period) }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if not foundCheapest %}
|
||||
{{ 'Marketplace_PriceFromPerPeriod'|translate(plugin.shop.variations.0.prettyPrice, plugin.shop.variations.0.period) }}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{{ 'General_MoreDetails'|translate }}
|
||||
{% endif %}
|
||||
|
||||
</a>
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% if isSuperUser %}
|
||||
<div class="footer">
|
||||
{% if plugin.isMissingLicense is defined and plugin.isMissingLicense %}
|
||||
|
||||
<div class="alert alert-danger" >
|
||||
{{ 'Marketplace_LicenseMissing'|translate }}
|
||||
|
||||
<span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
|
||||
</div>
|
||||
|
||||
{% elseif plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
|
||||
|
||||
<div class="alert alert-danger">
|
||||
{{ 'Marketplace_LicenseExceeded'|translate }}
|
||||
|
||||
<span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
|
||||
</div>
|
||||
|
||||
{% elseif plugin.canBeUpdated and 0 == plugin.missingRequirements|length and isAutoUpdatePossible %}
|
||||
<a class="btn btn-block"
|
||||
href="{{ linkTo({'module': 'Marketplace', 'action':'updatePlugin', 'pluginName': plugin.name, 'nonce': updateNonce}) }}">
|
||||
{{ 'CoreUpdater_UpdateTitle'|translate }}
|
||||
</a>
|
||||
{% elseif plugin.missingRequirements|length > 0 or not isAutoUpdatePossible %}
|
||||
|
||||
{% macro downloadButton(showOr, plugin, isAutoUpdatePossible, showBrackets = false) -%}
|
||||
{%- if plugin.missingRequirements|length == 0 and plugin.isDownloadable and not isAutoUpdatePossible -%}
|
||||
{% if showBrackets %}({% endif %}<span onclick="$(this).css('display', 'none')">
|
||||
{%- if showOr %} {{ 'General_Or'|translate }} {% endif -%}
|
||||
<a class="plugin-details download"
|
||||
href="{{ linkTo({'module': 'Marketplace', 'action': 'download', 'pluginName': plugin.name, 'nonce': (plugin.name|nonce)}) }}"
|
||||
>{{ 'General_Download'|translate }}</a></span>{% if showBrackets %}){% endif %}
|
||||
{%- endif -%}
|
||||
{%- endmacro %}
|
||||
|
||||
{% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
|
||||
{{ 'Marketplace_CannotUpdate'|translate }}
|
||||
<span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
|
||||
{% elseif plugin.isInstalled %}
|
||||
{{ 'General_Installed'|translate }}
|
||||
{{ _self.downloadButton(false, plugin, isAutoUpdatePossible, true)|raw }}
|
||||
{% elseif not plugin.isDownloadable %}
|
||||
{{ _self.moreDetailsLink(plugin)|raw }}
|
||||
{% else %}
|
||||
{{ 'Marketplace_CannotInstall'|translate }}
|
||||
|
||||
<span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
|
||||
{% endif %}
|
||||
|
||||
{% elseif plugin.isInstalled %}
|
||||
{{ 'General_Installed'|translate }}
|
||||
|
||||
{% if not plugin.isInvalid and not isMultiServerEnvironment and isPluginsAdminEnabled %}
|
||||
({{ pluginsMacro.pluginActivateDeactivateAction(plugin.name, plugin.isActivated, plugin.missingRequirements, deactivateNonce, activateNonce) }})
|
||||
{% endif %}
|
||||
|
||||
{% elseif plugin.isPaid and not plugin.isDownloadable %}
|
||||
{{ _self.moreDetailsLink(plugin)|raw }}
|
||||
{% else %}
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'installPlugin', 'pluginName': plugin.name, 'nonce': installNonce}) }}"
|
||||
class="btn">
|
||||
{{ 'Marketplace_ActionInstall'|translate }}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="footer">
|
||||
{{ _self.moreDetailsLink(plugin)|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endembed %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if pluginsToShow|length == 0 %}
|
||||
<div piwik-content-block>
|
||||
{% if showThemes %}
|
||||
{{ 'Marketplace_NoThemesFound'|translate }}
|
||||
{% else %}
|
||||
{{ 'Marketplace_NoPluginsFound'|translate }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -0,0 +1,101 @@
|
||||
{% extends mode is defined and mode == 'user' ? "user.twig" : "admin.twig" %}
|
||||
{% import '@Marketplace/macros.twig' as marketplaceMacro %}
|
||||
|
||||
{% set title %}{{ 'Marketplace_Marketplace'|translate }}{% endset %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div piwik-content-block
|
||||
content-title="{{ 'Marketplace_OverviewPluginSubscriptions'|translate|e('html_attr') }}"
|
||||
class="subscriptionOverview">
|
||||
|
||||
{% if hasLicenseKey %}
|
||||
<p>
|
||||
{{ 'Marketplace_PluginSubscriptionsList'|translate }}
|
||||
{% if loginUrl %}
|
||||
<a target="_blank" rel="noreferrer noopener" href="{{ loginUrl }}">{{ 'Marketplace_OverviewPluginSubscriptionsAllDetails'|translate }}</a>
|
||||
{% endif %}
|
||||
<br/>
|
||||
{{ 'Marketplace_OverviewPluginSubscriptionsMissingInfo'|translate }}
|
||||
<br />
|
||||
|
||||
{{ 'Marketplace_NoValidSubscriptionNoUpdates'|translate }}
|
||||
{{ 'Marketplace_CurrentNumPiwikUsers'|translate('<strong>' ~ numUsers ~ '</strong>')|raw }}
|
||||
</p>
|
||||
|
||||
<br />
|
||||
|
||||
<table piwik-content-table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'General_Name'|translate }}</th>
|
||||
<th>{{ 'Marketplace_SubscriptionType'|translate }}</th>
|
||||
<th>{{ 'CorePluginsAdmin_Status'|translate }}</th>
|
||||
<th>{{ 'Marketplace_SubscriptionStartDate'|translate }}</th>
|
||||
<th>{{ 'Marketplace_SubscriptionEndDate'|translate }}</th>
|
||||
<th>{{ 'Marketplace_SubscriptionNextPaymentDate'|translate }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if subscriptions|length %}
|
||||
{% for subscription in subscriptions %}
|
||||
<tr>
|
||||
<td class="subscriptionName">
|
||||
{% if subscription.plugin.htmlUrl %}
|
||||
<a href="{{ subscription.plugin.htmlUrl }}" rel="noreferrer noopener" target="_blank">
|
||||
{% endif %}
|
||||
|
||||
{{ subscription.plugin.displayName }}
|
||||
|
||||
{% if subscription.plugin.htmlUrl %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="subscriptionType">{{ subscription.productType }}</td>
|
||||
<td class="subscriptionStatus"
|
||||
title="{% if not subscription.isValid %}{{ 'Marketplace_SubscriptionInvalid'|translate|e('html_attr') }}{% elseif subscription.isExpiredSoon %}{{ 'Marketplace_SubscriptionExpiresSoon'|translate|e('html_attr') }}{% endif %}">
|
||||
{% if not subscription.isValid %}
|
||||
<span class="icon-error"></span>
|
||||
{% elseif subscription.isExpiredSoon %}
|
||||
<span class="icon-warning"></span>
|
||||
{% else %}
|
||||
<span class="icon-ok"></span>
|
||||
{% endif %}
|
||||
|
||||
{{ subscription.status }}
|
||||
|
||||
{% if subscription.isExceeded is defined and subscription.isExceeded %}
|
||||
<span class="errorMessage" title="{{ 'Marketplace_LicenseExceededPossibleCause'|translate }}"><span class="icon-error"></span> {{ 'Marketplace_Exceeded'|translate }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ subscription.start }}</td>
|
||||
<td>{% if subscription.isValid and subscription.nextPayment %}
|
||||
{{ 'Marketplace_LicenseRenewsNextPaymentDate'|translate }}
|
||||
{% else %}
|
||||
{{ subscription.end }}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ subscription.nextPayment }}</td>
|
||||
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr><td colspan="6">{{ 'Marketplace_NoSubscriptionsFound'|translate }}</td></tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="tableActionBar">
|
||||
<a href="{{ linkTo({'module':"Marketplace", 'action':"overview"}) }}"
|
||||
class="">
|
||||
<span class="icon-table"></span>
|
||||
{{ 'Marketplace_BrowseMarketplace'|translate }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
{% else %}
|
||||
<p>{{ 'Marketplace_OverviewPluginSubscriptionsMissingLicense'|translate('<a href="'~ linkTo({'module':"Marketplace", 'action':"overview"}) ~'">', '</a>')|raw }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -0,0 +1,44 @@
|
||||
{% extends 'admin.twig' %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div style="max-width:980px;">
|
||||
|
||||
{% for plugin in plugins %}
|
||||
<h2>{{ 'Marketplace_UpdatingPlugin'|translate(plugin.name) }}</h2>
|
||||
|
||||
<div>
|
||||
|
||||
{% if plugin.isTheme %}
|
||||
|
||||
<p>{{ 'Marketplace_StepDownloadingThemeFromMarketplace'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepUnzippingTheme'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepReplaceExistingTheme'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepThemeSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
|
||||
|
||||
{% else %}
|
||||
|
||||
<p>{{ 'Marketplace_StepDownloadingPluginFromMarketplace'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepUnzippingPlugin'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepReplaceExistingPlugin'|translate }}</p>
|
||||
|
||||
<p>{{ 'Marketplace_StepPluginSuccessfullyUpdated'|translate(plugin.name, plugin.latestVersion) }}</p>
|
||||
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div>
|
||||
<p><a href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'plugins'}) }}">{{ 'General_Plugins'|translate }}</a>
|
||||
|
|
||||
<a href="{{ linkTo({'module': 'CorePluginsAdmin', 'action': 'themes'}) }}">{{ 'CorePluginsAdmin_Themes'|translate }}</a>
|
||||
|
|
||||
<a href="{{ linkTo({'module': 'Marketplace', 'action': 'overview'}) }}">{{ 'Marketplace_Marketplace'|translate }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
@ -0,0 +1,19 @@
|
||||
<div class="ui-confirm" id="installPluginByUpload" piwik-plugin-upload>
|
||||
<h2>{{ 'Marketplace_TeaserExtendPiwikByUpload'|translate }}</h2>
|
||||
|
||||
{% if isPluginUploadEnabled %}
|
||||
<p class="description"> {{ 'Marketplace_AllowedUploadFormats'|translate }} </p>
|
||||
|
||||
<form enctype="multipart/form-data" method="post" id="uploadPluginForm"
|
||||
action="{{ linkTo({'module':'CorePluginsAdmin', 'action':'uploadPlugin', 'nonce': installNonce}) }}">
|
||||
<input type="file" name="pluginZip">
|
||||
<br />
|
||||
<input class="startUpload btn" type="submit" value="{{ 'Marketplace_UploadZipFile'|translate }}">
|
||||
</form>
|
||||
{% else %}
|
||||
<p class="description"> {{ 'Marketplace_PluginUploadDisabled'|translate|raw }} </p>
|
||||
<pre>[General]
|
||||
enable_plugin_upload = 1</pre>
|
||||
<input role="yes" type="button" value="{{ 'General_Ok'|translate }}"/>
|
||||
{% endif %}
|
||||
</div>
|
Reference in New Issue
Block a user