Dotclear

source: themes/ductile/_config.php @ 2829:83fd86bd22a3

Revision 2829:83fd86bd22a3, 21.6 KB checked in by franck <carnet.franck.paul@…>, 11 years ago (diff)

Typo

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3# This file is part of Ductile, a theme for Dotclear
4#
5# Copyright (c) 2011 - Association Dotclear
6# Licensed under the GPL version 2.0 license.
7# See LICENSE file or
8# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
9#
10# -- END LICENSE BLOCK -----------------------------------------
11if (!defined('DC_CONTEXT_ADMIN')) { return; }
12
13l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/admin');
14
15if (preg_match('#^http(s)?://#',$core->blog->settings->system->themes_url)) {
16     $img_url = http::concatURL($core->blog->settings->system->themes_url,'/'.$core->blog->settings->system->theme.'/img/');
17} else {
18     $img_url = http::concatURL($core->blog->url,$core->blog->settings->system->themes_url.'/'.$core->blog->settings->system->theme.'/img/');
19}
20$img_path = dirname(__FILE__).'/img/';
21
22$tpl_path = dirname(__FILE__).'/tpl/';
23
24$standalone_config = (boolean) $core->themes->moduleInfo($core->blog->settings->system->theme,'standalone_config');
25
26// Load contextual help
27if (file_exists(dirname(__FILE__).'/locales/'.$_lang.'/resources.php')) {
28     require dirname(__FILE__).'/locales/'.$_lang.'/resources.php';
29}
30
31$list_types = array(
32     __('Title') => 'title',
33     __('Short') => 'short',
34     __('Full') => 'full'
35);
36// Get all _entry-*.html in tpl folder of theme
37$list_types_templates = files::scandir($tpl_path);
38if (is_array($list_types_templates)) {
39     foreach ($list_types_templates as $v) {
40          if (preg_match('/^_entry\-(.*)\.html$/',$v,$m)) {
41               if (isset($m[1])) {
42                    if (!in_array($m[1],$list_types)) {
43                         // template not already in full list
44                         $list_types[__($m[1])] = $m[1];
45                    }
46               }
47          }
48     }
49}
50
51$contexts = array(
52     'default' => __('Home (first page)'),
53     'default-page' => __('Home (other pages)'),
54     'category' => __('Entries for a category'),
55     'tag' => __('Entries for a tag'),
56     'search' => __('Search result entries'),
57     'archive' => __('Month archive entries')
58);
59
60$fonts = array(
61     __('Default') => '',
62     __('Ductile primary') => 'Ductile body',
63     __('Ductile secondary') => 'Ductile alternate',
64     __('Times New Roman') => 'Times New Roman',
65     __('Georgia') => 'Georgia',
66     __('Garamond') => 'Garamond',
67     __('Helvetica/Arial') => 'Helvetica/Arial',
68     __('Verdana') => 'Verdana',
69     __('Trebuchet MS') => 'Trebuchet MS',
70     __('Impact') => 'Impact',
71     __('Monospace') => 'Monospace'
72);
73
74$webfont_apis = array(
75     __('none') => '',
76     __('javascript (Adobe)') => 'js',
77     __('stylesheet (Google)') => 'css'
78);
79
80$font_families = array(
81     // Theme standard
82     'Ductile body' => '"Century Schoolbook", "Century Schoolbook L", Georgia, serif',
83     'Ductile alternate' => '"Franklin gothic medium", "arial narrow", "DejaVu Sans Condensed", "helvetica neue", helvetica, sans-serif',
84
85     // Serif families
86     'Times New Roman' => 'Cambria, "Hoefler Text", Utopia, "Liberation Serif", "Nimbus Roman No9 L Regular", Times, "Times New Roman", serif',
87     'Georgia' => 'Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif", "Bitstream Vera Serif", "Liberation Serif", Georgia, serif',
88     'Garamond' => '"Palatino Linotype", Palatino, Palladio, "URW Palladio L", "Book Antiqua", Baskerville, "Bookman Old Style", "Bitstream Charter", "Nimbus Roman No9 L", Garamond, "Apple Garamond", "ITC Garamond Narrow", "New Century Schoolbook", "Century Schoolbook", "Century Schoolbook L", Georgia, serif',
89
90     // Sans-serif families
91     'Helvetica/Arial' => 'Frutiger, "Frutiger Linotype", Univers, Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif',
92     'Verdana' => 'Corbel, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", "DejaVu Sans", "Bitstream Vera Sans", "Liberation Sans", Verdana, "Verdana Ref", sans-serif',
93     'Trebuchet MS' => '"Segoe UI", Candara, "Bitstream Vera Sans", "DejaVu Sans", "Bitstream Vera Sans", "Trebuchet MS", Verdana, "Verdana Ref", sans-serif',
94
95     // Cursive families
96     'Impact' => 'Impact, Haettenschweiler, "Franklin Gothic Bold", Charcoal, "Helvetica Inserat", "Bitstream Vera Sans Bold", "Arial Black", sans-serif',
97
98     // Monospace families
99     'Monospace' => 'Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace'
100);
101
102function fontDef($c)
103{
104     global $font_families;
105
106     return isset($font_families[$c]) ? '<span style="position:absolute;top:0;left:32em;">'.$font_families[$c].'</span>' : '';
107}
108
109$ductile_base = array(
110     // HTML
111     'subtitle_hidden' => null,
112     'logo_src' => null,
113     'preview_not_mandatory' => null,
114     // CSS
115     'body_font' => null,
116     'body_webfont_family' => null,
117     'body_webfont_url' => null,
118     'body_webfont_api' => null,
119     'alternate_font' => null,
120     'alternate_webfont_family' => null,
121     'alternate_webfont_url' => null,
122     'alternate_webfont_api' => null,
123     'blog_title_w' => null,
124     'blog_title_s' => null,
125     'blog_title_c' => null,
126     'post_title_w' => null,
127     'post_title_s' => null,
128     'post_title_c' => null,
129     'post_link_w' => null,
130     'post_link_v_c' => null,
131     'post_link_f_c' => null,
132     'blog_title_w_m' => null,
133     'blog_title_s_m' => null,
134     'blog_title_c_m' => null,
135     'post_title_w_m' => null,
136     'post_title_s_m' => null,
137     'post_title_c_m' => null,
138     'post_simple_title_c' => null
139);
140
141$ductile_lists_base = array(
142     'default' => 'short',
143     'default-page' => 'short',
144     'category' => 'short',
145     'tag' => 'short',
146     'search' => 'short',
147     'archive' => 'short'
148);
149
150$ductile_counts_base = array(
151     'default' => null,
152     'default-page' => null,
153     'category' => null,
154     'tag' => null,
155     'search' => null
156);
157
158$ductile_user = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_style');
159$ductile_user = @unserialize($ductile_user);
160if (!is_array($ductile_user)) {
161     $ductile_user = array();
162}
163$ductile_user = array_merge($ductile_base,$ductile_user);
164
165$ductile_lists = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_lists');
166$ductile_lists = @unserialize($ductile_lists);
167if (!is_array($ductile_lists)) {
168     $ductile_lists = $ductile_lists_base;
169}
170$ductile_lists = array_merge($ductile_lists_base,$ductile_lists);
171
172$ductile_counts = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_entries_counts');
173$ductile_counts = @unserialize($ductile_counts);
174if (!is_array($ductile_counts)) {
175     $ductile_counts = $ductile_counts_base;
176}
177$ductile_counts = array_merge($ductile_counts_base,$ductile_counts);
178
179$ductile_stickers = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_stickers');
180$ductile_stickers = @unserialize($ductile_stickers);
181
182// If no stickers defined, add feed Atom one
183if (!is_array($ductile_stickers)) {
184     $ductile_stickers = array(array(
185          'label' => __('Subscribe'),
186          'url' => $core->blog->url.
187               $core->url->getURLFor('feed','atom'),
188          'image' => 'sticker-feed.png'
189          ));
190}
191
192$ductile_stickers_full = array();
193// Get all sticker images already used
194if (is_array($ductile_stickers)) {
195     foreach ($ductile_stickers as $v) {
196          $ductile_stickers_full[] = $v['image'];
197     }
198}
199// Get all sticker-*.png in img folder of theme
200$ductile_stickers_images = files::scandir($img_path);
201if (is_array($ductile_stickers_images)) {
202     foreach ($ductile_stickers_images as $v) {
203          if (preg_match('/^sticker\-(.*)\.png$/',$v)) {
204               if (!in_array($v,$ductile_stickers_full)) {
205                    // image not already used
206                    $ductile_stickers[] = array(
207                         'label' => null,
208                         'url' => null,
209                         'image' => $v);
210               }
211          }
212     }
213}
214
215$conf_tab = isset($_POST['conf_tab']) ? $_POST['conf_tab'] : 'html';
216
217if (!empty($_POST))
218{
219     try
220     {
221          # HTML
222          if ($conf_tab == 'html') {
223               $ductile_user['subtitle_hidden'] = (integer) !empty($_POST['subtitle_hidden']);
224               $ductile_user['logo_src'] = $_POST['logo_src'];
225               $ductile_user['preview_not_mandatory'] = (integer) !empty($_POST['preview_not_mandatory']);
226
227               $ductile_stickers = array();
228               for ($i = 0; $i < count($_POST['sticker_image']); $i++) {
229                    $ductile_stickers[] = array(
230                         'label' => $_POST['sticker_label'][$i],
231                         'url' => $_POST['sticker_url'][$i],
232                         'image' => $_POST['sticker_image'][$i]
233                    );
234               }
235
236               $order = array();
237               if (empty($_POST['ds_order']) && !empty($_POST['order'])) {
238                    $order = $_POST['order'];
239                    asort($order);
240                    $order = array_keys($order);
241               }
242               if (!empty($order)) {
243                    $new_ductile_stickers = array();
244                    foreach ($order as $i => $k) {
245                         $new_ductile_stickers[] = array(
246                              'label' => $ductile_stickers[$k]['label'],
247                              'url' => $ductile_stickers[$k]['url'],
248                              'image' => $ductile_stickers[$k]['image']
249                         );
250                    }
251                    $ductile_stickers = $new_ductile_stickers;
252               }
253
254               for ($i = 0; $i < count($_POST['list_type']); $i++) {
255                    $ductile_lists[$_POST['list_ctx'][$i]] = $_POST['list_type'][$i];
256               }
257
258               for ($i = 0; $i < count($_POST['count_nb']); $i++) {
259                    $ductile_counts[$_POST['count_ctx'][$i]] = $_POST['count_nb'][$i];
260               }
261
262          }
263
264          # CSS
265          if ($conf_tab == 'css') {
266               $ductile_user['body_font'] = $_POST['body_font'];
267               $ductile_user['body_webfont_family'] = $_POST['body_webfont_family'];
268               $ductile_user['body_webfont_url'] = $_POST['body_webfont_url'];
269               $ductile_user['body_webfont_api'] = $_POST['body_webfont_api'];
270
271               $ductile_user['alternate_font'] = $_POST['alternate_font'];
272               $ductile_user['alternate_webfont_family'] = $_POST['alternate_webfont_family'];
273               $ductile_user['alternate_webfont_url'] = $_POST['alternate_webfont_url'];
274               $ductile_user['alternate_webfont_api'] = $_POST['alternate_webfont_api'];
275
276               $ductile_user['blog_title_w'] = (integer) !empty($_POST['blog_title_w']);
277               $ductile_user['blog_title_s'] = dcThemeConfig::adjustFontSize($_POST['blog_title_s']);
278               $ductile_user['blog_title_c'] = dcThemeConfig::adjustColor($_POST['blog_title_c']);
279
280               $ductile_user['post_title_w'] = (integer) !empty($_POST['post_title_w']);
281               $ductile_user['post_title_s'] = dcThemeConfig::adjustFontSize($_POST['post_title_s']);
282               $ductile_user['post_title_c'] = dcThemeConfig::adjustColor($_POST['post_title_c']);
283
284               $ductile_user['post_link_w'] = (integer) !empty($_POST['post_link_w']);
285               $ductile_user['post_link_v_c'] = dcThemeConfig::adjustColor($_POST['post_link_v_c']);
286               $ductile_user['post_link_f_c'] = dcThemeConfig::adjustColor($_POST['post_link_f_c']);
287
288               $ductile_user['post_simple_title_c'] = dcThemeConfig::adjustColor($_POST['post_simple_title_c']);
289
290               $ductile_user['blog_title_w_m'] = (integer) !empty($_POST['blog_title_w_m']);
291               $ductile_user['blog_title_s_m'] = dcThemeConfig::adjustFontSize($_POST['blog_title_s_m']);
292               $ductile_user['blog_title_c_m'] = dcThemeConfig::adjustColor($_POST['blog_title_c_m']);
293
294               $ductile_user['post_title_w_m'] = (integer) !empty($_POST['post_title_w_m']);
295               $ductile_user['post_title_s_m'] = dcThemeConfig::adjustFontSize($_POST['post_title_s_m']);
296               $ductile_user['post_title_c_m'] = dcThemeConfig::adjustColor($_POST['post_title_c_m']);
297          }
298
299          $core->blog->settings->addNamespace('themes');
300          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_style',serialize($ductile_user));
301          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_stickers',serialize($ductile_stickers));
302          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_entries_lists',serialize($ductile_lists));
303          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_entries_counts',serialize($ductile_counts));
304
305          // Blog refresh
306          $core->blog->triggerBlog();
307
308          // Template cache reset
309          $core->emptyTemplatesCache();
310
311          dcPage::message(__('Theme configuration upgraded.'),true,true);
312     }
313     catch (Exception $e)
314     {
315          $core->error->add($e->getMessage());
316     }
317}
318
319// Legacy mode
320if (!$standalone_config) echo '</form>';
321
322# HTML Tab
323
324echo '<div class="multi-part" id="themes-list'.($conf_tab == 'html' ? '' : '-html').'" title="'.__('Content').'">'.
325'<h3>'.__('Content').'</h3>';
326
327echo '<form id="theme_config" action="'.$core->adminurl->get('admin.blog.theme',array('conf' => '1')).
328'" method="post" enctype="multipart/form-data">';
329
330echo '<h4>'.__('Header').'</h4>'.
331'<p class="field"><label for="subtitle_hidden">'.__('Hide blog description:').'</label> '.
332form::checkbox('subtitle_hidden',1,$ductile_user['subtitle_hidden']).'</p>';
333echo '<p class="field"><label for="logo_src">'.__('Logo URL:').'</label> '.
334     form::field('logo_src',40,255,$ductile_user['logo_src']).'</p>';
335if ($core->plugins->moduleExists('simpleMenu'))
336{
337     echo '<p>'.sprintf(__('To configure the top menu go to the <a href="%s">Simple Menu administration page</a>.'),
338          $core->adminurl->get('admin.plugin.simpleMenu')).'</p>';
339}
340
341echo '<h4 class="border-top pretty-title">'.__('Stickers').'</h4>';
342
343echo
344'<div class="table-outer">'.
345'<table class="dragable">'.'<caption>'.__('Stickers (footer)').'</caption>'.
346'<thead>'.
347'<tr>'.
348'<th scope="col">'.'</th>'.
349'<th scope="col">'.__('Image').'</th>'.
350'<th scope="col">'.__('Label').'</th>'.
351'<th scope="col">'.__('URL').'</th>'.
352'</tr>'.
353'</thead>'.
354'<tbody id="stickerslist">';
355$count = 0;
356foreach ($ductile_stickers as $i => $v) {
357     $count++;
358     echo
359     '<tr class="line" id="l_'.$i.'">'.
360     '<td class="handle minimal">'.form::field(array('order['.$i.']'),2,3,$count,'position','',false).
361          form::hidden(array('dynorder[]','dynorder-'.$i),$i).'</td>'.
362     '<td>'.form::hidden(array('sticker_image[]'),$v['image']).'<img src="'.$img_url.$v['image'].'" alt="'.$v['image'].'" /> '.'</td>'.
363     '<td scope="row">'.form::field(array('sticker_label[]','dsl-'.$i),20,255,$v['label']).'</td>'.
364     '<td>'.form::field(array('sticker_url[]','dsu-'.$i),40,255,$v['url']).'</td>'.
365     '</tr>';
366}
367echo
368'</tbody>'.
369'</table></div>';
370
371echo '<h4 class="border-top pretty-title">'.__('Entries list types and limits').'</h4>';
372
373echo '<table id="entrieslist">'.'<caption class="hidden">'.__('Entries lists').'</caption>'.
374'<thead>'.
375'<tr>'.
376'<th scope="col">'.__('Context').'</th>'.
377'<th scope="col">'.__('Entries list type').'</th>'.
378'<th scope="col">'.__('Number of entries').'</th>'.
379'</tr>'.
380'</thead>'.
381'<tbody>';
382foreach ($ductile_lists as $k => $v) {
383     echo
384          '<tr>'.
385          '<td scope="row">'.$contexts[$k].'</td>'.
386          '<td>'.form::hidden(array('list_ctx[]'),$k).form::combo(array('list_type[]'),$list_types,$v).'</td>';
387     if (array_key_exists($k,$ductile_counts)) {
388          echo '<td>'.form::hidden(array('count_ctx[]'),$k).form::field(array('count_nb[]'),2,3,$ductile_counts[$k]).'</td>';
389     } else {
390          echo '<td></td>';
391     }
392     echo
393          '</tr>';
394}
395echo
396'</tbody>'.
397'</table>';
398
399echo '<h4 class="border-top pretty-title">'.__('Miscellaneous options').'</h4>';
400echo '<p><label for="preview_not_mandatory" class="classic">'.__('Comment preview is not mandatory:').'</label> '.
401form::checkbox('preview_not_mandatory',1,$ductile_user['preview_not_mandatory']).'</p>';
402
403echo '<p><input type="hidden" name="conf_tab" value="html" /></p>';
404echo '<p class="clear">'.form::hidden('ds_order','').'<input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
405echo '</form>';
406
407echo '</div>'; // Close tab
408
409# CSS tab
410
411echo '<div class="multi-part" id="themes-list'.($conf_tab == 'css' ? '' : '-css').'" title="'.__('Presentation').'">';
412
413echo '<form id="theme_config" action="'.$core->adminurl->get('admin.blog.theme',array('conf' => '1')).
414     '" method="post" enctype="multipart/form-data">';
415
416echo '<h3>'.__('General settings').'</h3>';
417
418echo '<h4 class="pretty-title">'.__('Fonts').'</h4>';
419
420echo '<div class="two-cols">';
421echo '<div class="col">';
422echo
423'<h5>'.__('Main text').'</h5>'.
424'<p class="field"><label for="body_font">'.__('Main font:').'</label> '.
425form::combo('body_font',$fonts,$ductile_user['body_font']).
426(!empty($ductile_user['body_font']) ? ' '.fontDef($ductile_user['body_font']) : '').
427' <span class="form-note">'.__('Set to Default to use a webfont.').'</span>'.
428'</p>'.
429'<p class="field"><label for="body_webfont_family">'.__('Webfont family:').'</label> '.
430form::field('body_webfont_family',25,255,$ductile_user['body_webfont_family']).'</p>'.
431'<p class="field"><label for="body_webfont_url">'.__('Webfont URL:').'</label> '.
432form::field('body_webfont_url',50,255,$ductile_user['body_webfont_url']).'</p>'.
433'<p class="field"><label for="body_webfont_url">'.__('Webfont API:').'</label> '.
434form::combo('body_webfont_api',$webfont_apis,$ductile_user['body_webfont_api']).'</p>';
435echo '</div>';
436echo '<div class="col">';
437echo
438'<h5>'.__('Secondary text').'</h5>'.
439'<p class="field"><label for="alternate_font">'.__('Secondary font:').'</label> '.
440form::combo('alternate_font',$fonts,$ductile_user['alternate_font']).
441(!empty($ductile_user['alternate_font']) ? ' '.fontDef($ductile_user['alternate_font']) : '').
442' <span class="form-note">'.__('Set to Default to use a webfont.').'</span>'.
443'</p>'.
444'<p class="field"><label for="alternate_webfont_family">'.__('Webfont family:').'</label> '.
445form::field('alternate_webfont_family',25,255,$ductile_user['alternate_webfont_family']).'</p>'.
446'<p class="field"><label for="alternate_webfont_url">'.__('Webfont URL:').'</label> '.
447form::field('alternate_webfont_url',50,255,$ductile_user['alternate_webfont_url']).'</p>'.
448'<p class="field"><label for="alternate_webfont_api">'.__('Webfont API:').'</label> '.
449form::combo('alternate_webfont_api',$webfont_apis,$ductile_user['alternate_webfont_api']).'</p>';
450echo '</div>';
451echo '</div>';
452
453echo '<h4 class="clear border-top pretty-title">'.__('Titles').'</h4>';
454echo '<div class="two-cols">';
455echo '<div class="col">';
456echo '<h5>'.__('Blog title').'</h5>'.
457'<p class="field"><label for="blog_title_w">'.__('In bold:').'</label> '.
458form::checkbox('blog_title_w',1,$ductile_user['blog_title_w']).'</p>'.
459
460'<p class="field"><label for="blog_title_s">'.__('Font size (in em by default):').'</label> '.
461form::field('blog_title_s',7,7,$ductile_user['blog_title_s']).'</p>'.
462
463'<p class="field picker"><label for="blog_title_c">'.__('Color:').'</label> '.
464form::field('blog_title_c',7,7,$ductile_user['blog_title_c'],'colorpicker').
465dcThemeConfig::contrastRatio($ductile_user['blog_title_c'],'#ffffff',
466     (!empty($ductile_user['blog_title_s']) ? $ductile_user['blog_title_s'] : '2em'),
467     $ductile_user['blog_title_w']).
468'</p>';
469
470echo '</div>';
471echo '<div class="col">';
472
473echo '<h5>'.__('Post title').'</h5>'.
474'<p class="field"><label for="post_title_w">'.__('In bold:').'</label> '.
475form::checkbox('post_title_w',1,$ductile_user['post_title_w']).'</p>'.
476
477'<p class="field"><label for="post_title_s">'.__('Font size (in em by default):').'</label> '.
478form::field('post_title_s',7,7,$ductile_user['post_title_s']).'</p>'.
479
480'<p class="field picker"><label for="post_title_c">'.__('Color:').'</label> '.
481form::field('post_title_c',7,7,$ductile_user['post_title_c'],'colorpicker').
482dcThemeConfig::contrastRatio($ductile_user['post_title_c'],'#ffffff',
483     (!empty($ductile_user['post_title_s']) ? $ductile_user['post_title_s'] : '2.5em'),
484     $ductile_user['post_title_w']).
485'</p>';
486
487echo '</div>';
488echo '</div>';
489
490echo '<h5>'.__('Titles without link').'</h5>'.
491
492'<p class="field picker"><label for="post_simple_title_c">'.__('Color:').'</label> '.
493form::field('post_simple_title_c',7,7,$ductile_user['post_simple_title_c'],'colorpicker').
494dcThemeConfig::contrastRatio($ductile_user['post_simple_title_c'],'#ffffff',
495     '1.1em',  // H5 minimum size
496     false).
497'</p>';
498
499echo '<h4 class="border-top pretty-title">'.__('Inside posts links').'</h4>'.
500'<p class="field"><label for="post_link_w">'.__('In bold:').'</label> '.
501form::checkbox('post_link_w',1,$ductile_user['post_link_w']).'</p>'.
502
503'<p class="field picker"><label for="post_link_v_c">'.__('Normal and visited links color:').'</label> '.
504form::field('post_link_v_c',7,7,$ductile_user['post_link_v_c'],'colorpicker').
505dcThemeConfig::contrastRatio($ductile_user['post_link_v_c'],'#ffffff',
506     '1em',
507     $ductile_user['post_link_w']).
508'</p>'.
509
510'<p class="field picker"><label for="post_link_f_c">'.__('Active, hover and focus links color:').'</label> '.
511form::field('post_link_f_c',7,7,$ductile_user['post_link_f_c'],'colorpicker').
512dcThemeConfig::contrastRatio($ductile_user['post_link_f_c'],'#ebebee',
513     '1em',
514     $ductile_user['post_link_w']).
515'</p>';
516
517echo '<h3 class="border-top">'.__('Mobile specific settings').'</h3>';
518
519echo '<div class="two-cols">';
520echo '<div class="col">';
521
522echo '<h4 class="pretty-title">'.__('Blog title').'</h4>'.
523'<p class="field"><label for="blog_title_w_m">'.__('In bold:').'</label> '.
524form::checkbox('blog_title_w_m',1,$ductile_user['blog_title_w_m']).'</p>'.
525
526'<p class="field"><label for="blog_title_s_m">'.__('Font size (in em by default):').'</label> '.
527form::field('blog_title_s_m',7,7,$ductile_user['blog_title_s_m']).'</p>'.
528
529'<p class="field picker"><label for="blog_title_c_m">'.__('Color:').'</label> '.
530form::field('blog_title_c_m',7,7,$ductile_user['blog_title_c_m'],'colorpicker').
531dcThemeConfig::contrastRatio($ductile_user['blog_title_c_m'],'#d7d7dc',
532     (!empty($ductile_user['blog_title_s_m']) ? $ductile_user['blog_title_s_m'] : '1.8em'),
533     $ductile_user['blog_title_w_m']).
534'</p>';
535
536echo '</div>';
537echo '<div class="col">';
538
539echo '<h4 class="pretty-title">'.__('Post title').'</h4>'.
540'<p class="field"><label for="post_title_w_m">'.__('In bold:').'</label> '.
541form::checkbox('post_title_w_m',1,$ductile_user['post_title_w_m']).'</p>'.
542
543'<p class="field"><label for="post_title_s_m">'.__('Font size (in em by default):').'</label> '.
544form::field('post_title_s_m',7,7,$ductile_user['post_title_s_m']).'</p>'.
545
546'<p class="field picker"><label for="post_title_c_m">'.__('Color:').'</label> '.
547form::field('post_title_c_m',7,7,$ductile_user['post_title_c_m'],'colorpicker').
548dcThemeConfig::contrastRatio($ductile_user['post_title_c_m'],'#ffffff',
549     (!empty($ductile_user['post_title_s_m']) ? $ductile_user['post_title_s_m'] : '1.5em'),
550     $ductile_user['post_title_w_m']).
551'</p>';
552
553echo '</div>';
554echo '</div>';
555
556echo '<p><input type="hidden" name="conf_tab" value="css" /></p>';
557echo '<p class="clear border-top"><input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
558echo '</form>';
559
560echo '</div>'; // Close tab
561
562dcPage::helpBlock('ductile');
563
564// Legacy mode
565if (!$standalone_config) echo '<form style="display:none">';
Note: See TracBrowser for help on using the repository browser.

Sites map