</dd>
</dl>
</fieldset>
+
+ <fieldset>
+ <legend>{lang}wcf.acp.style.exportStyle.asPackage{/lang}</legend>
+ <small>{lang}wcf.acp.style.exportStyle.asPackage.description{/lang}</small>
+
+ <dl>
+ <dd>
+ <label><input type="checkbox" name="exportAsPackage" value="1"{if $exportAsPackage} checked="checked"{/if} /> <span>{lang}wcf.acp.style.exportAsPackage{/lang}</span></label>
+ </dd>
+ </dl>
+ <dl{if $errorField == 'packageName'} class="formError"{/if}>
+ <dt>
+ <label for="packageName">{lang}wcf.acp.style.packageName{/lang}</label>
+ </dt>
+ <dd>
+ <input type="text" name="packageName" id="packageName" class="long" value="{$packageName}" />
+ {if $errorField == 'packageName'}
+ <small class="innerError">
+ {if $errorType == 'empty'}
+ {lang}wcf.global.form.error.empty{/lang}
+ {else}
+ {lang}wcf.acp.style.packageName.error.{$errorType}{/lang}
+ {/if}
+ </small>
+ {/if}
+ <small>{lang}wcf.acp.style.packageName.description{/lang}</small>
+ </dd>
+ </dl>
+ </fieldset>
</div>
<div class="formSubmit">
<?php
namespace wcf\acp\form;
+use wcf\data\package\Package;
+
+use wcf\system\exception\UserInputException;
+
use wcf\data\style\Style;
use wcf\data\style\StyleEditor;
use wcf\form\AbstractForm;
*/
public $canExportTemplates = false;
+ /**
+ * export style as installable package
+ * @var boolean
+ */
+ public $exportAsPackage = false;
+
/**
* true, if icons should be exported
* @var boolean
*/
public $neededPermissions = array('admin.style.canEditStyle');
+ /**
+ * package identifier
+ * @var string
+ */
+ public $packageName = '';
+
/**
* style object
* @var wcf\data\style\Style
if ($this->canExportIcons && isset($_POST['exportIcons'])) $this->exportIcons = true;
if ($this->canExportImages && isset($_POST['exportImages'])) $this->exportImages = true;
if ($this->canExportTemplates && isset($_POST['exportTemplates'])) $this->exportTemplates = true;
+
+ if (isset($_POST['exportAsPackage'])) {
+ $this->exportAsPackage = true;
+
+ if (isset($_POST['packageName'])) $this->packageName = StringUtil::trim($_POST['packageName']);
+ }
+ }
+
+ /**
+ * @see wcf\form\IForm::validate()
+ */
+ public function validate() {
+ parent::validate();
+
+ if ($this->exportAsPackage) {
+ if (empty($this->packageName)) {
+ throw new UserInputException('packageName');
+ }
+
+ if (!Package::isValidPackageName($this->packageName)) {
+ throw new UserInputException('packageName', 'notValid');
+ }
+
+ // 3rd party packages may never have com.woltlab.* as name
+ if (strpos($this->packageName, 'com.woltlab.') === 0) {
+ throw new UserInputException('packageName', 'reserved');
+ }
+ }
}
/**
// send headers
header('Content-Type: application/x-gzip; charset=utf-8');
- header('Content-Disposition: attachment; filename="'.$filename.'-style.tgz"');
+
+ if ($this->exportAsPackage) {
+ header('Content-Disposition: attachment; filename="'.$this->packageName.'.tar.gz"');
+ }
+ else {
+ header('Content-Disposition: attachment; filename="'.$filename.'-style.tgz"');
+ }
// export style
$styleEditor = new StyleEditor($this->style);
- $styleEditor->export($this->exportTemplates, $this->exportImages, $this->exportIcons);
+ $styleEditor->export($this->exportTemplates, $this->exportImages, $this->exportIcons, $this->packageName);
// call saved event
$this->saved();
'canExportIcons' => $this->canExportIcons,
'canExportImages' => $this->canExportImages,
'canExportTemplates' => $this->canExportTemplates,
+ 'exportAsPackage' => $this->exportAsPackage,
'exportIcons' => $this->exportIcons,
'exportImages' => $this->exportImages,
'exportTemplates' => $this->exportTemplates,
+ 'packageName' => $this->packageName,
'style' => $this->style,
'styleID' => $this->styleID
));
<item name="wcf.acp.style.copyStyle.confirmMessage"><![CDATA[Möchten Sie den Stil „{$style->styleName}“ wirklich duplizieren?]]></item>
<item name="wcf.acp.style.delete.confirmMessage"><![CDATA[Möchten Sie den Stil „{$style->styleName}“ wirklich löschen?]]></item>
<item name="wcf.acp.style.edit"><![CDATA[Stil bearbeiten]]></item>
+ <item name="wcf.acp.style.exportAsPackage"><![CDATA[Als Paket exportieren]]></item>
<item name="wcf.acp.style.exportIcons"><![CDATA[Icons exportieren ({$style->iconPath})]]></item>
<item name="wcf.acp.style.exportImages"><![CDATA[Grafiken exportieren ({$style->imagePath})]]></item>
<item name="wcf.acp.style.exportTemplates"><![CDATA[Templates exportieren]]></item>
<item name="wcf.acp.style.exportStyle"><![CDATA[Stil exportieren]]></item>
+ <item name="wcf.acp.style.exportStyle.asPackage"><![CDATA[Export als Paket]]></item>
+ <item name="wcf.acp.style.exportStyle.asPackage.description"><![CDATA[Wählen Sie hier aus, ob sie den Stil „{$style->styleName}“ als Paket exportieren möchten. Pakete können über die Paketverwaltung installiert oder in den <a href="{@$__wcf->getPath()}acp/dereferrer.php?url=http://www.woltlab.com/de/pluginstore/">WoltLab® Plugin-Store</a> hochgeladen werden.]]></item>
<item name="wcf.acp.style.exportStyle.components"><![CDATA[Optionen]]></item>
<item name="wcf.acp.style.exportStyle.components.description"><![CDATA[Wählen Sie hier aus, welche Bestandteile des Stils „{$style->styleName}“ mit exportiert werden sollen]]></item>
<item name="wcf.acp.style.general"><![CDATA[Daten]]></item>
<item name="wcf.acp.style.imagePath.description"><![CDATA[Wenn Ihr Stil eigene Grafiken benötigt, sollten diese in einem Unterordner des Ordners „images“ ablegen. Geben Sie hier den Pfad zu diesem Ordner an.]]></item>
<item name="wcf.acp.style.license"><![CDATA[Lizenz]]></item>
<item name="wcf.acp.style.list"><![CDATA[Stile auflisten]]></item>
+ <item name="wcf.acp.style.packageName"><![CDATA[Paketbezeichner]]></item>
+ <item name="wcf.acp.style.packageName.description"><![CDATA[Geben Sie hier den Paketbezeichner in der Form „tld.domain.paketName“ an. Wenn Ihnen beispielsweise die Domain „example.com“ gehört und Ihr Stil „Blue Sunrise“ heißt, so wäre „com.example.style.blueSunrise“ ein passender und gültiger Paketbezeichner.]]></item>
+ <item name="wcf.acp.style.packageName.error.notValid"><![CDATA[Der eingegebene Paketbezeichner ist ungültig]]></item>
+ <item name="wcf.acp.style.packageName.error.reserved"><![CDATA[Der Paketbezeichner darf nicht mit „com.woltlab.“ beginnen]]></item>
<item name="wcf.acp.style.styleDate"><![CDATA[Datum]]></item>
<item name="wcf.acp.style.styleDescription"><![CDATA[Beschreibung]]></item>
<item name="wcf.acp.style.styleName"><![CDATA[Name]]></item>