From 7a15dfd48ddcc7c3e9d0c786de11cc8b1417638c Mon Sep 17 00:00:00 2001 From: Jake Jackson Date: Tue, 13 Dec 2016 14:34:01 +1100 Subject: [PATCH] Add four-column support in PDFs By default Gravity Forms only supports single, two and three columns layouts. However, this four-column CSS code https://gist.github.com/WebEndevSnippets/5555354 has become prominent. With that in mind, we've added support for these custom class types. --- src/helper/Helper_Field_Container.php | 14 ++++--- src/templates/blank-slate.php | 14 ++++++- src/templates/focus-gravity.php | 15 +++++++- src/templates/rubix.php | 15 +++++++- src/templates/zadani.php | 14 ++++++- .../unit-tests/test-field-container.php | 38 +++++++++++++++++++ 6 files changed, 97 insertions(+), 13 deletions(-) diff --git a/src/helper/Helper_Field_Container.php b/src/helper/Helper_Field_Container.php index c4383f0a7..14ed25a6b 100644 --- a/src/helper/Helper_Field_Container.php +++ b/src/helper/Helper_Field_Container.php @@ -71,11 +71,15 @@ class Helper_Field_Container { * @since 4.0 */ private $class_map = [ - 'gf_left_half' => 50, - 'gf_right_half' => 50, - 'gf_left_third' => 33.3, - 'gf_middle_third' => 33.3, - 'gf_right_third' => 33.3, + 'gf_left_half' => 50, + 'gf_right_half' => 50, + 'gf_left_third' => 33.3, + 'gf_middle_third' => 33.3, + 'gf_right_third' => 33.3, + 'gf_first_quarter' => 25, + 'gf_second_quarter' => 25, + 'gf_third_quarter' => 25, + 'gf_fourth_quarter' => 25, ]; /** diff --git a/src/templates/blank-slate.php b/src/templates/blank-slate.php index 529c6ab85..b1749ad4e 100644 --- a/src/templates/blank-slate.php +++ b/src/templates/blank-slate.php @@ -43,12 +43,14 @@ .gf_left_half, .gf_left_third, .gf_middle_third, + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_list_2col li, .gf_list_3col li, .gf_list_4col li, .gf_list_5col li { float: left; } .gf_right_half, - .gf_right_third { + .gf_right_third, + .gf_fourth_quarter { float: right; } @@ -62,6 +64,10 @@ width: 32.3%; } + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + width: 24%; + } + .gf_list_4col li { width: 24%; } @@ -78,7 +84,11 @@ padding-right: 1.505%; } - .gf_right_half, .gf_right_third { + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + padding-right: 1.333%; + } + + .gf_right_half, .gf_right_third, .gf_fourth_quarter { padding-right: 0; } diff --git a/src/templates/focus-gravity.php b/src/templates/focus-gravity.php index a41faf4b6..aa373da25 100644 --- a/src/templates/focus-gravity.php +++ b/src/templates/focus-gravity.php @@ -50,16 +50,19 @@ /* Handle Gravity Forms CSS Ready Classes */ .row-separator { clear: both; + padding: 1.25mm 0; } .gf_left_half, .gf_left_third, .gf_middle_third, + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_list_2col li, .gf_list_3col li, .gf_list_4col li, .gf_list_5col li { float: left; } .gf_right_half, - .gf_right_third { + .gf_right_third, + .gf_fourth_quarter { float: right; } @@ -73,6 +76,10 @@ width: 32.3%; } + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + width: 24%; + } + .gf_list_4col li { width: 24%; } @@ -89,7 +96,11 @@ padding-right: 1.505%; } - .gf_right_half, .gf_right_third { + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + padding-right: 1.333%; + } + + .gf_right_half, .gf_right_third, .gf_fourth_quarter { padding-right: 0; } diff --git a/src/templates/rubix.php b/src/templates/rubix.php index 8a8fc62ae..3c65646fc 100644 --- a/src/templates/rubix.php +++ b/src/templates/rubix.php @@ -47,16 +47,19 @@ /* Handle Gravity Forms CSS Ready Classes */ .row-separator { clear: both; + padding: 1.25mm 0; } .gf_left_half, .gf_left_third, .gf_middle_third, + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_list_2col li, .gf_list_3col li, .gf_list_4col li, .gf_list_5col li { float: left; } .gf_right_half, - .gf_right_third { + .gf_right_third, + .gf_fourth_quarter { float: right; } @@ -70,6 +73,10 @@ width: 32.3%; } + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + width: 24%; + } + .gf_list_4col li { width: 24%; } @@ -86,7 +93,11 @@ padding-right: 1.505%; } - .gf_right_half, .gf_right_third { + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + padding-right: 1.333%; + } + + .gf_right_half, .gf_right_third, .gf_fourth_quarter { padding-right: 0; } diff --git a/src/templates/zadani.php b/src/templates/zadani.php index e599293cb..83d42e7d5 100644 --- a/src/templates/zadani.php +++ b/src/templates/zadani.php @@ -48,12 +48,14 @@ .gf_left_half, .gf_left_third, .gf_middle_third, + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_list_2col li, .gf_list_3col li, .gf_list_4col li, .gf_list_5col li { float: left; } .gf_right_half, - .gf_right_third { + .gf_right_third, + .gf_fourth_quarter { float: right; } @@ -67,6 +69,10 @@ width: 32.3%; } + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + width: 24%; + } + .gf_list_4col li { width: 24%; } @@ -83,7 +89,11 @@ padding-right: 1.505%; } - .gf_right_half, .gf_right_third { + .gf_first_quarter, .gf_second_quarter, .gf_third_quarter, .gf_fourth_quarter { + padding-right: 1.333%; + } + + .gf_right_half, .gf_right_third, .gf_fourth_quarter { padding-right: 0; } diff --git a/tests/phpunit/unit-tests/test-field-container.php b/tests/phpunit/unit-tests/test-field-container.php index 6b3c56662..11c5ef16c 100644 --- a/tests/phpunit/unit-tests/test-field-container.php +++ b/tests/phpunit/unit-tests/test-field-container.php @@ -191,6 +191,44 @@ public function test_three_columns() { $this->assertEquals( '', $this->close() ); } + /** + * Check that four-columns give the correct output + * + * @since 4.1 + */ + public function test_four_columns() { + + $field = new GF_Field(); + $field->cssClass = 'gf_first_quarter'; + + /* Check it opens correctly */ + $this->assertEquals( '
', $this->generate( $field ) ); + + $field = new GF_Field(); + $field->cssClass = 'gf_second_quarter'; + + /* Check it does nothing */ + $this->assertEquals( '', $this->generate( $field ) ); + + $field = new GF_Field(); + $field->cssClass = 'gf_third_quarter'; + + /* Check it does nothing */ + $this->assertEquals( '', $this->generate( $field ) ); + + $field = new GF_Field(); + $field->cssClass = 'gf_fourth_quarter'; + + /* Check it does nothing */ + $this->assertEquals( '', $this->generate( $field ) ); + + /* Check the row closes / opens new row correctly */ + $this->assertEquals( '
', $this->generate( $field ) ); + + /* Check it now closes correctly */ + $this->assertEquals( '
', $this->close() ); + } + /** * Check that two and three column layouts can intermingle *