Merge pull request #152 from sminnee/trac-7174

REMOVE: Remove action handler for widgets. (Trac #7174)
This commit is contained in:
Hamish Friedlander 2012-06-21 19:40:03 -07:00
commit 34ee111ff7
2 changed files with 0 additions and 118 deletions

View File

@ -22,10 +22,6 @@ class ContentController extends Controller {
protected $dataRecord;
static $url_handlers = array(
'widget/$ID!' => 'handleWidget'
);
public static $allowed_actions = array(
'successfullyinstalled',
'deleteinstallfiles' // secured through custom code
@ -215,52 +211,6 @@ class ContentController extends Controller {
throw new SS_HTTPResponse_Exception($response);
}
}
/**
* Handles widgets attached to a page through one or more {@link WidgetArea} elements.
* Iterated through each $has_one relation with a {@link WidgetArea}
* and looks for connected widgets by their database identifier.
* Assumes URLs in the following format: <URLSegment>/widget/<Widget-ID>.
*
* @return RequestHandler
*/
function handleWidget() {
$SQL_id = $this->request->param('ID');
if(!$SQL_id) return false;
// find WidgetArea relations
$widgetAreaRelations = array();
$hasOnes = $this->dataRecord->has_one();
if(!$hasOnes) return false;
foreach($hasOnes as $hasOneName => $hasOneClass) {
if($hasOneClass == 'WidgetArea' || is_subclass_of($hasOneClass, 'WidgetArea')) {
$widgetAreaRelations[] = $hasOneName;
}
}
// find widget
$widget = null;
foreach($widgetAreaRelations as $widgetAreaRelation) {
if($widget) break;
$widget = $this->dataRecord->$widgetAreaRelation()->Widgets(
sprintf('"Widget"."ID" = %d', $SQL_id)
)->First();
}
if(!$widget) user_error('No widget found', E_USER_ERROR);
// find controller
$controllerClass = '';
foreach(array_reverse(ClassInfo::ancestry($widget->class)) as $widgetClass) {
$controllerClass = "{$widgetClass}_Controller";
if(class_exists($controllerClass)) break;
}
if(!$controllerClass) user_error(
sprintf('No controller available for %s', $widget->class),
E_USER_ERROR
);
return new $controllerClass($widget);
}
/**
* Get the project name

View File

@ -1,68 +0,0 @@
div.availableWidgetsHolder {
width: 30%;
}
div.usedWidgetsHolder {
width: 66%;
}
div.availableWidgetsHolder {
float: left;
}
div.usedWidgetsHolder {
float: right;
}
.NoWidgets {
padding: 50px; /* Make this nice and big and easily 'droppable' */
}
div.usedWidgets div.Widget,
div.availableWidgets div.Widget {
width: 98%;
border: 1px solid #ddd;
border-top: none;
margin-bottom: 5px;
}
div.widgetDescription p,
div.widgetFields {
padding: 0 8px;
color: #666;
font-size: 11px;
}
p.deleteWidget {
margin: 0;
height: 22px;
line-height: 2.2;
font-size: 12px;
}
span.widgetDelete {
padding-left: 20px;
margin-right: 8px;
float: right;
background: url(../images/delete.gif) no-repeat left center;
cursor: pointer;
}
div.usedWidgets div.Widget h3,
div.availableWidgets div.Widget h3 {
font-size: 12px;
color: #fff;
line-height: 1.8;
padding: 0 5px;
margin: 0;
}
div.usedWidgets div.Widget h3 {
cursor: move;
background: #000 url(../images/handled-bg.png) right top;
}
div.availableWidgets div.Widget h3 {
cursor: pointer;
color: #444;
padding-right: 25px;
background: #ccc url(../images/add-bg.png) right center;
}
div.availableWidgets div.Widget h3:hover {
background: #ccc url(../images/add-bg-hover.png) right center;
}