From 473ca701c05a27cd24acb8eeb03e3a52bfe8f46e Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Fri, 16 Aug 2019 11:06:24 +1200 Subject: [PATCH 1/6] FIX: Stub to allow installation in SS4 --- composer.json | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index f1b0beb..1004116 100755 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { "name": "unclecheese/bootstrap-forms", "description": "Allows you to create forms in SilverStripe that are compatible with Twitter Bootstrap.", - "type": "silverstripe-module", + "type": "silverstripe-vendormodule", "keywords": ["silverstripe", "bootstrap", "forms", "twitter"], "license": "BSD-3-Clause", "authors": [ @@ -12,9 +12,13 @@ ], "require": { - "silverstripe/framework": "3.*", - "silverstripe/cms": "3.*" + "silverstripe/framework": "^4, + "silverstripe/cms": ""^4" }, - "replace": {"silverstripe/bootstrap-forms": "*"} - + "replace": {"silverstripe/bootstrap-forms": "*"}, + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + } } From 288a870ec307921504b23078b20eee66412f1e5e Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Fri, 16 Aug 2019 11:07:24 +1200 Subject: [PATCH 2/6] FIX: Upgrade to SS4 class references --- code/BootstrapButtonGroupField.php | 5 +++++ code/BootstrapDropdownField.php | 5 +++++ code/BootstrapFieldList.php | 8 ++++++++ code/BootstrapForm.php | 4 ++++ code/BootstrapFormAction.php | 2 ++ code/BootstrapFormField.php | 5 +++++ code/BootstrapMemberLoginForm.php | 6 +++++- code/BootstrapUserForm.php | 2 ++ code/ChosenDropdownField.php | 4 ++++ code/ChosenListboxField.php | 3 +++ code/SimpleHtmlEditorField.php | 3 +++ 11 files changed, 46 insertions(+), 1 deletion(-) diff --git a/code/BootstrapButtonGroupField.php b/code/BootstrapButtonGroupField.php index 6244f53..60aafb4 100644 --- a/code/BootstrapButtonGroupField.php +++ b/code/BootstrapButtonGroupField.php @@ -1,5 +1,10 @@ Fields()->bootstrapify(); $this->Actions()->bootstrapify(); diff --git a/code/BootstrapUserForm.php b/code/BootstrapUserForm.php index 729b73e..b2d6eec 100644 --- a/code/BootstrapUserForm.php +++ b/code/BootstrapUserForm.php @@ -1,5 +1,7 @@ Date: Fri, 16 Aug 2019 11:12:45 +1200 Subject: [PATCH 3/6] NEW: Move code to namespace --- .upgrade.yml | 14 ++++++++++++++ code/BootstrapButtonGroupField.php | 2 ++ code/BootstrapDropdownField.php | 3 +++ code/BootstrapFieldList.php | 2 ++ code/BootstrapForm.php | 2 ++ code/BootstrapFormAction.php | 2 ++ code/BootstrapFormField.php | 2 ++ code/BootstrapMemberLoginForm.php | 2 ++ code/BootstrapOptionsetField.php | 3 +++ code/BootstrapTextField.php | 2 ++ code/BootstrapUserForm.php | 2 ++ code/ChosenDropdownField.php | 2 ++ code/ChosenListboxField.php | 2 ++ code/SimpleHtmlEditorField.php | 2 ++ composer.json | 24 +++++++++++++++--------- 15 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 .upgrade.yml diff --git a/.upgrade.yml b/.upgrade.yml new file mode 100644 index 0000000..06ad44d --- /dev/null +++ b/.upgrade.yml @@ -0,0 +1,14 @@ +mappings: + ChosenDropdownField: UncleCheese\BootstrapForms\ChosenDropdownField + BootstrapUserForm: UncleCheese\BootstrapForms\BootstrapUserForm + BootstrapFormAction: UncleCheese\BootstrapForms\BootstrapFormAction + BootstrapTextField: UncleCheese\BootstrapForms\BootstrapTextField + BootstrapFormField: UncleCheese\BootstrapForms\BootstrapFormField + ChosenListboxField: UncleCheese\BootstrapForms\ChosenListboxField + SimpleHtmlEditorField: UncleCheese\BootstrapForms\SimpleHtmlEditorField + BootstrapButtonGroupField: UncleCheese\BootstrapForms\BootstrapButtonGroupField + BootstrapDropdownField: UncleCheese\BootstrapForms\BootstrapDropdownField + BootstrapForm: UncleCheese\BootstrapForms\BootstrapForm + BootstrapFieldList: UncleCheese\BootstrapForms\BootstrapFieldList + BootstrapOptionsetField: UncleCheese\BootstrapForms\BootstrapOptionsetField + BootstrapMemberLoginForm: UncleCheese\BootstrapForms\BootstrapMemberLoginForm diff --git a/code/BootstrapButtonGroupField.php b/code/BootstrapButtonGroupField.php index 60aafb4..1f9bfde 100644 --- a/code/BootstrapButtonGroupField.php +++ b/code/BootstrapButtonGroupField.php @@ -1,5 +1,7 @@ Date: Fri, 16 Aug 2019 11:28:19 +1200 Subject: [PATCH 4/6] FIX: Correct class references in config.yml --- _config/config.yml | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/_config/config.yml b/_config/config.yml index 853ed32..9c11a1d 100644 --- a/_config/config.yml +++ b/_config/config.yml @@ -1,38 +1,39 @@ +--- name: BootstrapForm --- -BootstrapForm: +UncleCheese\BootstrapForms\BootstrapForm: bootstrap_included: false jquery_included: false bootstrap_form_included: false bootstrap_select_included: false inline_fields: - - CheckboxField - - FormAction -FormField: + - SilverStripe\Forms\CheckboxField + - SilverStripe\Forms\FormAction +SilverStripe\Forms\FormField: extensions: - - BootstrapFormField -TextField: + - UncleCheese\BootstrapForms\BootstrapFormField +SilverStripe\Forms\TextField: extensions: - - BootstrapTextField -OptionsetField: + - UncleCheese\BootstrapForms\BootstrapTextField +SilverStripe\Forms\OptionsetField: extensions: - - BootstrapOptionsetField -FormAction: + - UncleCheese\BootstrapForms\BootstrapOptionsetField +SilverStripe\Forms\FormAction: extensions: - - BootstrapFormAction -TextareaField: + - UncleCheese\BootstrapForms\BootstrapFormAction +SilverStripe\Forms\TextareaField: extensions: - - BootstrapTextField -FieldList: + - UncleCheese\BootstrapForms\BootstrapTextField +SilverStripe\Forms\FieldList: extensions: - - BootstrapFieldList -Injector: - MemberLoginForm: - class: BootstrapMemberLoginForm + - UncleCheese\BootstrapForms\BootstrapFieldList +SilverStripe\Core\Injector\Injector: + SilverStripe\Security\MemberAuthenticator\MemberLoginForm: + class: UncleCheese\BootstrapForms\BootstrapMemberLoginForm --- only: moduleexists: userforms --- -UserDefinedForm_Controller: +SilverStripe\UserForms\Control\UserDefinedFormController: extensions: - - BootstrapUserForm + - UncleCheese\BootstrapForms\BootstrapUserForm From ca90b8936decea255fe41111f3983df6547db126 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Fri, 16 Aug 2019 11:46:06 +1200 Subject: [PATCH 5/6] Move templates into namespace --- .../{ => UncleCheese/BootstrapForms}/BootstrapButtonGroupField.ss | 0 .../BootstrapForms}/BootstrapCheckboxField_holder.ss | 0 .../{ => UncleCheese/BootstrapForms}/BootstrapCheckboxSetField.ss | 0 .../{ => UncleCheese/BootstrapForms}/BootstrapFieldHolder.ss | 0 templates/{ => UncleCheese/BootstrapForms}/BootstrapForm.ss | 0 templates/{ => UncleCheese/BootstrapForms}/BootstrapFormAction.ss | 0 .../{ => UncleCheese/BootstrapForms}/BootstrapOptionsetField.ss | 0 templates/{ => UncleCheese/BootstrapForms}/BootstrapTabSet.ss | 0 .../{ => UncleCheese/BootstrapForms}/BootstrapTextField_holder.ss | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapButtonGroupField.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapCheckboxField_holder.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapCheckboxSetField.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapFieldHolder.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapForm.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapFormAction.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapOptionsetField.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapTabSet.ss (100%) rename templates/{ => UncleCheese/BootstrapForms}/BootstrapTextField_holder.ss (100%) diff --git a/templates/BootstrapButtonGroupField.ss b/templates/UncleCheese/BootstrapForms/BootstrapButtonGroupField.ss similarity index 100% rename from templates/BootstrapButtonGroupField.ss rename to templates/UncleCheese/BootstrapForms/BootstrapButtonGroupField.ss diff --git a/templates/BootstrapCheckboxField_holder.ss b/templates/UncleCheese/BootstrapForms/BootstrapCheckboxField_holder.ss similarity index 100% rename from templates/BootstrapCheckboxField_holder.ss rename to templates/UncleCheese/BootstrapForms/BootstrapCheckboxField_holder.ss diff --git a/templates/BootstrapCheckboxSetField.ss b/templates/UncleCheese/BootstrapForms/BootstrapCheckboxSetField.ss similarity index 100% rename from templates/BootstrapCheckboxSetField.ss rename to templates/UncleCheese/BootstrapForms/BootstrapCheckboxSetField.ss diff --git a/templates/BootstrapFieldHolder.ss b/templates/UncleCheese/BootstrapForms/BootstrapFieldHolder.ss similarity index 100% rename from templates/BootstrapFieldHolder.ss rename to templates/UncleCheese/BootstrapForms/BootstrapFieldHolder.ss diff --git a/templates/BootstrapForm.ss b/templates/UncleCheese/BootstrapForms/BootstrapForm.ss similarity index 100% rename from templates/BootstrapForm.ss rename to templates/UncleCheese/BootstrapForms/BootstrapForm.ss diff --git a/templates/BootstrapFormAction.ss b/templates/UncleCheese/BootstrapForms/BootstrapFormAction.ss similarity index 100% rename from templates/BootstrapFormAction.ss rename to templates/UncleCheese/BootstrapForms/BootstrapFormAction.ss diff --git a/templates/BootstrapOptionsetField.ss b/templates/UncleCheese/BootstrapForms/BootstrapOptionsetField.ss similarity index 100% rename from templates/BootstrapOptionsetField.ss rename to templates/UncleCheese/BootstrapForms/BootstrapOptionsetField.ss diff --git a/templates/BootstrapTabSet.ss b/templates/UncleCheese/BootstrapForms/BootstrapTabSet.ss similarity index 100% rename from templates/BootstrapTabSet.ss rename to templates/UncleCheese/BootstrapForms/BootstrapTabSet.ss diff --git a/templates/BootstrapTextField_holder.ss b/templates/UncleCheese/BootstrapForms/BootstrapTextField_holder.ss similarity index 100% rename from templates/BootstrapTextField_holder.ss rename to templates/UncleCheese/BootstrapForms/BootstrapTextField_holder.ss From 22d18cf5d4c7f50112131de4ed5d4ce455aa7496 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Fri, 16 Aug 2019 12:08:19 +1200 Subject: [PATCH 6/6] FIX: Various fixes for SS4 --- code/BootstrapFieldList.php | 21 +++++++++++---------- code/BootstrapForm.php | 6 +++--- code/BootstrapFormField.php | 4 ++-- code/BootstrapMemberLoginForm.php | 17 ++++++++++------- code/BootstrapTextField.php | 4 +--- 5 files changed, 27 insertions(+), 25 deletions(-) diff --git a/code/BootstrapFieldList.php b/code/BootstrapFieldList.php index 6cd2adb..ccc72ee 100644 --- a/code/BootstrapFieldList.php +++ b/code/BootstrapFieldList.php @@ -24,10 +24,10 @@ class BootstrapFieldList extends Extension { * Transforms all fields in the FieldList to use Bootstrap templates * @return FieldList */ - public function bootstrapify() { + public function bootstrapify() { foreach($this->owner as $f) { - $sng = Injector::inst()->get($f->class, true, ['dummy', '']); + $sng = Injector::inst()->get(get_class($f), true, ['dummy', '']); if(isset($this->ignores[$f->getName()])) continue; @@ -49,19 +49,20 @@ public function bootstrapify() { // If the user has customised the holder template already, don't apply the default one. if($sng->getFieldHolderTemplate() == $f->getFieldHolderTemplate()) { - $template = "Bootstrap{$f->class}_holder"; - if(SSViewer::hasTemplate($template)) { - $f->setFieldHolderTemplate($template); + $className = substr(strrchr(get_class($f), "\\"), 1); + $template = "UncleCheese\\BootstrapForms\\Bootstrap{$className}_holder"; + if(SSViewer::hasTemplate($template)) { + $f->setFieldHolderTemplate($template); } - else { - $f->setFieldHolderTemplate("BootstrapFieldHolder"); + else { + $f->setFieldHolderTemplate("UncleCheese\\BootstrapForms\\BootstrapFieldHolder"); } } // If the user has customised the field template already, don't apply the default one. if($sng->getTemplate() == $f->getTemplate()) { - foreach(array_reverse(ClassInfo::ancestry($f)) as $className) { + foreach(array_reverse(ClassInfo::ancestry($f)) as $className) { $bootstrapCandidate = "Bootstrap{$className}"; $nativeCandidate = $className; if(SSViewer::hasTemplate($bootstrapCandidate)) { @@ -78,12 +79,12 @@ public function bootstrapify() { } } - return $this->owner; + return $this->owner; } /** * Adds this field as ignored. Should not take on boostrap transformation - * + * * @param string $field The name of the form field * @return FieldList */ diff --git a/code/BootstrapForm.php b/code/BootstrapForm.php index bc033c7..dca35af 100755 --- a/code/BootstrapForm.php +++ b/code/BootstrapForm.php @@ -189,13 +189,13 @@ public function addWell() { */ public function forTemplate() { if($this->stat('bootstrap_included')!=false) { - Requirements::css(BOOTSTRAP_FORMS_DIR.'/css/bootstrap.css'); + Requirements::css('unclecheese/bootstrap-forms: css/bootstrap.css'); } if($this->stat('jquery_included')!=false) { - Requirements::javascript(THIRDPARTY_DIR."/jquery/jquery.js"); + Requirements::javascript('silverstripe/adimin: thirdparty/jquery/jquery.js'); } if(!$this->stat('bootstrap_form_included')!=false) { - Requirements::javascript(BOOTSTRAP_FORMS_DIR."/javascript/bootstrap_forms.js"); + Requirements::javascript('unclecheese/bootstrap-forms: javascript/bootstrap_forms.js'); } $this->addExtraClass("form-{$this->formLayout}"); diff --git a/code/BootstrapFormField.php b/code/BootstrapFormField.php index 188d213..33d55c7 100755 --- a/code/BootstrapFormField.php +++ b/code/BootstrapFormField.php @@ -265,9 +265,9 @@ private function loadErrorMessage() { * @param FormField $field */ public function onBeforeRender (FormField $field) { - $inline_fields = Config::inst()->get('BootstrapForm','inline_fields'); + $inline_fields = Config::inst()->get(BootstrapForm::class,'inline_fields'); - if(!in_array($field->class, $inline_fields )) { + if(!in_array(get_class($field), $inline_fields )) { $field->addExtraClass('form-control'); } } diff --git a/code/BootstrapMemberLoginForm.php b/code/BootstrapMemberLoginForm.php index bbb4a1b..fdbd150 100644 --- a/code/BootstrapMemberLoginForm.php +++ b/code/BootstrapMemberLoginForm.php @@ -7,12 +7,15 @@ use SilverStripe\Security\MemberAuthenticator\MemberLoginForm; class BootstrapMemberLoginForm extends MemberLoginForm { - - - public function __construct($controller = null, $name = null, $fields = null, $actions = null, $checkCurrentUser = true) { - if(!$controller) $controller = Controller::curr(); - if(!$name) $name = LoginForm::class; - parent::__construct($controller, $name, $fields, $actions, $checkCurrentUser); + public function __construct( + $controller, + $authenticatorClass, + $name, + $fields = null, + $actions = null, + $checkCurrentUser = true + ) { + parent::__construct($controller, $authenticatorClass, $name, $fields, $actions, $checkCurrentUser); $this->Fields()->bootstrapify(); $this->Actions()->bootstrapify(); $this->setTemplate("BootstrapForm"); @@ -20,4 +23,4 @@ public function __construct($controller = null, $name = null, $fields = null, $a $this->invokeWithExtensions('updateBoostrapMemberLoginForm', $this); } -} \ No newline at end of file +} diff --git a/code/BootstrapTextField.php b/code/BootstrapTextField.php index 991a9b0..b35ae44 100755 --- a/code/BootstrapTextField.php +++ b/code/BootstrapTextField.php @@ -24,8 +24,6 @@ public function prependText($text) { return $this->owner; } - - /** * Adds text immediately to the right, abut the form field * @@ -71,4 +69,4 @@ public function setSpan($span) { } -} \ No newline at end of file +}