Improve the messaging for paid updates
authorAlexander Ebert <ebert@woltlab.com>
Fri, 3 Nov 2023 17:21:14 +0000 (18:21 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Fri, 3 Nov 2023 17:21:14 +0000 (18:21 +0100)
wcfsetup/install/files/acp/templates/packageUpdateUnauthorizedPaidUpgrade.tpl [new file with mode: 0644]
wcfsetup/install/files/lib/system/package/PackageUpdateUnauthorizedException.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

diff --git a/wcfsetup/install/files/acp/templates/packageUpdateUnauthorizedPaidUpgrade.tpl b/wcfsetup/install/files/acp/templates/packageUpdateUnauthorizedPaidUpgrade.tpl
new file mode 100644 (file)
index 0000000..e8ba347
--- /dev/null
@@ -0,0 +1,9 @@
+<section class="section">
+       <h2 class="sectionTitle">{lang}wcf.acp.package.update.paidUpgrade{/lang}</h2>
+
+       <p>{lang packageName=$packageName}wcf.acp.package.update.paidUpgrade.description{/lang}</p>
+</section>
+<div class="formSubmit">
+       <a href="https://pluginstore.woltlab.com/file/{$pluginStoreFileID}" target="_blank" class="button buttonPrimary">{lang}wcf.acp.package.update.purchaseRequired.button.purchase{/lang}</a>
+       <button style="display: none">{* dummy button for compatibility with the JS module *}</button>
+</div>
\ No newline at end of file
index 0ee416b283d444137929c3691ce90dbe730d4469..83029800c18e7159df05d1e58e090870dd9a9417 100644 (file)
@@ -61,6 +61,20 @@ class PackageUpdateUnauthorizedException extends UserException
     {
         $serverReply = $this->request->getReply();
 
+        $requiresPaidUpgrade = false;
+        if ($this->updateServer->isWoltLabStoreServer() && !empty($this->packageUpdateVersion['pluginStoreFileID'])) {
+            $requiresPaidUpgrade = ($serverReply['httpHeaders']['wcf-update-server-requires-paid-upgrade'][0] ?? '') === 'true';
+        }
+
+        if ($requiresPaidUpgrade) {
+            WCF::getTPL()->assign([
+                'packageName' => $this->packageUpdateVersion['packageName'],
+                'pluginStoreFileID' => $this->packageUpdateVersion['pluginStoreFileID'],
+            ]);
+
+            return WCF::getTPL()->fetch('packageUpdateUnauthorizedPaidUpgrade');
+        }
+
         $authInsufficient = (($serverReply['httpHeaders']['wcf-update-server-auth'][0] ?? '') === 'unauthorized');
         if (ENABLE_ENTERPRISE_MODE && $authInsufficient && !empty($this->packageUpdateVersion['pluginStoreFileID'])) {
             WCF::getTPL()->assign([
@@ -78,6 +92,7 @@ class PackageUpdateUnauthorizedException extends UserException
             'updateServer' => $this->updateServer,
             'serverAuthData' => $this->updateServer->getAuthData(),
             'serverReply' => $serverReply,
+            'requiresPaidUpgrade' => $requiresPaidUpgrade,
         ]);
 
         return WCF::getTPL()->fetch('packageUpdateUnauthorized');
index 9bb99d8a42f88faf928ac49435cc863a1c1722af..a93eaaf620a1865d3ac42a7a668d95ded7b7151f 100644 (file)
@@ -1918,6 +1918,8 @@ Die Datenbestände werden sorgfältig gepflegt, aber es ist nicht ausgeschlossen
                <item name="wcf.acp.package.update.purchaseRequired"><![CDATA[Kostenpflichtiges Paket]]></item>
                <item name="wcf.acp.package.update.purchaseRequired.button.purchase"><![CDATA[Im Plugin-Store anzeigen]]></item>
                <item name="wcf.acp.package.update.purchaseRequired.description"><![CDATA[Das Paket „{$packageName}“ ist kostenpflichtig und muss zuvor im Plugin-Store erworben werden.]]></item>
+               <item name="wcf.acp.package.update.paidUpgrade"><![CDATA[Kostenpflichtiges Update]]></item>
+               <item name="wcf.acp.package.update.paidUpgrade.description"><![CDATA[Das Update für das Paket „{$packageName}“ ist kostenpflichtig und muss zuvor im Plugin-Store erworben werden.]]></item>
                <item name="wcf.acp.package.update.installUpdate"><![CDATA[Dieses Update installieren]]></item>
                <item name="wcf.acp.package.update.upgrade"><![CDATA[Dieses Paket wird aktualisiert.]]></item>
                <item name="wcf.acp.package.update.newVersion"><![CDATA[{$currentVersion} → <span class="packageUpdateNewVersion">{$newVersion}</span>]]></item>
index 9d46b6d3969a12f8578df243d3e75b00d1fd1a5d..c7cd4624ca5951f47eff2438acb9d8e1e30455a2 100644 (file)
@@ -1903,6 +1903,8 @@ The database is carefully maintained, but there will be always be a margin of er
                <item name="wcf.acp.package.update.purchaseRequired"><![CDATA[Paid Package]]></item>
                <item name="wcf.acp.package.update.purchaseRequired.button.purchase"><![CDATA[Show in the Plugin-Store]]></item>
                <item name="wcf.acp.package.update.purchaseRequired.description"><![CDATA[The paid package “{$packageName}” must be purchased in the Plugin-Store before you can install it.]]></item>
+               <item name="wcf.acp.package.update.purchaseRequired"><![CDATA[Paid Update]]></item>
+               <item name="wcf.acp.package.update.purchaseRequired.description"><![CDATA[The update for the package “{$packageName}” must be purchased in the Plugin-Store before you can install it.]]></item>
                <item name="wcf.acp.package.update.installUpdate"><![CDATA[Install this update]]></item>
                <item name="wcf.acp.package.update.upgrade"><![CDATA[This package will be upgraded.]]></item>
                <item name="wcf.acp.package.update.newVersion"><![CDATA[{$currentVersion} → <span class="packageUpdateNewVersion">{$newVersion}</span>]]></item>