Improve integer conditions
authorMatthias Schmidt <gravatronics@live.com>
Sun, 1 Jun 2014 13:09:26 +0000 (15:09 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Sun, 1 Jun 2014 13:09:26 +0000 (15:09 +0200)
wcfsetup/install/files/lib/system/condition/AbstractIntegerCondition.class.php
wcfsetup/install/files/lib/system/condition/UserIntegerPropertyCondition.class.php
wcfsetup/install/files/lib/system/condition/UserRegistrationDateIntervalCondition.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index 7320c1ce5d8d07eb40394fc5a724c9eeea029f43..e380d8f6836a8bc57e5af861a507e4a704c5a9dd 100644 (file)
@@ -14,7 +14,7 @@ use wcf\system\WCF;
  * @subpackage system.condition
  * @category   Community Framework
  */
-abstract class AbstractIntegerCondition extends AbstractMultipleFieldsCondition {
+abstract class AbstractIntegerCondition extends AbstractSingleFieldCondition {
        /**
         * property value has to be greater than the given value
         * @var integer
@@ -27,12 +27,6 @@ abstract class AbstractIntegerCondition extends AbstractMultipleFieldsCondition
         */
        protected $identifier = '';
        
-       /**
-        * prefix used for error message language items
-        * @var string
-        */
-       protected $languageItemPrefix = '';
-       
        /**
         * property value has to be less than the given value
         * @var integer
@@ -45,24 +39,12 @@ abstract class AbstractIntegerCondition extends AbstractMultipleFieldsCondition
         */
        protected $maxValue = null;
        
-       /**
-        * language item with the global maximum value error message
-        * @var string
-        */
-       protected $maxValueErrorMessage = null;
-       
        /**
         * minimum value the property can have
         * @var integer
         */
        protected $minValue = null;
        
-       /**
-        * language item with the global minimum value error message
-        * @var string
-        */
-       protected $minValueErrorMessage = null;
-       
        /**
         * name of the integer user property
         * @var string
@@ -92,28 +74,29 @@ abstract class AbstractIntegerCondition extends AbstractMultipleFieldsCondition
        /**
         * @see \wcf\system\condition\AbstractMultipleFieldsCondition::getData()
         */
-       protected function getErrorMessageElement($identifier) {
-               if (isset($this->errorMessages[$identifier])) {
+       protected function getErrorMessageElement() {
+               if ($this->errorMessage) {
                        $errorMessage = '';
-                       switch ($this->errorMessages[$identifier]) {
-                               case $this->languageItemPrefix.'.greaterThan.error.maxValue':
-                               case $this->languageItemPrefix.'.lessThan.error.maxValue':
-                                       $errorMessage = WCF::getLanguage()->getDynamicVariable($this->maxValueErrorMessage ? $this->maxValueErrorMessage : $this->errorMessages[$identifier], array(
+                       switch ($this->errorMessage) {
+                               case 'wcf.condition.greaterThan.error.maxValue':
+                               case 'wcf.condition.lessThan.error.maxValue':
+                                       $errorMessage = WCF::getLanguage()->getDynamicVariable($this->errorMessage, array(
                                                'maxValue' => $this->maxValue
                                        ));
                                break;
                                
-                               case $this->languageItemPrefix.'.greaterThan.error.minValue':
-                               case $this->languageItemPrefix.'.lessThan.error.minValue':
-                                       $errorMessage = WCF::getLanguage()->getDynamicVariable($this->minValueErrorMessage ? $this->minValueErrorMessage : $this->errorMessages[$identifier], array(
+                               case 'wcf.condition.greaterThan.error.minValue':
+                               case 'wcf.condition.lessThan.error.minValue':
+                                       $errorMessage = WCF::getLanguage()->getDynamicVariable($this->errorMessage, array(
                                                'minValue' => $this->minValue
                                        ));
                                break;
                                
                                default:
-                                       $errorMessage = WCF::getLanguage()->get($this->errorMessages[$identifier]);
+                                       $errorMessage = WCF::getLanguage()->get($this->errorMessage);
                                break;
                        }
+                       
                        return '<small class="innerError">'.$errorMessage.'</small>';
                }
                
@@ -121,27 +104,15 @@ abstract class AbstractIntegerCondition extends AbstractMultipleFieldsCondition
        }
        
        /**
-        * @see \wcf\system\condition\ICondition::getHTML()
+        * @see \wcf\system\condition\AbstractSingleFieldCondition::getFieldElement()
         */
-       public function getHTML() {
+       public function getFieldElement() {
+               $greaterThanPlaceHolder = WCF::getLanguage()->get('wcf.condition.greaterThan');
+               $lessThanPlaceHolder = WCF::getLanguage()->get('wcf.condition.lessThan');
+               
                return <<<HTML
-<dl>
-       <dt>{$this->getLabel('lessThan')}</dt>
-       <dd>
-               <input type="number" name="lessThan_{$this->getIdentifier()}" value="{$this->lessThan}"{$this->getMinMaxAttributes('lessThan')} />
-               {$this->getDescriptionElement('lessThan')}
-               {$this->getErrorMessageElement('lessThan')}
-       </dd>
-</dl>
-
-<dl>
-       <dt>{$this->getLabel('greaterThan')}</dt>
-       <dd>
-               <input type="number" name="greaterThan_{$this->getIdentifier()}" value="{$this->greaterThan}"{$this->getMinMaxAttributes('greaterThan')} />
-               {$this->getDescriptionElement('greaterThan')}
-               {$this->getErrorMessageElement('greaterThan')}
-       </dd>
-</dl>
+<input type="number" name="greaterThan_{$this->getIdentifier()}" value="{$this->greaterThan}" placeholder="{$greaterThanPlaceHolder}"{$this->getMinMaxAttributes('greaterThan')} />
+<input type="number" name="lessThan_{$this->getIdentifier()}" value="{$this->lessThan}" placeholder="{$lessThanPlaceHolder}"{$this->getMinMaxAttributes('lessThan')} />
 HTML;
        }
        
@@ -238,31 +209,31 @@ HTML;
        public function validate() {
                if ($this->lessThan !== null) {
                        if ($this->getMinValue() !== null && $this->lessThan <= $this->getMinValue()) {
-                               $this->errorMessages['lessThan'] = $this->languageItemPrefix.'.lessThan.error.minValue';
+                               $this->errorMessage = 'wcf.condition.lessThan.error.minValue';
                                
                                throw new UserInputException('lessThan', 'minValue');
                        }
                        else if ($this->getMaxValue() !== null && $this->lessThan > $this->getMaxValue()) {
-                               $this->errorMessages['lessThan'] = $this->languageItemPrefix.'.lessThan.error.maxValue';
+                               $this->errorMessages['lessThan'] = 'wcf.condition.lessThan.error.maxValue';
                                
                                throw new UserInputException('lessThan', 'maxValue');
                        }
                }
                if ($this->greaterThan !== null) {
                        if ($this->getMinValue() !== null && $this->greaterThan < $this->getMinValue()) {
-                               $this->errorMessages['greaterThan'] = $this->languageItemPrefix.'.greaterThan.error.minValue';
+                               $this->errorMessages['greaterThan'] = 'wcf.condition.greaterThan.error.minValue';
                                
                                throw new UserInputException('greaterThan', 'minValue');
                        }
                        else if ($this->getMaxValue() !== null && $this->greaterThan >= $this->getMaxValue()) {
-                               $this->errorMessages['greaterThan'] = $this->languageItemPrefix.'.greaterThan.error.maxValue';
+                               $this->errorMessages['greaterThan'] = 'wcf.condition.greaterThan.error.maxValue';
                                
                                throw new UserInputException('greaterThan', 'maxValue');
                        }
                }
                
                if ($this->lessThan !== null && $this->greaterThan !== null && $this->greaterThan + 1 >= $this->lessThan) {
-                       $this->errorMessages['greaterThan'] = $this->languageItemPrefix.'.greaterThan.error.lessThan';
+                       $this->errorMessage = 'wcf.condition.greaterThan.error.lessThan';
                        
                        throw new UserInputException('greaterThan', 'lessThan');
                }
index 089610d964564f745d9f5db8f138f2e1baefa4e6..894fcda43107016bfa43094c43485ade4c55ba9d 100644 (file)
@@ -18,25 +18,6 @@ use wcf\system\WCF;
  * @category   Community Framework
  */
 class UserIntegerPropertyCondition extends AbstractIntegerCondition implements IContentCondition, IUserCondition {
-       /**
-        * @see \wcf\system\condition\AbstractIntegerCondition::$maxValueErrorMessage
-        */
-       protected $maxValueErrorMessage = 'wcf.user.condition.integerProperty.error.maxValue';
-       
-       /**
-        * @see \wcf\system\condition\AbstractIntegerCondition::$minValueErrorMessage
-        */
-       protected $minValueErrorMessage = 'wcf.user.condition.integerProperty.error.minValue';
-       
-       /**
-        * @see \wcf\data\DatabaseObjectDecorator::__construct()
-        */
-       public function __construct(DatabaseObject $object) {
-               parent::__construct($object);
-               
-               $this->languageItemPrefix = 'wcf.user.condition.'.$this->getDecoratedObject()->propertyname;
-       }
-       
        /**
         * @see \wcf\system\condition\IUserCondition::addUserCondition()
         */
@@ -71,10 +52,10 @@ class UserIntegerPropertyCondition extends AbstractIntegerCondition implements I
        }
        
        /**
-        * @see \wcf\system\condition\AbstractMultipleFieldsCondition::getLabel()
+        * @see \wcf\system\condition\AbstractSingleFieldCondition::getLabel()
         */
-       protected function getLabel($identifier) {
-               return WCF::getLanguage()->get('wcf.user.condition.'.$this->getDecoratedObject()->propertyname.'.'.$identifier);
+       protected function getLabel() {
+               return WCF::getLanguage()->get('wcf.user.condition.'.$this->getDecoratedObject()->propertyname);
        }
        
        /**
index 5b96c682ea1663a84d3b25fc357e57741e28eafa..b5005b4fc5ba68bba08aeead08ee57574e14ba74 100644 (file)
@@ -22,31 +22,13 @@ class UserRegistrationDateIntervalCondition extends AbstractIntegerCondition imp
        /**
         * @see \wcf\system\condition\AbstractMultipleFieldsCondition::$languageItemPrefix
         */
-       protected $labels = array(
-               'greaterThan' => 'wcf.user.condition.registrationDateInterval.greaterThan',
-               'lessThan' => 'wcf.user.condition.registrationDateInterval.lessThan'
-       );
-       
-       /**
-        * @see \wcf\system\condition\AbstractIntegerCondition::$languageItemPrefix
-        */
-       protected $languageItemPrefix = 'wcf.user.condition.registrationDateInterval';
-       
-       /**
-        * @see \wcf\system\condition\AbstractIntegerCondition::$maxValueErrorMessage
-        */
-       protected $maxValueErrorMessage = 'wcf.user.condition.integerProperty.error.maxValue';
+       protected $label = 'wcf.user.condition.registrationDateInterval';
        
        /**
         * @see \wcf\system\condition\AbstractIntegerCondition::$minValue
         */
        protected $minValue = 0;
        
-       /**
-        * @see \wcf\system\condition\AbstractIntegerCondition::$minValueErrorMessage
-        */
-       protected $minValueErrorMessage = 'wcf.user.condition.integerProperty.error.minValue';
-       
        /**
         * @see \wcf\system\condition\IUserCondition::addUserCondition()
         */
@@ -80,13 +62,6 @@ class UserRegistrationDateIntervalCondition extends AbstractIntegerCondition imp
                return 'user_registrationDateInterval';
        }
        
-       /**
-        * @see \wcf\system\condition\AbstractMultipleFieldsCondition::getLabel()
-        */
-       protected function getLabel($identifier) {
-               return WCF::getLanguage()->get('wcf.user.condition.registrationDateInterval.'.$identifier);
-       }
-       
        /**
         * @see \wcf\system\condition\IContentCondition::showContent()
         */
index 858251f62d5dca97897beaf5dd7f794be243bf7d..d594c2f8fca4e6b142388267478dbf53152e6c90 100644 (file)
@@ -1634,6 +1634,16 @@ Fehler sind beispielsweise:
                <item name="wcf.comment.guestDialog.title"><![CDATA[TODO]]></item>
        </category>
        
+       <category name="wcf.condition">
+               <item name="wcf.condition.greaterThan"><![CDATA[mehr als]]></item>
+               <item name="wcf.condition.greaterThan.error.lessThan"><![CDATA[Der Minimalwert und der Maximalwert sind widersprüchlich.]]></item>
+               <item name="wcf.condition.greaterThan.error.maxValue"><![CDATA[Der Maximalwert darf nicht größer sein als {#$maxValue}.]]></item>
+               <item name="wcf.condition.greaterThan.error.minValue"><![CDATA[Der Maximalwert darf nicht kleiner sein als {#$minValue}.]]></item>
+               <item name="wcf.condition.lessThan"><![CDATA[weniger als]]></item>
+               <item name="wcf.condition.lessThan.error.maxValue"><![CDATA[Der Minimalwert darf nicht größer sein als {#$maxValue}.]]></item>
+               <item name="wcf.condition.lessThan.error.minValue"><![CDATA[Der Minimalwert darf nicht kleiner sein als {#$minValue}.]]></item>
+       </category>
+       
        <category name="wcf.dashboard">
                <item name="wcf.dashboard.box.availableBoxes"><![CDATA[Deaktivierte Boxen]]></item>
                <item name="wcf.dashboard.box.enabledBoxes"><![CDATA[Aktive Boxen]]></item>
@@ -2690,9 +2700,7 @@ Sollten Sie sich nicht auf der Website: {@PAGE_TITLE|language} angemeldet haben,
        </category>
        
        <category name="wcf.user.condition">
-               <item name="wcf.user.condition.activityPoints.greaterThan"><![CDATA[Punkte mehr als]]></item>
-               <item name="wcf.user.condition.activityPoints.greaterThan.error.lessThan"><![CDATA[Die Werte in „Punkte weniger als“ und „Punkte mehr als“ sind widersprüchlich.]]></item>
-               <item name="wcf.user.condition.activityPoints.lessThan"><![CDATA[Punkte weniger als]]></item>
+               <item name="wcf.user.condition.activityPoints"><![CDATA[Punkte]]></item>
                <item name="wcf.user.condition.avatar"><![CDATA[Avatar]]></item>
                <item name="wcf.user.condition.avatar.avatar"><![CDATA[Eigener Avatar]]></item>
                <item name="wcf.user.condition.avatar.gravatar"><![CDATA[Gravatar]]></item>
@@ -2702,12 +2710,8 @@ Sollten Sie sich nicht auf der Website: {@PAGE_TITLE|language} angemeldet haben,
                <item name="wcf.user.condition.conditionGroup.userOptions"><![CDATA[Persönliche Daten]]></item>
                <item name="wcf.user.condition.groupIDs"><![CDATA[in Benutzergruppen]]></item>
                <item name="wcf.user.condition.groupIDs.description"><![CDATA[Benutzer müssen in den ausgewählten Benutzergruppen Mitglied sein.]]></item>
-               <item name="wcf.user.condition.integerProperty.error.maxValue"><![CDATA[Der Wert darf nicht kleiner sein {#$minValue}.]]></item>
-               <item name="wcf.user.condition.integerProperty.error.minValue"><![CDATA[Der Wert muss größer sein als {#$minValue}.]]></item>
                <item name="wcf.user.condition.languages"><![CDATA[Sprachen]]></item>
-               <item name="wcf.user.condition.likesReceived.greaterThan"><![CDATA[Erhaltene Likes mehr als]]></item>
-               <item name="wcf.user.condition.likesReceived.greaterThan.error.lessThan"><![CDATA[Die Werte in „Erhaltene Likes weniger als“ und „Erhaltene Likes mehr als“ sind widersprüchlich.]]></item>
-               <item name="wcf.user.condition.likesReceived.lessThan"><![CDATA[Erhaltene Likes weniger als]]></item>
+               <item name="wcf.user.condition.likesReceived"><![CDATA[Erhaltene Likes]]></item>
                <item name="wcf.user.condition.notGroupIDs"><![CDATA[nicht in Benutzergruppen]]></item>
                <item name="wcf.user.condition.notGroupIDs.description"><![CDATA[Benutzer dürfen in den ausgewählten Benutzergruppen nicht Mitglied sein.]]></item>
                <item name="wcf.user.condition.notGroupIDs.error.groupIDsIntersection"><![CDATA[Die ausgewählten Benutzergruppen in „in Benutzergruppen“ und „nicht in Benutzergruppen“ sind widersprüchlich.]]></item>
@@ -2715,9 +2719,7 @@ Sollten Sie sich nicht auf der Website: {@PAGE_TITLE|language} angemeldet haben,
                <item name="wcf.user.condition.registrationDate.error.endBeforeStart"><![CDATA[Das Enddatum ist vor dem Startdatum.]]></item>
                <item name="wcf.user.condition.registrationDate.error.endNotValid"><![CDATA[Das Startdatum ist ungültig.]]></item>
                <item name="wcf.user.condition.registrationDate.error.startNotValid"><![CDATA[Das Enddatum ist ungültig.]]></item>
-               <item name="wcf.user.condition.registrationDateInterval.greaterThan"><![CDATA[mehr als X Tage registiert]]></item>
-               <item name="wcf.user.condition.registrationDateInterval.greaterThan.error.lessThan"><![CDATA[Die Werte in „weniger als X Tage registiert“ und „mehr als X Tage registiert“ sind widersprüchlich.]]></item>
-               <item name="wcf.user.condition.registrationDateInterval.lessThan"><![CDATA[weniger als X Tage registiert]]></item>
+               <item name="wcf.user.condition.registrationDateInterval"><![CDATA[Tage seit Registierung]]></item>
                <item name="wcf.user.condition.state"><![CDATA[Zustand]]></item>
                <item name="wcf.user.condition.state.isBanned"><![CDATA[Gesperrt]]></item>
                <item name="wcf.user.condition.state.isBanned.error.conflict"><![CDATA[„Gesperrt“ und „Nicht gesperrt“ können nicht gleichzeitig ausgewählt werden.]]></item>
index b0a213331d47529aed0651c990c51870eaf34086..7c5e5bb07efeb8c91a1c2b0e814e110bed27dc80 100644 (file)
@@ -1575,6 +1575,16 @@ Errors are:
                <item name="wcf.comment.guestDialog.title"><![CDATA[TODO]]></item>
        </category>
        
+       <category name="wcf.condition">
+               <item name="wcf.condition.greaterThan"><![CDATA[greater than]]></item>
+               <item name="wcf.condition.greaterThan.error.lessThan"><![CDATA[The minimal value and the maximum value are conflicting.]]></item>
+               <item name="wcf.condition.greaterThanerror.maxValue"><![CDATA[The maximum value may not be greater than {#$maxValue}.]]></item>
+               <item name="wcf.condition.greaterThan.error.minValue"><![CDATA[The maximum value may not be less than {#$minValue}.]]></item>
+               <item name="wcf.condition.lessThan"><![CDATA[less than]]></item>
+               <item name="wcf.condition.lessThan.error.maxValue"><![CDATA[The minimal value may not be greater than {#$maxValue}.]]></item>
+               <item name="wcf.condition.lessThan.error.minValue"><![CDATA[The minimal value may not be less than {#$minValue}.]]></item>
+       </category>
+       
        <category name="wcf.dashboard">
                <item name="wcf.dashboard.box.availableBoxes"><![CDATA[Disabled Boxes]]></item>
                <item name="wcf.dashboard.box.enabledBoxes"><![CDATA[Active Boxes]]></item>
@@ -2510,9 +2520,7 @@ You can safely ignore this email if you did not register with the website: {@PAG
        </category>
        
        <category name="wcf.user.condition">
-               <item name="wcf.user.condition.activityPoints.greaterThan"><![CDATA[Points Greater Than]]></item>
-               <item name="wcf.user.condition.activityPoints.greaterThan.error.lessThan"><![CDATA[The values in “Points Less Than“ and “Points Greater Than“ are conflicting.]]></item>
-               <item name="wcf.user.condition.activityPoints.lessThan"><![CDATA[Points Less Than]]></item>
+               <item name="wcf.user.condition.activityPoints"><![CDATA[Points]]></item>
                <item name="wcf.user.condition.avatar"><![CDATA[Avatar]]></item>
                <item name="wcf.user.condition.avatar.avatar"><![CDATA[Own Avatar]]></item>
                <item name="wcf.user.condition.avatar.gravatar"><![CDATA[Gravatar]]></item>
@@ -2522,12 +2530,8 @@ You can safely ignore this email if you did not register with the website: {@PAG
                <item name="wcf.user.condition.conditionGroup.userOptions"><![CDATA[Personal Data]]></item>
                <item name="wcf.user.condition.groupIDs"><![CDATA[in User Groups]]></item>
                <item name="wcf.user.condition.groupIDs.description"><![CDATA[Users have to be a member of the selected user groups.]]></item>
-               <item name="wcf.user.condition.integerProperty.error.maxValue"><![CDATA[The value may not be less than {#$minValue}.]]></item>
-               <item name="wcf.user.condition.integerProperty.error.minValue"><![CDATA[The value has to be greater than {#$minValue}.]]></item>
                <item name="wcf.user.condition.languages"><![CDATA[Languages]]></item>
-               <item name="wcf.user.condition.likesReceived.greaterThan"><![CDATA[Likes Received Greater Than]]></item>
-               <item name="wcf.user.condition.likesReceived.greaterThan.error.lessThan"><![CDATA[The values in “Likes Received Less Than“ and “Likes Received Greater Than“ are conflicting.]]></item>
-               <item name="wcf.user.condition.likesReceived.lessThan"><![CDATA[Likes Received Less Than]]></item>
+               <item name="wcf.user.condition.likesReceived"><![CDATA[Likes Received]]></item>
                <item name="wcf.user.condition.notGroupIDs"><![CDATA[not in User Groups]]></item>
                <item name="wcf.user.condition.notGroupIDs.description"><![CDATA[Users may not be a member of the selected user groups.]]></item>
                <item name="wcf.user.condition.notGroupIDs.error.groupIDsIntersection"><![CDATA[The selected user groups in “in User Groups“ and “not in User Groups“ are conflicting.]]></item>
@@ -2535,9 +2539,7 @@ You can safely ignore this email if you did not register with the website: {@PAG
                <item name="wcf.user.condition.registrationDate.error.endBeforeStart"><![CDATA[The end date is prior to the start date.]]></item>
                <item name="wcf.user.condition.registrationDate.error.endNotValid"><![CDATA[The start date is not valid.]]></item>
                <item name="wcf.user.condition.registrationDate.error.startNotValid"><![CDATA[The end date is not valid.]]></item>
-               <item name="wcf.user.condition.registrationDateInterval.greaterThan"><![CDATA[registered less than X days ago]]></item>
-               <item name="wcf.user.condition.registrationDateInterval.greaterThan.error.lessThan"><![CDATA[The values in “registered less than X days ago“ and “registered more than X days ago“ are conflicting.]]></item>
-               <item name="wcf.user.condition.registrationDateInterval.lessThan"><![CDATA[registered more than X days ago]]></item>
+               <item name="wcf.user.condition.registrationDateInterval"><![CDATA[Days since registration]]></item>
                <item name="wcf.user.condition.state"><![CDATA[State]]></item>
                <item name="wcf.user.condition.state.isBanned"><![CDATA[Banned]]></item>
                <item name="wcf.user.condition.state.isBanned.error.conflict"><![CDATA[You may not simultaneously select “Banned“ and “Not Banned“.]]></item>