Dotclear

source: plugins/themeEditor/_admin.php @ 3703:53c8bef8608a

Revision 3703:53c8bef8608a, 4.6 KB checked in by franck <carnet.franck.paul@…>, 8 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
14if (!isset($__resources['help']['themeEditor'])) {
15    $__resources['help']['themeEditor'] = dirname(__FILE__) . '/help.html';
16}
17
18$core->addBehavior('adminCurrentThemeDetails', array('themeEditorBehaviors', 'theme_editor_details'));
19
20$core->addBehavior('adminBeforeUserOptionsUpdate', array('themeEditorBehaviors', 'adminBeforeUserUpdate'));
21$core->addBehavior('adminPreferencesForm', array('themeEditorBehaviors', 'adminPreferencesForm'));
22
23class themeEditorBehaviors
24{
25    public static function theme_editor_details($core, $id)
26    {
27        if ($id != 'default' && $core->auth->isSuperAdmin()) {
28            return '<p><a href="' . $core->adminurl->get('admin.plugin.themeEditor') . '" class="button">' . __('Edit theme files') . '</a></p>';
29        }
30    }
31
32    public static function adminBeforeUserUpdate($cur, $userID)
33    {
34        global $core;
35
36        // Get and store user's prefs for plugin options
37        $core->auth->user_prefs->addWorkspace('interface');
38        try {
39            $core->auth->user_prefs->interface->put('colorsyntax', !empty($_POST['colorsyntax']), 'boolean');
40            $core->auth->user_prefs->interface->put('colorsyntax_theme',
41                (!empty($_POST['colorsyntax_theme']) ? $_POST['colorsyntax_theme'] : ''));
42        } catch (Exception $e) {
43            $core->error->add($e->getMessage());
44        }
45    }
46
47    public static function adminPreferencesForm($core)
48    {
49        // Add fieldset for plugin options
50        $core->auth->user_prefs->addWorkspace('interface');
51
52        $themes_list  = dcPage::getCodeMirrorThemes();
53        $themes_combo = array(__('Default') => '');
54        foreach ($themes_list as $theme) {
55            $themes_combo[$theme] = $theme;
56        }
57
58        echo
59        '<div class="fieldset two-cols clearfix">' .
60        '<h5 id="themeEditor_prefs">' . __('Syntax highlighting') . '</h5>';
61        echo
62        '<div class="col">' .
63        '<p><label for="colorsyntax" class="classic">' .
64        form::checkbox('colorsyntax', 1, $core->auth->user_prefs->interface->colorsyntax) . '</label>' .
65        __('Syntax highlighting in theme editor') .
66            '</p>';
67        if (count($themes_combo) > 1) {
68            echo
69            '<p><label for="colorsyntax_theme" class="classic">' . __('Theme:') . '</label> ' .
70            form::combo('colorsyntax_theme', $themes_combo,
71                array(
72                    'default'    => $core->auth->user_prefs->interface->colorsyntax_theme,
73                    'extra_html' => 'onchange="selectTheme()"')) .
74                '</p>';
75        } else {
76            echo form::hidden('colorsyntax_theme', '');
77        }
78        echo '</div>';
79        echo '<div class="col">';
80        echo dcPage::jsLoadCodeMirror('', false, array('javascript'));
81        foreach ($themes_list as $theme) {
82            echo dcPage::cssLoad('js/codemirror/theme/' . $theme . '.css');
83        }
84        echo '
85<textarea id="codemirror" name="codemirror">
86function findSequence(goal) {
87  function find(start, history) {
88    if (start == goal)
89      return history;
90    else if (start > goal)
91      return null;
92    else
93      return find(start + 5, "(" + history + " + 5)") ||
94             find(start * 3, "(" + history + " * 3)");
95  }
96  return find(1, "1");
97}</textarea>';
98        echo
99            '<script>
100            var input = document.getElementById("colorsyntax_theme");
101            var theme = input.options[input.selectedIndex].textContent;
102            var editor = CodeMirror.fromTextArea(document.getElementById("codemirror"), {
103                mode: "javascript",
104                tabMode: "indent",
105                lineWrapping: 1,
106                lineNumbers: 1,
107                matchBrackets: 1,
108                autoCloseBrackets: 1,
109                theme: "' . ($core->auth->user_prefs->interface->colorsyntax_theme != '' ? $core->auth->user_prefs->interface->colorsyntax_theme : 'default') . '"
110            });
111            function selectTheme() {
112                var input = document.getElementById("colorsyntax_theme");
113                var theme = input.options[input.selectedIndex].value;
114                if (theme == "") theme = "default";
115                editor.setOption("theme", theme);
116                editor.refresh();
117            }
118        </script>';
119        echo '</div>';
120        echo '</div>';
121    }
122}
Note: See TracBrowser for help on using the repository browser.

Sites map