5102 Posts in 1520 Topics by 1116 members
| Go to End | Next > | |
| Author | Topic: | 2497 Views |
-
Extending core classes (like Security)

31 March 2009 at 2:56am
Hi,
I was wondering how I could extend core classes within SilverStripe.
For example I want to extend Security and overrule setDefaultAdmin() and check_default_admin() to allow a hashed password to be used instead of plain-text.
I could of course alter Security.php itself, but I don't want to lose my changes when updating to a newer version.Any help would be much appreciated!
Cheers,
Geert -
Re: Extending core classes (like Security)

31 March 2009 at 6:47pm
The only solution I came up with so far is to copy Security.php to mysite/code/Security.php and make sure that get's loaded instead of the original one.
This is still gonna be a hassle upgrading though, but at least changes won't be overwritten this way.To further expand my question, how expendable / customizable is SilverStripe.
- What can be changed besides modules and templates?
- What are no goes?
- etc etcCheers
-
Re: Extending core classes (like Security)

1 April 2009 at 2:32am
Hi Geert,
Have you tried Object::useCustomClass('OldClass','NewClass')? Not sure if it will work for replacing Security as it only works for some classes. More details: http://silverstripe.org/template-questions/show/255567
Ben -
Re: Extending core classes (like Security)

1 April 2009 at 3:35am Last edited: 1 April 2009 3:36am
Hi Ben,
The problem there is that some functions are called statically (in particular the ones I want to overrule), so the class name should be the same.
Something like Object::useCustomClass('Security','Security'); is bound to fail.
So i think the problem still remains...
Thanks for your reply though.Also my other question about the limits of customization still remains.
Geert
-
Re: Extending core classes (like Security)

3 April 2009 at 9:17am
Sorry to bring this up again, but still looking for answers.
Thanks in advance -
Re: Extending core classes (like Security)

3 April 2009 at 9:16pm
Just an idea: Read a little about SVN and use the SS repository to get the source code and modify it like you want. To get a new version, just update the repository, and it merges edited files automatically.
-
Re: Extending core classes (like Security)

6 April 2009 at 7:24pm
The SVN option was already considered, but the preferred option would be to alter the CMS without actually modifying the source code.
With DataObject this can indeed be done perfectly, but as stated before this doesn't work that well on other classes. -
Re: Extending core classes (like Security)

14 February 2012 at 11:32pm Last edited: 14 February 2012 11:35pm
Although this is post is quite old, I'm having the same problem here. See below for the changes that I've hacked into Security.php (mostly it's commenting out the functionality for the tabs). Problem now is that I have to create CustomLoginForm.ss for all my other websites too, and that's not the idea here.
O, and my actual requirement: how can I load Security_login in a 100% custom template WITHOUT all kinds of JS and CSS stuff being put in (which is currently done by Security.php).
PS. I have tried <% control LoginForm %> in Security_login, but than the error messages ("wrong email/pass") are not shown
// // only display tabs when more than one authenticator is provided
// // to save bandwidth and reduce the amount of custom styling needed
// if(count($forms) > 1) {
// Requirements::javascript(SAPPHIRE_DIR . '/javascript/loader.js');
// Requirements::javascript(SAPPHIRE_DIR . "/thirdparty/prototype/prototype.js");
// Requirements::javascript(SAPPHIRE_DIR . "/thirdparty/behaviour/behaviour.js");
// Requirements::javascript(SAPPHIRE_DIR . "/javascript/prototype_improvements.js");
// Requirements::javascript(THIRDPARTY_DIR . "/scriptaculous/effects.js");
// Requirements::css(SAPPHIRE_DIR . "/css/Form.css");
//
// // Needed because the <base href=".."> in the template makes problems
// // with the tabstrip library otherwise
// $link_base = Director::absoluteURL($this->Link("login"));
//
// Requirements::javascript(THIRDPARTY_DIR . "/jquery/jquery.js");
// Requirements::javascript(SAPPHIRE_DIR . "/javascript/jquery_improvements.js");
// Requirements::javascript(THIRDPARTY_DIR . "/tabstrip/tabstrip.js");
// Requirements::css(THIRDPARTY_DIR . "/tabstrip/tabstrip.css");
//
// $content = '<div id="Form_EditForm">';
// $content .= '<ul class="tabstrip">';
// $content_forms = '';
//
// foreach($forms as $form) {
// $content .= "<li><a href=\"$link_base#{$form->FormName()}_tab\">{$form->getAuthenticator()->get_name()}</a></li>\n";
// $content_forms .= '<div class="tab" id="' . $form->FormName() . '_tab">' . $form->forTemplate() . "</div>\n";
// }
//
// $content .= "</ul>\n" . $content_forms . "\n</div>\n";
// } else {
// $content .= $forms[0]->forTemplate();
// }
$content .= $forms[0]->renderWith('CustomLoginForm');
| 2497 Views | ||
| Go to Top | Next > |


