Moved widgets into core

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@39562 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Andrew O'Neil 2007-08-02 22:07:11 +00:00
parent 5308e76142
commit f545953c18
4 changed files with 109 additions and 0 deletions

3
templates/WidgetArea.ss Normal file
View File

@ -0,0 +1,3 @@
<% control Widgets %>
$WidgetHolder
<% end_control %>

View File

@ -0,0 +1,2 @@
<h3>$Title</h3>
$Content

89
widgets/Widget.php Normal file
View File

@ -0,0 +1,89 @@
<?php
class Widget extends DataObject {
static $db = array(
"ParentID" => "Int",
"Sort" => "Int"
);
static $default_sort = "Sort";
static $title = "Widget Title";
static $cmsTitle = "Name of this widget";
static $description = "Description of what this widget does.";
function getCMSFields() {
return new FieldSet();
}
function WidgetHolder() {
return $this->renderWith("WidgetHolder");
}
function Content() {
return $this->renderWith($this->class);
}
function Title() {
$instance = singleton($this->class);
return $instance->uninherited('title', true);
}
function CMSTitle() {
$instance = singleton($this->class);
return $instance->uninherited('cmsTitle', true);
}
function Description() {
$instance = singleton($this->class);
return $instance->uninherited('description', true);
}
function DescriptionSegment() {
return $this->renderWith('WidgetDescription');
}
function EditableSegment() {
return $this->renderWith('WidgetEditor');
}
function CMSEditor() {
$output = '';
$fields = $this->getCMSFields();
foreach($fields as $field) {
$name = $field->Name();
$field->setValue($this->getField($name));
$renderedField = $field->FieldHolder();
$renderedField = ereg_replace("name=\"([A-Za-z0-9\-_]+)\"", "name=\"Widget[" . $this->ID . "][\\1]\"", $renderedField);
$renderedField = ereg_replace("id=\"([A-Za-z0-9\-_]+)\"", "id=\"Widget[" . $this->ID . "][\\1]\"", $renderedField);
$output .= $renderedField;
}
return $output;
}
function ClassName() {
return $this->class;
}
function Name() {
return "Widget[".$this->ID."]";
}
function populateFromPostData($data) {
foreach($data as $name => $value) {
if($name != "Type") {
$this->setField($name, $value);
}
}
$this->write();
// The field must be written to ensure a unique ID.
$this->Name = $this->class.$this->ID;
$this->write();
}
}
?>

15
widgets/WidgetArea.php Normal file
View File

@ -0,0 +1,15 @@
<?php
class WidgetArea extends DataObject {
static $db = array();
static $has_many = array(
"Widgets" => "Widget"
);
function forTemplate() {
return $this->renderWith("WidgetArea");
}
}
?>