]> git.mxchange.org Git - core.git/blobdiff - framework/main/classes/helper/html/forms/class_HtmlFormHelper.php
Continued:
[core.git] / framework / main / classes / helper / html / forms / class_HtmlFormHelper.php
index 4e6fbc47eda7f2406279028dc0d263f85b4cb52b..768c5ed680933efdda73258fe53538e5135c3566 100644 (file)
@@ -1,14 +1,17 @@
 <?php
 // Own namespace
-namespace CoreFramework\Helper;
+namespace Org\Mxchange\CoreFramework\Helper;
 
 // Import framework stuff
-use CoreFramework\Factory\ObjectFactory;
-use CoreFramework\Generic\EmptyVariableException;
-use CoreFramework\Generic\NullPointerException;
-use CoreFramework\Registry\Registry;
-use CoreFramework\Template\CompileableTemplate;
-use CoreFramework\Wrapper\Database\User\UserDatabaseWrapper;
+use Org\Mxchange\CoreFramework\Database\Frontend\User\UserDatabaseWrapper;
+use Org\Mxchange\CoreFramework\Factory\ObjectFactory;
+use Org\Mxchange\CoreFramework\Generic\NullPointerException;
+use Org\Mxchange\CoreFramework\Helper\Template\HelpableTemplate;
+use Org\Mxchange\CoreFramework\Registry\GenericRegistry;
+use Org\Mxchange\CoreFramework\Template\CompileableTemplate;
+
+// Import SPL stuff
+use \InvalidArgumentException;
 
 /**
  * A helper for constructing web forms
@@ -34,20 +37,25 @@ use CoreFramework\Wrapper\Database\User\UserDatabaseWrapper;
  */
 class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
        /**
-        * Whether the form tag is opened (keep at FALSE or else your forms will
+        * Whether the form tag is opened (keep at false or else your forms will
         * never work!)
         */
-       private $formOpened = FALSE;
+       private $formOpened = false;
 
        /**
-        * Name of the form
+        * Name of current form
         */
        private $formName = '';
 
        /**
-        * Whether form tag is enabled (default: TRUE)
+        * Id of current form
+        */
+       private $formId = '';
+
+       /**
+        * Whether form tag is enabled (default: true)
         */
-       private $formEnabled = TRUE;
+       private $formEnabled = true;
 
        // Class Constants
        const EXCEPTION_FORM_NAME_INVALID       = 0x120;
@@ -74,7 +82,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         * @param       $withForm                       Whether include the form tag
         * @return      $helperInstance         A preparedf instance of this helper
         */
