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 = [ '-' => 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 = []; 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'] = []; } 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'] = []; } if (!isset($_POST['w']['extra'])) { $_POST['w']['extra'] = []; } if (!isset($_POST['w']['custom'])) { $_POST['w']['custom'] = []; } $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->getOption('editor'); $rte_flag = true; $rte_flags = @$core->auth->user_prefs->interface->rte_flags; if (is_array($rte_flags) && in_array('widgets_text', $rte_flags)) { $rte_flag = $rte_flags['widgets_text']; } echo dcPage::cssLoad(dcPage::getPF('widgets/style.css')) . dcPage::jsLoad('js/jquery/jquery-ui.custom.js') . dcPage::jsLoad('js/jquery/jquery.ui.touch-punch.js') . dcPage::jsJson('widgets', [ 'widget_noeditor' => ($rte_flag ? 0 : 1), 'msg' => ['confirm_widgets_reset' => __('Are you sure you want to reset sidebars?')] ]) . dcPage::jsLoad(dcPage::getPF('widgets/js/widgets.js')); $core->auth->user_prefs->addWorkspace('accessibility'); $user_dm_nodragdrop = $core->auth->user_prefs->accessibility->nodragdrop; if (!$user_dm_nodragdrop) { echo dcPage::jsLoad(dcPage::getPF('widgets/js/dragdrop.js')); } if ($rte_flag) { echo $core->callBehavior('adminPostEditor', $widget_editor['xhtml'], 'widget', ['#sidebarsWidgets textarea:not(.noeditor)'], 'xhtml'); } echo (dcPage::jsConfirmClose('sidebarsWidgets')); ?> 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; } ?>