blog->settings->widgets->widgets_nav) { $widgets_nav = dcWidgets::load($core->blog->settings->widgets->widgets_nav); } $widgets_extra = null; if ($core->blog->settings->widgets->widgets_extra) { $widgets_extra = dcWidgets::load($core->blog->settings->widgets->widgets_extra); } $widgets_custom = null; if ($core->blog->settings->widgets->widgets_custom) { $widgets_custom = dcWidgets::load($core->blog->settings->widgets->widgets_custom); } $append_combo = array( '-' => 0, __('navigation') => 'nav', __('extra') => 'extra', __('custom') => 'custom' ); function literalNullString($v) { if ($v == '') { return '<'.__('empty string').'>'; } return $v; } # Adding widgets to sidebars if (!empty($_POST['append']) && is_array($_POST['addw'])) { # Filter selection $addw = array(); foreach ($_POST['addw'] as $k => $v) { if (($v == 'extra' || $v == 'nav' || $v == 'custom') && $__widgets->{$k} !== null ) { $addw[$k] = $v; } } # Append 1 widget $wid = false; if( gettype($_POST['append']) == 'array' && count($_POST['append']) == 1 ) { $wid = array_keys($_POST['append']); $wid = $wid[0]; } # Append widgets if (!empty($addw)) { if (!($widgets_nav instanceof dcWidgets)) { $widgets_nav = new dcWidgets; } if (!($widgets_extra instanceof dcWidgets)) { $widgets_extra = new dcWidgets(); } if (!($widgets_custom instanceof dcWidgets)) { $widgets_custom = new dcWidgets(); } foreach ($addw as $k => $v) { if( !$wid || $wid == $k ) { switch ($v) { case 'nav': $widgets_nav->append($__widgets->{$k}); break; case 'extra': $widgets_extra->append($__widgets->{$k}); break; case 'custom': $widgets_custom->append($__widgets->{$k}); break; } } } try { $core->blog->settings->addNamespace('widgets'); $core->blog->settings->widgets->put('widgets_nav',$widgets_nav->store()); $core->blog->settings->widgets->put('widgets_extra',$widgets_extra->store()); $core->blog->settings->widgets->put('widgets_custom',$widgets_custom->store()); $core->blog->triggerBlog(); http::redirect($p_url); } catch (Exception $e) { $core->error->add($e->getMessage()); } } } # Removing ? $removing = false; if ( isset($_POST['w']) && is_array($_POST['w']) ) { foreach ($_POST['w'] as $nsid => $nsw) { foreach ($nsw as $i => $v) { if (!empty($v['_rem'])) { $removing = true; break 2; } } } } # Move ? $move = false; if ( isset($_POST['w']) && is_array($_POST['w']) ) { foreach ($_POST['w'] as $nsid => $nsw) { foreach ($nsw as $i => $v) { if (!empty($v['_down'])) { $oldorder = $_POST['w'][$nsid][$i]['order']; $neworder = $oldorder + 1; if( isset($_POST['w'][$nsid][$neworder]) ) { $_POST['w'][$nsid][$i]['order'] = $neworder; $_POST['w'][$nsid][$neworder]['order'] = $oldorder; $move = true; } } if (!empty($v['_up'])) { $oldorder = $_POST['w'][$nsid][$i]['order']; $neworder = $oldorder - 1; if( isset($_POST['w'][$nsid][$neworder]) ) { $_POST['w'][$nsid][$i]['order'] = $neworder; $_POST['w'][$nsid][$neworder]['order'] = $oldorder; $move = true; } } } } } # Update sidebars if (!empty($_POST['wup']) || $removing || $move ) { if (!isset($_POST['w']) || !is_array($_POST['w'])) { $_POST['w'] = array(); } try { # Removing mark as _rem widgets foreach ($_POST['w'] as $nsid => $nsw) { foreach ($nsw as $i => $v) { if (!empty($v['_rem'])) { unset($_POST['w'][$nsid][$i]); continue; } } } if (!isset($_POST['w']['nav'])) { $_POST['w']['nav'] = array(); } if (!isset($_POST['w']['extra'])) { $_POST['w']['extra'] = array(); } if (!isset($_POST['w']['custom'])) { $_POST['w']['custom'] = array(); } $widgets_nav = dcWidgets::loadArray($_POST['w']['nav'],$__widgets); $widgets_extra = dcWidgets::loadArray($_POST['w']['extra'],$__widgets); $widgets_custom = dcWidgets::loadArray($_POST['w']['custom'],$__widgets); $core->blog->settings->addNamespace('widgets'); $core->blog->settings->widgets->put('widgets_nav',$widgets_nav->store()); $core->blog->settings->widgets->put('widgets_extra',$widgets_extra->store()); $core->blog->settings->widgets->put('widgets_custom',$widgets_custom->store()); $core->blog->triggerBlog(); dcPage::addSuccessNotice(__('Sidebars and their widgets have been saved.')); http::redirect($p_url); } catch (Exception $e) { $core->error->add($e->getMessage()); } } elseif (!empty($_POST['wreset'])) { try { $core->blog->settings->addNamespace('widgets'); $core->blog->settings->widgets->put('widgets_nav',''); $core->blog->settings->widgets->put('widgets_extra',''); $core->blog->settings->widgets->put('widgets_custom',''); $core->blog->triggerBlog(); dcPage::addSuccessNotice(__('Sidebars have been resetting.')); http::redirect($p_url); } catch (Exception $e) { $core->error->add($e->getMessage()); } } ?> <?php echo __('Widgets'); ?> auth->user_prefs->addWorkspace('accessibility'); $user_dm_nodragdrop = $core->auth->user_prefs->accessibility->nodragdrop; ?> callBehavior('adminPostEditor');?> blog->name) => '', __('Widgets') => '' )). dcPage::notices(); # All widgets echo '
'. '

'.__('Available widgets').'

'. '

'.__('Drag widgets from this list to one of the sidebars, for add.').'

'. ''. '

'.$core->formNonce().'

'. '

'. '
'; echo '
'; # Nav sidebar echo '
'. sidebarWidgets('dndnav',__('Navigation sidebar'),$widgets_nav,'nav',$__default_widgets['nav'],$j); echo '
'; # Extra sidebar echo '
'. sidebarWidgets('dndextra',__('Extra sidebar'),$widgets_extra,'extra',$__default_widgets['extra'],$j); echo '
'; # Custom sidebar echo '
'. sidebarWidgets('dndcustom',__('Custom sidebar'),$widgets_custom,'custom',$__default_widgets['custom'],$j); echo '
'; echo '

'. $core->formNonce(). ' '. '

'. '
'; $widget_elements = new stdClass; $widget_elements->content = '
'; foreach ($__widgets->elements() as $w) { $widget_elements->content .= '
'.html::escapeHTML($w->name()).' ('. __('Widget ID:').' '.html::escapeHTML($w->id()).')'. ($w->desc() != '' ? ' '.__($w->desc()).'' : '').'
'. '
'; $w_settings = $w->settings(); if (empty($w_settings)) { $widget_elements->content .= '

'.__('No setting for this widget').'

'; } else { $widget_elements->content .= ''; } $widget_elements->content .= '
'; } $widget_elements->content .= '
'; dcPage::helpBlock('widgets',$widget_elements); function sidebarWidgets($id,$title,$widgets,$pr,$default_widgets,&$j) { $res = '

'.$title.'

'; if (!($widgets instanceof dcWidgets)) { $widgets = $default_widgets; } $res .= ''; $res .= ''; return $res; } ?>