Snippets - Little bits of code to make you happy
-
SnippetsUsing canCreate(), canEdit(), canDelete() and canPublish() to manage page type permissions
23 June 2009 | | | Supports v2.4, v2.3
TweetOften you will want to control which users can create, edit, delete and publish certain page types. For example you may only want high level users to be able to create ContactPage page types, or prevent low level users from deleting HomePage page types. This can easily be achieved by adding these functions to the page type model (usually just before getCMSFields()). Then within the function you can define conditionals which decide whether to return true or false.
Continue reading... -
SnippetsChanging the CMS Help Link
10 June 2009 | |
TweetUsually you can change the CMS menu settings from your site configuration, but the "Help" link is hard-coded to allow for translations. This snippet, placed in your site configuration file will override the "Help" link with a link back to your site:
CMSMenu::add_link('Help', 'Home', Director::baseUrl());Continue reading... -
SnippetsDisplaying Fields From a Set of Pages on Another Page
25 May 2009 | | | Supports v2.4, v2.3
TweetAlthough ultimately requiring very little code, displaying data from a set of pages on another page can seem confusing for those new to SilverStripe. This example will display all of the Images from all the staff pages on our current page. This works by first returning all the staff pages to our template and cycling through each of them, drawing the Image for each one.
Continue reading... -
SnippetsAdding a Thumbnail to a DataObjectManager
21 May 2009 | | | Supports v2.4, v2.3
Tweet
This snippet lets you add a thumbnail to items in UncleCheese's Data Object Manager module or a regular Complex Table field. All you need to do is create a function that returns a thumbnail and refer to this function in your DOM or CTF definition.
Continue reading... -
SnippetsCreating a Page Export Function
6 May 2009 | | | Supports v2.4, v2.3
TweetNeed to create an 'export' function for a page? Do it quickly and cleanly with HTTP::sendFileToBrowser. In your page controller, add a new action 'export':
Continue reading... -
SnippetsCreate a CMS Field in 'Page' but not it's Descendants
26 April 2009 | |
TweetSometimes you may want a field to appear in pages of type Page but not in the other PageTypes which extend Page. To limit a field added via the function getCMSFields() is a simple case of adding an if() statement to test the current pages class.
Continue reading... -
SnippetsCreate and use a Permission code
18 April 2009 | | | Supports v2.4, v2.3
TweetHave you wanted to add an extra permission code that you can add to groups and then use that to test whether a particular user has that permission? Here's how it's done. The permission code it self is added via the Controller class, then you use a permission check anywhere in your site code to check the current user. Like so:
Continue reading... -
SnippetsGetting objects from multiple child pages
14 April 2009 | | | Supports v2.4, v2.3
TweetWhen you want to create a DataObjectSet encompasing objects from all the current pages children you can do something like this
$pageIDs = $this->getDescendantIDList(); $ObjectSet = DataObject::get( "Object", "`ObjectPageID` IN (" . implode(",", $pageIDs) . ")" );Continue reading... -
SnippetsCheck to see if a widget area has any widgets
5 April 2009 | |
TweetIf you want to check that a WidgetArea actually has widgets, and only display it if it has, you can add this function to your Page_Controller (where widgetBarID is the name of your widgetArea + ID)
function HasWidgets() { return DataObject::get("Widget", "ParentID = $this->WidgetbarID"); }Continue reading... -
SnippetsGet errors e-mailed to you
24 March 2009 | | | Supports v2.4
TweetIf your site is live it means you are probably not getting errors reported in the view, so it's handy to have them emailed to you so you can still debug and also be notified if something is up.
Add this line to your mysite/_config.php file and expect some mail!
SS_Log::add_writer(new SS_LogEmailWriter('me@mydomain.com'), SS_Log::ERR);
Continue reading... -
SnippetsResizing and Manipulating Images
22 March 2009 | | | Supports v2.4, v2.3
TweetYou can resize images from within the template very easily. But sometimes you need to resize it and just use the URL value, something you can't do by calling the resize on the variable directly (e.g. $Image.CroppedImage(200,200)). This is how we would create a cropped resize of it and still be able to use just the URL, allowing a custom <img> tag.
Continue reading...