diff --git a/code/BootstrapForm.php b/code/BootstrapForm.php index 6ff330c..24a9e1f 100755 --- a/code/BootstrapForm.php +++ b/code/BootstrapForm.php @@ -29,6 +29,28 @@ class BootstrapForm extends Form { protected $formLayout = "vertical"; + /** + * The label grid class for the bootstrap 3 horizontal form + * + * @var String + */ + protected $gridLabelClass = "col-sm-3"; + + + /** + * The input grid class for the bootstrap 3 horizontal form + * + * @var String + */ + protected $gridInputClass = "col-sm-9"; + + /** + * The Action grid class for the bootstrap 3 horizontal form + * + * @var String + */ + protected $gridActionClass = "col-sm-offset-3 col-sm-9"; + /** @@ -97,6 +119,50 @@ public function setLayout($layout) { } + /** + * Sets the desired label Grid Class of the form. Options include: + * - "col-sm-3" (default) + * - "col-sm-4" + * etc.. + * + * @param String + * @return BootstrapForm + */ + public function setGridLabelClass($class) { + $this->gridLabelClass = strtolower($class); + return $this; + } + + + /** + * Sets the desired Input Grid Class of the form. Options include: + * - "col-sm-9" (default) + * - "col-sm-8" + * etc.. + * + * @param String + * @return BootstrapForm + */ + public function setGridInputClass($class) { + $this->gridInputClass = strtolower($class); + return $this; + } + + + /** + * Sets the desired Action Grid Class of the form. Options include: + * - "col-sm-offset-3 col-sm-9" (default) + * - "col-sm-offset-2 col-sm-10" + * etc.. + * + * @param String + * @return BootstrapForm + */ + public function setGridActionClass($class) { + $this->gridActionClass = strtolower($class); + return $this; + } + /** * Adds a "well," or sunken background and border, to the form @@ -116,18 +182,18 @@ public function addWell() { * @return string */ public function forTemplate() { - if(!$this->stat('bootstrap_included')) { - Requirements::css(BOOTSTRAP_FORMS_DIR.'/css/bootstrap.css'); + if($this->stat('bootstrap_included')!=false) { + Requirements::css(BOOTSTRAP_FORMS_DIR.'/css/bootstrap.css'); } - if(!$this->stat('jquery_included')) { + if($this->stat('jquery_included')!=false) { Requirements::javascript(THIRDPARTY_DIR."/jquery/jquery.js"); } - if(!$this->stat('bootstrap_form_included')) { + if(!$this->stat('bootstrap_form_included')!=false) { Requirements::javascript(BOOTSTRAP_FORMS_DIR."/javascript/bootstrap_forms.js"); } $this->addExtraClass("form-{$this->formLayout}"); - $this->applyBootstrap(); + $this->applyBootstrap(); return parent::forTemplate(); } diff --git a/code/BootstrapFormField.php b/code/BootstrapFormField.php index 7371665..5f9c4b0 100755 --- a/code/BootstrapFormField.php +++ b/code/BootstrapFormField.php @@ -27,6 +27,23 @@ class BootstrapFormField extends DataExtension { ); + /** + * The label grid class for the bootstrap 3 horizontal form + * overrides form setting + * + * @var String + */ + protected $gridLabelClass = ''; + + /** + * The input grid class for the bootstrap 3 horizontal form + * overrides form setting + * + * @var String + */ + protected $gridInputClass = ''; + + /** * Adds a HTML5 placeholder attribute to the form field * @@ -166,6 +183,59 @@ public function HolderClasses() { return implode(" ",$this->holderClasses); } + + /** + * returns the bootstrap Layout to be used in templates + * + * @return string + */ + public function BootstrapLayout() { + return $this->owner->form->formLayout; + } + + /** + * Allows setting custom Grid label class to override from grid label class + * + * @param string $class + * + * @return BootstrapFormField + */ + public function setGridLabelClass($class) { + $this->gridLabelClass = $class; + return $this->owner; + } + + /** + * Allows setting custom Grid input class to override from grid label class + * + * @param string $class + * + * @return BootstrapFormField + */ + public function setGridInputClass($class) { + $this->gridInputClass = $class; + return $this->owner; + } + + /** + * returns Grid label class to be used in templates + * + * @return integer + */ + public function GridLabelClass() { + return (trim($this->gridLabelClass)!='')?$this->gridLabelClass:$this->owner->form->gridLabelClass; + } + + /** + * returns Grid input class to be used in templates + * + * @return integer + */ + public function GridInputClass() { + return (trim($this->gridInputClass)!='')?$this->gridInputClass:$this->owner->form->gridInputClass; + } + + /** * checks for error messages in owner form field * adds error class to holder and loads error message as helptext @@ -178,22 +248,22 @@ private function loadErrorMessage() { $this->addHelpText($this->owner->message); } } - + /** * Adds the form-control class to *just* the formfield, not the holder. * This seems a bit of a hack, but addExtraClass() affects both the holder * and the field, so that's not a realistic option. We can't have form-control * on the wrapping div. - * - * @param FormField $field + * + * @param FormField $field */ - public function onBeforeRender (FormField $field) { - $inline_fields = Config::inst()->get('BootstrapForm','inline_fields'); + public function onBeforeRender (FormField $field) { + $inline_fields = Config::inst()->get('BootstrapForm','inline_fields'); - if(!in_array($field->class, $inline_fields )) { - $field->addExtraClass('form-control'); - } + if(!in_array($field->class, $inline_fields )) { + $field->addExtraClass('form-control'); + } } -} \ No newline at end of file +} diff --git a/templates/BootstrapFieldHolder.ss b/templates/BootstrapFieldHolder.ss index f7d072d..9479221 100755 --- a/templates/BootstrapFieldHolder.ss +++ b/templates/BootstrapFieldHolder.ss @@ -1,11 +1,12 @@
- - $Field + + <% if $BootstrapLayout=='horizontal' %>
<% end_if %> + $Field <% if $HelpText %>

$HelpText

<% end_if %> <% if $InlineHelpText %> $InlineHelpText - <% end_if %> + <% end_if %> +<% if $BootstrapLayout=='horizontal' %>
<% end_if %>
- diff --git a/templates/BootstrapForm.ss b/templates/BootstrapForm.ss index c7d21eb..0b6f209 100755 --- a/templates/BootstrapForm.ss +++ b/templates/BootstrapForm.ss @@ -4,15 +4,15 @@ <% if $Message %> <% if $MessageType == "good" %> - <% else_if MessageType == "info" %> + <% else_if $MessageType == "info" %> - <% else_if MessageType == "bad" %> + <% else_if $MessageType == "bad" %> <% end_if %> <% end_if %> - +
- <% if $Legend %>$Legend<% end_if %> + <% if $Legend %>$Legend<% end_if %> <% loop $Fields %> $FieldHolder <% end_loop %> @@ -20,11 +20,22 @@
<% if $Actions %> -
- <% loop $Actions %> - $Field - <% end_loop %> -
+ <% if $formLayout=='horizontal' %> +
+
+ <% else %> +
+ <% end_if %> + + <% loop $Actions %> + $Field + <% end_loop %> + + <% if $formLayout=='horizontal' %> +
+ <% end_if %> + +
<% end_if %> <% if $IncludeFormTag %> diff --git a/templates/BootstrapTextField_holder.ss b/templates/BootstrapTextField_holder.ss index 282ccdd..a2ae321 100755 --- a/templates/BootstrapTextField_holder.ss +++ b/templates/BootstrapTextField_holder.ss @@ -1,19 +1,25 @@ -
- +
+ + + <% if $BootstrapLayout=='horizontal' %>
<% end_if %> + + <% if $AppendedText || $PrependedText %>
<% end_if %> + <% if $PrependedText %> $PrependedText <% end_if %> - - $Field + + $Field <% if $AppendedText %> - $AppendedText + $AppendedText <% end_if %> - <% if HelpText %> -

$HelpText

- <% end_if %> - <% if InlineHelpText %> - $InlineHelpText - <% end_if %> + <% if $HelpText %>

$HelpText

<% end_if %> + + <% if $InlineHelpText %>$InlineHelpText<% end_if %> + + <% if $AppendedText || $PrependedText %>
<% end_if %> + + <% if $BootstrapLayout=='horizontal' %>
<% end_if %>