248 lines
7.6 KiB
PHP
248 lines
7.6 KiB
PHP
<?php
|
|
|
|
function admin_widgets_head() {
|
|
global $lang;
|
|
echo '
|
|
<script>
|
|
/**
|
|
* FlatPress widget js admin
|
|
*/
|
|
var FlatPress = {
|
|
winstancedrag : function() {
|
|
$(\'.widget-class\').draggable({
|
|
\'scroll\' : true,
|
|
\'helper\' : function(event) {
|
|
return $(this).clone().appendTo(\'body\').removeClass(\'widget-class\').css({
|
|
\'position\': \'fixed\',
|
|
\'cursor\' : \'move\',
|
|
\'list-style-type\' : \'none\',
|
|
\'margin\' : \'0\',
|
|
\'padding\' : \'0\',
|
|
\'width\' : $(this).width(),
|
|
\'height\' : $(this).height()
|
|
})
|
|
.addClass(\'widget-available\');
|
|
}
|
|
});
|
|
$(\'.widget-instance\').draggable({
|
|
\'scroll\' : true,
|
|
\'helper\' : function(event) {
|
|
return $(this).clone().appendTo(\'body\').removeClass(\'widget-instance\').css({
|
|
\'position\': \'fixed\',
|
|
\'cursor\' : \'move\',
|
|
\'list-style-type\' : \'none\',
|
|
\'width\' : $(this).width(),
|
|
\'height\' : $(this).height()
|
|
})
|
|
.addClass(\'widget-installed\');
|
|
}
|
|
});
|
|
},
|
|
wplaceholder : function() {
|
|
$(\'.widget-placeholder\').droppable({
|
|
\'accept\' : \'.widget-class, .widget-instance\',
|
|
\'activeClass\' : \'ui-state-highlight\',
|
|
\'over\' : function(event, ui) {
|
|
$(this).effect("highlight", { \'color\' : $(\'.widget-installed, .widget-available\').css(\'background-color\') }, 1000);
|
|
},
|
|
\'drop\' : function(event, ui) {
|
|
var parent = ui.draggable.parent();
|
|
var where = $(this).parent().attr(\'id\').split(\'-\')[1];
|
|
var replace = null;
|
|
if (ui.draggable.hasClass(\'widget-instance\')) {
|
|
replace = ui.draggable;
|
|
}
|
|
else {
|
|
replace = $(\'<li class="\' + ui.draggable.attr(\'class\') + \'"></li>\').append(ui.draggable.children().clone());
|
|
replace.removeClass(\'widget-class\').addClass(\'widget-instance\');
|
|
}
|
|
replace.children(\'input\').attr(\'name\', \'widgets[\' + where + \'][]\');
|
|
$(this).replaceWith(replace);
|
|
|
|
if (parent.children().length < 1) {
|
|
parent.append(\'<li class="widget-placeholder">' . $lang ['admin'] ['widgets'] ['default'] ['drop_here'] . '</li>\');
|
|
}
|
|
FlatPress.wreload();
|
|
}
|
|
});
|
|
},
|
|
winstancedrop : function() {
|
|
$(\'.widget-instance\').droppable({
|
|
\'accept\' : \'.widget-class, .widget-instance\',
|
|
\'activeClass\' : \'ui-state-highlight\',
|
|
\'over\' : function(event, ui) {
|
|
$(this).effect("highlight", { \'color\' : $(\'.widget-available, .widget-installed\').css(\'background-color\') }, 1000);
|
|
},
|
|
\'drop\' : function(event, ui) {
|
|
var parent = ui.draggable.parent();
|
|
var where = $(this).parent().attr(\'id\').split(\'-\')[1];
|
|
var replace = null;
|
|
if (ui.draggable.hasClass(\'widget-instance\')) {
|
|
replace = ui.draggable;
|
|
}
|
|
else {
|
|
replace = $(\'<li class="\' + ui.draggable.attr(\'class\') + \'"></li>\').append(ui.draggable.children().clone());
|
|
replace.removeClass(\'widget-class\').addClass(\'widget-instance\');
|
|
}
|
|
replace.children(\'input\').attr(\'name\', \'widgets[\' + where + \'][]\');
|
|
$(this).after(replace);
|
|
if (parent.children().length < 1) {
|
|
parent.append(\'<li class="widget-placeholder">' . $lang ['admin'] ['widgets'] ['default'] ['drop_here'] . '</li>\');
|
|
}
|
|
FlatPress.wreload();
|
|
}
|
|
});
|
|
},
|
|
wtrash : function() {
|
|
$(\'#widget-trashcan\').droppable({
|
|
\'accept\' : \'.widget-instance\',
|
|
\'activeClass\' : \'ui-state-highlight\',
|
|
\'over\' : function(event, ui) {
|
|
$(this).fadeTo(\'slow\', 0.2).fadeTo(\'slow\', 1.0);
|
|
},
|
|
\'drop\' : function(event, ui) {
|
|
var parent = ui.draggable.parent();
|
|
var draggable = $(ui.draggable);
|
|
$(\'.widget-installed\').remove();
|
|
if(parent.children().length < 2) {
|
|
parent.append(\'<li class="widget-placeholder">' . $lang ['admin'] ['widgets'] ['default'] ['drop_here'] . '</li>\');
|
|
}
|
|
setTimeout(function() {
|
|
draggable.remove();
|
|
});
|
|
FlatPress.wreload();
|
|
}
|
|
});
|
|
$(\'.widget-class\').droppable({
|
|
\'accept\' : \'.widget-instance\',
|
|
\'activeClass\' : \'ui-state-highlight\',
|
|
\'over\' : function(event, ui) {
|
|
$(this).effect("highlight", { \'color\' : $(\'#widget-trashcan\').css(\'background-color\') }, 1000);
|
|
},
|
|
\'drop\' : function(event, ui) {
|
|
var parent = ui.draggable.parent();
|
|
var draggable = $(ui.draggable);
|
|
$(\'.widget-installed\').remove();
|
|
if(parent.children().length < 2) {
|
|
parent.append(\'<li class="widget-placeholder">' . $lang ['admin'] ['widgets'] ['default'] ['drop_here'] . '</li>\');
|
|
}
|
|
setTimeout(function() {
|
|
draggable.remove();
|
|
});
|
|
FlatPress.wreload();
|
|
}
|
|
});
|
|
|
|
},
|
|
wreload : function(){
|
|
this.winstancedrag();
|
|
this.winstancedrop();
|
|
this.wplaceholder();
|
|
}
|
|
}
|
|
FlatPress.wreload();FlatPress.wtrash();
|
|
</script>';
|
|
}
|
|
add_action('wp_footer', 'admin_widgets_head');
|
|
|
|
class admin_widgets_default extends AdminPanelAction {
|
|
|
|
// var $validators = array(array('content', 'content', 'notEmpty', false, false));
|
|
var $events = array(
|
|
'save'
|
|
);
|
|
|
|
function get_widget_lists($wlist, $wpos, &$widget_list, $registered_w, $add_empties) {
|
|
if (!isset($wlist [$wpos]))
|
|
return;
|
|
|
|
$widget_list [$wpos] = array();
|
|
|
|
foreach ($wlist [$wpos] as $idx => $wdg) {
|
|
|
|
$widget_list [$wpos] [$idx] = array();
|
|
|
|
$newid = $wdg; // @list($newid, $params) = explode(":", $wdg);
|
|
|
|
$widget_list [$wpos] [$idx] ['id'] = $newid;
|
|
|
|
if (isset($registered_w [$newid])) {
|
|
$thiswdg = $registered_w [$newid];
|
|
|
|
$widget_list [$wpos] [$idx] ['name'] = $thiswdg ['name'];
|
|
|
|
if ($thiswdg ['nparams'] > 0) {
|
|
$widget_list [$wpos] [$idx] ['params'] = $params;
|
|
}
|
|
|
|
/*
|
|
* here should go the check for
|
|
* limited parameters: parameters limited to a
|
|
* particular set would mean using a <select> control
|
|
* in the template
|
|
*
|
|
*/
|
|
} else {
|
|
|
|
global $lang;
|
|
|
|
$widget_list [$wpos] [$idx] ['name'] = $newid;
|
|
$widget_list [$wpos] [$idx] ['class'] = 'errors';
|
|
|
|
$errs = sprintf($lang ['admin'] ['widgets'] ['errors'] ['generic'], $newid);
|
|
$this->smarty->append('warnings', $errs);
|
|
}
|
|
}
|
|
|
|
if (!$widget_list [$wpos] && !$add_empties)
|
|
unset($widget_list [$wpos]);
|
|
}
|
|
|
|
function main() {
|
|
lang_load('admin.widgets');
|
|
// $this->smarty->assign('warnings', admin_widgets_checkall());
|
|
global $fp_widgets;
|
|
|
|
$registered_w = get_registered_widgets();
|
|
$registered_ws = get_registered_widgetsets(null);
|
|
$this->smarty->assign('fp_registered_widgets', $registered_w);
|
|
|
|
$wlist = $fp_widgets->getList();
|
|
$widget_list = array();
|
|
|
|
foreach ($registered_ws as $wpos) {
|
|
|
|
$widget_list [$wpos] = array();
|
|
|
|
$this->get_widget_lists($wlist, $wpos, $widget_list, $registered_w, true);
|
|
|
|
unset($wlist [$wpos]);
|
|
}
|
|
|
|
$oldwidget_list = array();
|
|
foreach ($wlist as $wpos => $c) {
|
|
$this->get_widget_lists($wlist, $wpos, $oldwidget_list, $registered_w, false);
|
|
}
|
|
|
|
$this->smarty->assign('widgetlist', $widget_list);
|
|
$this->smarty->assign('oldwidgetlist', $oldwidget_list);
|
|
|
|
$conf = io_load_file(CONFIG_DIR . 'widgets.conf.php');
|
|
|
|
$this->smarty->assign('pluginconf', $conf);
|
|
|
|
return 0;
|
|
}
|
|
|
|
function onsave() {
|
|
$fp_widgets = isset($_POST ['widgets']) ? $_POST ['widgets'] : array();
|
|
$success = system_save(CONFIG_DIR . 'widgets.conf.php', compact('fp_widgets'));
|
|
|
|
$this->smarty->assign('success', ($success) ? 1 : -1);
|
|
|
|
return PANEL_REDIRECT_CURRENT;
|
|
}
|
|
|
|
}
|
|
?>
|