-       public static final function createHtmlFormHelper (CompileableTemplate $templateInstance, $formName, $formId = FALSE, $withForm = TRUE) {
+       public static final function createHtmlFormHelper (CompileableTemplate $templateInstance, $formName, $formId = false, $withForm = true) {
                // Get new instance
                $helperInstance = new HtmlFormHelper();
 
@@ -82,7 +90,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
                $helperInstance->setTemplateInstance($templateInstance);
 
                // Is the form id not set?
-               if ($formId === FALSE) {
+               if ($formId === false) {
                        // Use form id from form name
                        $formId = $formName;
                } // END - if
@@ -90,13 +98,13 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
                // Set form name
                $helperInstance->setFormName($formName);
 
-               // A form-less field may say 'FALSE' here...
-               if ($withForm === TRUE) {
+               // A form-less field may say 'false' here...
+               if ($withForm === true) {
                        // Create the form
                        $helperInstance->addFormTag($formName, $formId);
                } else {
                        // Disable form
-                       $helperInstance->enableForm(FALSE);
+                       $helperInstance->enableForm(false);
                }
 
                // Return the prepared instance
@@ -106,15 +114,15 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
        /**
         * Add the form tag or close it an already opened form tag
         *
-        * @param       $formName       Name of the form (default: FALSE)
-        * @param       $formId         Id of the form (attribute 'id'; default: FALSE)
+        * @param       $formName       Name of the form (default: false)
+        * @param       $formId         Id of the form (attribute 'id'; default: false)
         * @return      void
-        * @throws      InvalidFormNameException        If the form name is invalid ( = FALSE)
+        * @throws      InvalidFormNameException        If the form name is invalid ( = false)
         * @todo        Add some unique PIN here to bypass problems with some browser and/or extensions
         */
-       public function addFormTag ($formName = FALSE, $formId = FALSE) {
+       public function addFormTag ($formName = false, $formId = false) {
                // When the form is not yet opened at least form name must be valid
-               if (($this->formOpened === FALSE) && ($formName === FALSE)) {
+               if (($this->formOpened === false) && ($formName === false)) {
                        // Thrown an exception
                        throw new InvalidFormNameException ($this, self::EXCEPTION_FORM_NAME_INVALID);
                } // END - if
@@ -123,26 +131,21 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
                $formContent = '</form>';
 
                // Check whether we shall open or close the form
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Add HTML code
-                       $formContent = sprintf("<form name=\"%s\" class=\"forms\" action=\"%s/%s\" method=\"%s\" target=\"%s\"",
+                       $formContent = sprintf("<form name=\"%s\" class=\"forms\" action=\"%s/%s\" method=\"%s\" target=\"%s\" id=\"%s_form\">",
                                $formName,
                                $this->getConfigInstance()->getConfigEntry('base_url'),
                                $this->getConfigInstance()->getConfigEntry('form_action'),
                                $this->getConfigInstance()->getConfigEntry('form_method'),
-                               $this->getConfigInstance()->getConfigEntry('form_target')
-                       );
-
-                       // Add form id as well
-                       $formContent .= sprintf(" id=\"%s_form\"",
+                               $this->getConfigInstance()->getConfigEntry('form_target'),
                                $formId
                        );
 
-                       // Add close bracket
-                       $formContent .= '>';
-
-                       // Open the form and remeber the form name
-                       $this->formOpened = TRUE;
+                       // Open the form and remeber the form name and id
+                       $this->formName = $formName;
+                       $this->formId = $formId;
+                       $this->formOpened = true;
 
                        // Add it to the content
                        $this->addHeaderContent($formContent);
@@ -157,7 +160,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
                        } // END - if
 
                        // Simply close it
-                       $this->formOpened = FALSE;
+                       $this->formOpened = false;
 
                        // Add it to the content
                        $this->addFooterContent($formContent);
@@ -175,13 +178,14 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addInputTextField ($fieldName, $fieldValue = '') {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
                // Generate the content
-               $inputContent = sprintf("<input type=\"text\" class=\"textfield %s_field\" name=\"%s\" value=\"%s\" />",
+               $inputContent = sprintf('<input type="text" class="form-control" id="%s_%s_field" name="%s" value="%s" />',
+                       $this->getFormId(),
                        $fieldName,
                        $fieldName,
                        $fieldValue
@@ -217,13 +221,14 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addInputPasswordField ($fieldName, $fieldValue = '') {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
                // Generate the content
-               $inputContent = sprintf("<input type=\"password\" class=\"password %s_field\" name=\"%s\" value=\"%s\" />",
+               $inputContent = sprintf('<input type="password" class="form-control" id="%s_%s_field" name="%s" value="%s" />',
+                       $this->getFormId(),
                        $fieldName,
                        $fieldName,
                        $fieldValue
@@ -244,13 +249,13 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addInputHiddenField ($fieldName, $fieldValue = '') {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
                // Generate the content
-               $inputContent = sprintf("<input type=\"hidden\" name=\"%s\" value=\"%s\" />",
+               $inputContent = sprintf('<input type="hidden" name="%s" value="%s" />',
                        $fieldName,
                        $fieldValue
                );
@@ -299,19 +304,20 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         * @return      void
         * @throws      FormClosedException             If the form is not yet opened
         */
-       public function addInputCheckboxField ($fieldName, $fieldChecked = TRUE) {
+       public function addInputCheckboxField ($fieldName, $fieldChecked = true) {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
                // Set whether the check box is checked...
-               $checked = " checked=\"checked\"";
-               if ($fieldChecked === FALSE) $checked = ' ';
+               $checked = ' checked="checked"';
+               if ($fieldChecked === false) $checked = ' ';
 
                // Generate the content
-               $inputContent = sprintf("<input type=\"checkbox\" name=\"%s\" class=\"checkbox %s_field\" value=\"1\"%s/>",
+               $inputContent = sprintf('<input type="checkbox" name="%s" class="checkbox" id="%s_%s_field" value="1"%s />',
+                       $this->getFormId(),
                        $fieldName,
                        $fieldName,
                        $checked
@@ -331,14 +337,14 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addInputResetButton ($buttonText) {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, 'reset'), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
                // Generate the content
-               $inputContent = sprintf("<input type=\"reset\" class=\"reset_button\" id=\"%s_reset\" value=\"%s\" />",
-                       $this->getFormName(),
+               $inputContent = sprintf('<input type="reset" class="reset_button" id="%s_reset" value="%s" />',
+                       $this->getFormId(),
                        $buttonText
                );
 
@@ -356,15 +362,15 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addInputSubmitButton ($buttonText) {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, 'submit'), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
                // Generate the content
-               $inputContent = sprintf("<input type=\"submit\" class=\"submit_button\" id=\"%s_submit\" name=\"%s_button\" value=\"%s\" />",
-                       $this->getFormName(),
-                       $this->getFormName(),
+               $inputContent = sprintf('<input type="submit" class="submit_button" id="%s_submit" name="%s_submit" value="%s" />',
+                       $this->getFormId(),
+                       $this->getFormId(),
                        $buttonText
                );
 
@@ -379,35 +385,32 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         * @param       $groupText      Text including HTML to show above this group
         * @return      void
         * @throws      FormClosedException             If no form has been opened before
-        * @throws      EmptyVariableException  If $groupId is not set
+        * @throws      InvalidArgumentException        If $groupId is not set
         */
        public function addFormGroup ($groupId = '', $groupText = '') {
                // Is a form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw exception here
                        throw new FormClosedException(array($this, $groupId), self::EXCEPTION_CLOSED_FORM);
-               } // END - if
-
-               // At least the group name should be set
-               if ((empty($groupId)) && ($this->ifGroupOpenedPreviously() === FALSE)) {
+               } elseif ((empty($groupId)) && ($this->ifGroupOpenedPreviously() === false)) {
                        // Throw exception here
-                       throw new EmptyVariableException(array($this, 'groupId'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
+                       throw new InvalidArgumentException('Parameter "groupId" is empty but group is not closed');
                } elseif (empty($groupId)) {
                        // Close the last opened
                        $groupId = $this->getPreviousGroupId();
                }
 
                // Same group to open?
-               if (($this->ifGroupOpenedPreviously() === FALSE) && ($groupId === $this->getPreviousGroupId())) {
+               if (($this->ifGroupOpenedPreviously() === false) && ($groupId === $this->getPreviousGroupId())) {
                        // Abort here silently
-                       return FALSE;
+                       return false;
                } // END - if
 
                // Initialize content with closing div by default
                $content = "    </div>\n</div><!-- Group - CLOSE //-->";
 
                // Is this group opened?
-               if ($this->ifGroupOpenedPreviously() === FALSE) {
+               if ($this->ifGroupOpenedPreviously() === false) {
                        // Begin the div/span blocks
                        $content = sprintf("<!-- Group %s - OPEN //-->
 <div class=\"group_box\" id=\"%s_group_box\">
@@ -454,35 +457,32 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         * @param       $subGroupText   Text including HTML to show above this group
         * @return      void
         * @throws      FormFormClosedException         If no group has been opened before
-        * @throws      EmptyVariableException          If $subGroupId is not set
+        * @throws      InvalidArgumentException                If $subGroupId is not set
         */
        public function addFormSubGroup ($subGroupId = '', $subGroupText = '') {
                // Is a group opened?
-               if ($this->ifGroupOpenedPreviously() === FALSE) {
+               if ($this->ifGroupOpenedPreviously() === false) {
                        // Throw exception here
                        throw new FormFormClosedException(array($this, $subGroupId), self::EXCEPTION_UNEXPECTED_CLOSED_GROUP);
-               } // END - if
-
-               // At least the sub group name should be set
-               if ((empty($subGroupId)) && ($this->ifSubGroupOpenedPreviously() === FALSE)) {
+               } elseif ((empty($subGroupId)) && ($this->ifSubGroupOpenedPreviously() === false)) {
                        // Throw exception here
-                       throw new EmptyVariableException(array($this, 'subGroupId'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
+                       throw new InvalidArgumentException('Parameter "subGroupId" is empty but sub-group is not closed');
                } elseif (empty($subGroupId)) {
                        // Close the last opened
                        $subGroupId = $this->getPreviousSubGroupId();
                }
 
                // Same sub group to open?
-               if (($this->ifSubGroupOpenedPreviously() === FALSE) && ($subGroupId == $this->getPreviousSubGroupId())) {
+               if (($this->ifSubGroupOpenedPreviously() === false) && ($subGroupId == $this->getPreviousSubGroupId())) {
                        // Abort here silently
-                       return FALSE;
+                       return false;
                } // END - if
 
                // Initialize content with closing div by default
                $content = "    </div>\n</div><!-- Sub group- CLOSE //-->";
 
                // Is this group opened?
-               if ($this->ifSubGroupOpenedPreviously() === FALSE) {
+               if ($this->ifSubGroupOpenedPreviously() === false) {
                        // Begin the span block
                        $content = sprintf("<!-- Sub group %s - OPEN //-->
 <div class=\"subgroup_box\" id=\"%s_subgroup_box\">
@@ -514,33 +514,38 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
        }
 
        /**
-        * Add text surrounded by a span block when there is a group opened before
-        * or else by a div block.
+        * Adds text surrounded by a label tag for given form field
         *
-        * @param       $fieldName                      Field name
-        * @param       $fieldText                      Text for the field
+        * @param       $fieldName              Field name
+        * @param       $fieldText              Text for the field
+        * @param       $fieldTitle             Optional title for label tag
         * @return      void
         * @throws      FormClosedException             If the form is not yet opened
         */
-       public function addFieldText ($fieldName, $fieldText) {
+       public function addFieldLabel ($fieldName, $fieldText, $fieldTitle = '') {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
-               // Set the block type
-               $block = 'div';
-               if ($this->ifGroupOpenedPreviously()) $block = 'span';
+               // Default is no title attribute
+               $titleAttribute = '';
+
+               // Is title given?
+               if (!empty($fieldTitle)) {
+                       // Create title attribute
+                       $titleAttribute = sprintf(' title="%s" data-toggle="tooltip"', $fieldTitle);
+               } // END - if
 
                // Generate the content
-               $inputContent = sprintf("       <%s id=\"%s_text\">
-               %s
-       </%s>",
-                       $block,
+               $inputContent = sprintf('<label class="control-label" for="%s_%s_field"%s>
+       %s
+</label>',
+                       $this->getFormId(),
                        $fieldName,
-                       $fieldText,
-                       $block
+                       $titleAttribute,
+                       $fieldText
                );
 
                // And add it
@@ -558,7 +563,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addFormNote ($noteId, $formNotes) {
                // Is the form opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, 'form_notes'), self::EXCEPTION_CLOSED_FORM);
                } // END - if
@@ -586,13 +591,13 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addInputSelectField ($selectId, $firstEntry) {
                // Is the form group opened?
-               if (($this->formOpened === FALSE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === false) && ($this->formEnabled === true)) {
                        // Throw an exception
                        throw new FormClosedException (array($this, 'form_notes'), self::EXCEPTION_CLOSED_FORM);
                } // END - if
 
                // Shall we close or open the sub group?
-               if (($this->ifSubGroupOpenedPreviously() === FALSE) && ($this->getPreviousSubGroupId() !== $selectId)) {
+               if (($this->ifSubGroupOpenedPreviously() === false) && ($this->getPreviousSubGroupId() !== $selectId)) {
                        // Initialize first entry (which might be non-selectable if content is provided
                        if (!empty($firstEntry)) {
                                // Add selection around it
@@ -633,7 +638,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addSelectSubOption ($subName, $subValue) {
                // Is there a sub group (shall be a selection box!)
-               if ($this->ifSubGroupOpenedPreviously() === FALSE) {
+               if ($this->ifSubGroupOpenedPreviously() === false) {
                        // Then throw an exception here
                        throw new HelperNoPreviousOpenedSubGroupException(array($this, $content), self::EXCEPTION_NO_PREVIOUS_SUB_GROUP_OPENED);
                } // END - if
@@ -661,7 +666,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function addSelectOption ($optionName, $optionValue) {
                // Is there a sub group (shall be a selection box!)
-               if ($this->ifSubGroupOpenedPreviously() === FALSE) {
+               if ($this->ifSubGroupOpenedPreviously() === false) {
                        // Then throw an exception here
                        throw new HelperNoPreviousOpenedSubGroupException(array($this, $content), self::EXCEPTION_NO_PREVIOUS_SUB_GROUP_OPENED);
                } // END - if
@@ -688,7 +693,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
 
                try {
                        // Get last executed pre filter
-                       $extraInstance = Registry::getRegistry()->getInstance('extra');
+                       $extraInstance = GenericRegistry::getRegistry()->getInstance('extra');
                } catch (NullPointerException $e) {
                        // Instance in registry is not set (NULL)
                        // @TODO We need to log this later
@@ -713,7 +718,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         * @param       $formEnabled    Whether form is enabled or disabled
         * @return      void
         */
-       public final function enableForm ($formEnabled = TRUE) {
+       public final function enableForm ($formEnabled = true) {
                $this->formEnabled = (bool) $formEnabled;
        }
 
@@ -736,6 +741,25 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
                return $this->formName;
        }
 
+       /**
+        * Setter for form id
+        *
+        * @param       $formId Id of this form
+        * @return      void
+        */
+       public final function setFormId ($formId) {
+               $this->formId = (string) $formId;
+       }
+
+       /**
+        * Getter for form id
+        *
+        * @return      $formId Id of this form
+        */
+       public final function getFormId () {
+               return $this->formId;
+       }
+
        /**
         * Checks whether the registration requires a valid email address
         *
@@ -863,7 +887,7 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         * @todo        Implement check if rules have been changed
         */
        public function ifRulesHaveChanged () {
-               return FALSE;
+               return false;
        }
 
        /**
@@ -926,10 +950,10 @@ class HtmlFormHelper extends BaseHtmlHelper implements HelpableTemplate {
         */
        public function flushContent () {
                // Is the form still open?
-               if (($this->formOpened === TRUE) && ($this->formEnabled === TRUE)) {
+               if (($this->formOpened === true) && ($this->formEnabled === true)) {
                        // Close the form automatically
                        $this->addFormTag();
-               } elseif ($this->formEnabled === FALSE) {
+               } elseif ($this->formEnabled === false) {
                        if ($this->ifSubGroupOpenedPreviously()) {
                                // Close sub group
                                $this->addFormSubGroup();