Dotclear

source: plugins/userPref/index.php @ 3703:53c8bef8608a

Revision 3703:53c8bef8608a, 7.3 KB checked in by franck <carnet.franck.paul@…>, 7 years ago (diff)

Use array form of optionnal parameters for form::combo(), code formatting (PSR-2)

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_CONTEXT_ADMIN')) {return;}
13
14# Local navigation
15if (!empty($_POST['gp_nav'])) {
16    http::redirect($p_url . $_POST['gp_nav']);
17    exit;
18}
19if (!empty($_POST['lp_nav'])) {
20    http::redirect($p_url . $_POST['lp_nav']);
21    exit;
22}
23
24# Local prefs update
25if (!empty($_POST['s']) && is_array($_POST['s'])) {
26    try
27    {
28        foreach ($_POST['s'] as $ws => $s) {
29            $core->auth->user_prefs->addWorkspace($ws);
30            foreach ($s as $k => $v) {
31                if ($_POST['s_type'][$ws][$k] == 'array') {
32                    $v = json_decode($v, true);
33                }
34                $core->auth->user_prefs->$ws->put($k, $v);
35            }
36        }
37
38        dcPage::addSuccessNotice(__('Preferences successfully updated'));
39        http::redirect($p_url);
40    } catch (Exception $e) {
41        $core->error->add($e->getMessage());
42    }
43}
44
45# Global prefs update
46if (!empty($_POST['gs']) && is_array($_POST['gs'])) {
47    try
48    {
49        foreach ($_POST['gs'] as $ws => $s) {
50            $core->auth->user_prefs->addWorkspace($ws);
51            foreach ($s as $k => $v) {
52                if ($_POST['gs_type'][$ws][$k] == 'array') {
53                    $v = json_decode($v, true);
54                }
55                $core->auth->user_prefs->$ws->put($k, $v, null, null, true, true);
56            }
57        }
58
59        dcPage::addSuccessNotice(__('Preferences successfully updated'));
60        http::redirect($p_url . '&part=global');
61    } catch (Exception $e) {
62        $core->error->add($e->getMessage());
63    }
64}
65
66$part = !empty($_GET['part']) && $_GET['part'] == 'global' ? 'global' : 'local';
67
68function prefLine($id, $s, $ws, $field_name, $strong_label)
69{
70    if ($s['type'] == 'boolean') {
71        $field = form::combo(array($field_name . '[' . $ws . '][' . $id . ']', $field_name . '_' . $ws . '_' . $id),
72            array(__('yes') => 1, __('no') => 0), $s['value'] ? 1 : 0);
73    } else {
74        if ($s['type'] == 'array') {
75            $field = form::field(array($field_name . '[' . $ws . '][' . $id . ']', $field_name . '_' . $ws . '_' . $id), 40, null,
76                html::escapeHTML(json_encode($s['value'])));
77        } else {
78            $field = form::field(array($field_name . '[' . $ws . '][' . $id . ']', $field_name . '_' . $ws . '_' . $id), 40, null,
79                html::escapeHTML($s['value']));
80        }
81    }
82    $type = form::hidden(array($field_name . '_type' . '[' . $ws . '][' . $id . ']', $field_name . '_' . $ws . '_' . $id . '_type'),
83        html::escapeHTML($s['type']));
84
85    $slabel = $strong_label ? '<strong>%s</strong>' : '%s';
86
87    return
88    '<tr class="line">' .
89    '<td scope="row"><label for="' . $field_name . '_' . $ws . '_' . $id . '">' . sprintf($slabel, html::escapeHTML($id)) . '</label></td>' .
90    '<td>' . $field . '</td>' .
91    '<td>' . $s['type'] . $type . '</td>' .
92    '<td>' . html::escapeHTML($s['label']) . '</td>' .
93        '</tr>';
94}
95?>
96<html>
97<head>
98  <title>user:preferences</title>
99  <?php echo dcPage::jsPageTabs($part); ?>
100    <script type="text/javascript">
101    $(function() {
102        $("#gp_submit,#lp_submit").hide();
103        $('#part-local,#part-global').tabload(function() {
104            $('.multi-part.active select.navigation option:first').attr('selected',true);
105        });
106        $("#gp_nav").change(function() {
107            window.location = $("#gp_nav option:selected").val();
108        });
109        $("#lp_nav").change(function() {
110            window.location = $("#lp_nav option:selected").val();
111        });
112    });
113    </script>
114</head>
115
116<body>
117<?php
118echo dcPage::breadcrumb(
119    array(
120        __('System')                            => '',
121        html::escapeHTML($core->auth->userID()) => '',
122        __('user:preferences')                  => ''
123    )) .
124dcPage::notices();
125
126?>
127
128<div id="local" class="multi-part" title="<?php echo __('User preferences'); ?>">
129<h3 class="out-of-screen-if-js"><?php echo __('User preferences'); ?></h3>
130
131<?php
132$table_header = '<div class="table-outer"><table class="prefs" id="%s"><caption class="as_h3">%s</caption>' .
133'<thead>' .
134'<tr>' . "\n" .
135'  <th class="nowrap">' . __('Setting ID') . '</th>' . "\n" .
136'  <th>' . __('Value') . '</th>' . "\n" .
137'  <th>' . __('Type') . '</th>' . "\n" .
138'  <th class="maximalx">' . __('Description') . '</th>' . "\n" .
139    '</tr>' . "\n" .
140    '</thead>' . "\n" .
141    '<tbody>';
142$table_footer = '</tbody></table></div>';
143
144$prefs = array();
145foreach ($core->auth->user_prefs->dumpWorkspaces() as $ws => $workspace) {
146    foreach ($workspace->dumpPrefs() as $k => $v) {
147        $prefs[$ws][$k] = $v;
148    }
149}
150ksort($prefs);
151if (count($prefs) > 0) {
152    $ws_combo = array();
153    foreach ($prefs as $ws => $s) {
154        $ws_combo[$ws] = '#l_' . $ws;
155    }
156    echo
157    '<form action="' . $core->adminurl->get('admin.plugin') . '" method="post">' .
158    '<p class="anchor-nav">' .
159    '<label for="lp_nav" class="classic">' . __('Goto:') . '</label> ' .
160    form::combo('lp_nav', $ws_combo, array('class' => 'navigation')) .
161    ' <input type="submit" value="' . __('Ok') . '" id="lp_submit" />' .
162    '<input type="hidden" name="p" value="userPref" />' .
163    $core->formNonce() . '</p></form>';
164}
165?>
166
167<form action="<?php echo $core->adminurl->get('admin.plugin'); ?>" method="post">
168
169<?php
170foreach ($prefs as $ws => $s) {
171    ksort($s);
172    echo sprintf($table_header, 'l_' . $ws, $ws);
173    foreach ($s as $k => $v) {
174        echo prefLine($k, $v, $ws, 's', !$v['global']);
175    }
176    echo $table_footer;
177}
178?>
179
180<p><input type="submit" value="<?php echo __('Save'); ?>" />
181<input type="hidden" name="p" value="userPref" />
182<?php echo $core->formNonce(); ?></p>
183</form>
184</div>
185
186<div id="global" class="multi-part" title="<?php echo __('Global preferences'); ?>">
187<h3 class="out-of-screen-if-js"><?php echo __('Global preferences'); ?></h3>
188
189<?php
190$prefs = array();
191
192foreach ($core->auth->user_prefs->dumpWorkspaces() as $ws => $workspace) {
193    foreach ($workspace->dumpGlobalPrefs() as $k => $v) {
194        $prefs[$ws][$k] = $v;
195    }
196}
197
198ksort($prefs);
199
200if (count($prefs) > 0) {
201    $ws_combo = array();
202    foreach ($prefs as $ws => $s) {
203        $ws_combo[$ws] = '#g_' . $ws;
204    }
205    echo
206    '<form action="' . $core->adminurl->get('admin.plugin') . '" method="post">' .
207    '<p class="anchor-nav">' .
208    '<label for="gp_nav" class="classic">' . __('Goto:') . '</label> ' .
209    form::combo('gp_nav', $ws_combo, array('class' => 'navigation')) .
210    ' <input type="submit" value="' . __('Ok') . '" id="gp_submit" />' .
211    '<input type="hidden" name="p" value="userPref" />' .
212    $core->formNonce() . '</p></form>';
213}
214?>
215
216<form action="<?php echo $core->adminurl->get('admin.plugin'); ?>" method="post">
217
218<?php
219foreach ($prefs as $ws => $s) {
220    ksort($s);
221    echo sprintf($table_header, 'g_' . $ws, $ws);
222    foreach ($s as $k => $v) {
223        echo prefLine($k, $v, $ws, 'gs', false);
224    }
225    echo $table_footer;
226}
227?>
228
229<p><input type="submit" value="<?php echo __('Save'); ?>" />
230<input type="hidden" name="p" value="userPref" />
231<?php echo $core->formNonce(); ?></p>
232</form>
233</div>
234
235<?php dcPage::helpBlock('userPref');?>
236
237</body>
238</html>
Note: See TracBrowser for help on using the repository browser.

Sites map