Dotclear

source: themes/ductile/_config.php @ 2658:0686a9a71a3f

Revision 2658:0686a9a71a3f, 21.5 KB checked in by franck <carnet.franck.paul@…>, 12 years ago (diff)

New utility lib for theme configuration, applied to ductile theme, addresses #904

RevLine 
[345]1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
[631]3# This file is part of Ductile, a theme for Dotclear
[345]4#
[631]5# Copyright (c) 2011 - Association Dotclear
[345]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
[421]13l10n::set(dirname(__FILE__).'/locales/'.$_lang.'/admin');
[357]14
[832]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}
[604]20$img_path = dirname(__FILE__).'/img/';
21
[657]22$tpl_path = dirname(__FILE__).'/tpl/';
23
[611]24$standalone_config = (boolean) $core->themes->moduleInfo($core->blog->settings->system->theme,'standalone_config');
25
[2393]26// Load contextual help
27if (file_exists(dirname(__FILE__).'/locales/'.$_lang.'/resources.php')) {
28     require dirname(__FILE__).'/locales/'.$_lang.'/resources.php';
29}
30
[563]31$list_types = array(
32     __('Title') => 'title',
33     __('Short') => 'short',
34     __('Full') => 'full'
35);
[657]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
[563]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'),
[564]57     'archive' => __('Month archive entries')
[563]58);
59
[376]60$fonts = array(
[1526]61     __('Default') => '',
[376]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
[1081]74$webfont_apis = array(
75     __('none') => '',
76     __('javascript (Adobe)') => 'js',
77     __('stylesheet (Google)') => 'css'
78);
79
[656]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;
[2393]105
[656]106     return isset($font_families[$c]) ? '<span style="position:absolute;top:0;left:32em;">'.$font_families[$c].'</span>' : '';
107}
108
[357]109$ductile_base = array(
[389]110     // HTML
111     'subtitle_hidden' => null,
[810]112     'logo_src' => null,
[1096]113     'preview_not_mandatory' => null,
[389]114     // CSS
[376]115     'body_font' => null,
[1081]116     'body_webfont_family' => null,
117     'body_webfont_url' => null,
118     'body_webfont_api' => null,
[387]119     'alternate_font' => null,
[1081]120     'alternate_webfont_family' => null,
121     'alternate_webfont_url' => null,
122     'alternate_webfont_api' => null,
[387]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,
[515]137     'post_title_c_m' => null,
138     'post_simple_title_c' => null
[357]139);
140
[563]141$ductile_lists_base = array(
[646]142     'default' => 'short',
143     'default-page' => 'short',
144     'category' => 'short',
145     'tag' => 'short',
146     'search' => 'short',
[667]147     'archive' => 'short'
[563]148);
149
[583]150$ductile_counts_base = array(
151     'default' => null,
[2581]152     'default-page' => null,
[583]153     'category' => null,
154     'tag' => null,
155     'search' => null
156);
157
[605]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}
[2581]170$ductile_lists = array_merge($ductile_lists_base,$ductile_lists);
[605]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}
[2581]177$ductile_counts = array_merge($ductile_counts_base,$ductile_counts);
[605]178
179$ductile_stickers = $core->blog->settings->themes->get($core->blog->settings->system->theme.'_stickers');
180$ductile_stickers = @unserialize($ductile_stickers);
181
[614]182// If no stickers defined, add feed Atom one
183if (!is_array($ductile_stickers)) {
184     $ductile_stickers = array(array(
185          'label' => __('Subscribe'),
[776]186          'url' => $core->blog->url.
187               $core->url->getURLFor('feed','atom'),
[614]188          'image' => 'sticker-feed.png'
189          ));
190}
191
[605]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
[390]215$conf_tab = isset($_POST['conf_tab']) ? $_POST['conf_tab'] : 'html';
216
[357]217if (!empty($_POST))
218{
219     try
220     {
[389]221          # HTML
[390]222          if ($conf_tab == 'html') {
223               $ductile_user['subtitle_hidden'] = (integer) !empty($_POST['subtitle_hidden']);
[810]224               $ductile_user['logo_src'] = $_POST['logo_src'];
[1096]225               $ductile_user['preview_not_mandatory'] = (integer) !empty($_POST['preview_not_mandatory']);
[605]226
[604]227               $ductile_stickers = array();
[605]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']
[604]249                         );
250                    }
[605]251                    $ductile_stickers = $new_ductile_stickers;
[419]252               }
[2393]253
[563]254               for ($i = 0; $i < count($_POST['list_type']); $i++) {
255                    $ductile_lists[$_POST['list_ctx'][$i]] = $_POST['list_type'][$i];
256               }
[2393]257
[583]258               for ($i = 0; $i < count($_POST['count_nb']); $i++) {
259                    $ductile_counts[$_POST['count_ctx'][$i]] = $_POST['count_nb'][$i];
260               }
[2393]261
[390]262          }
[2393]263
[389]264          # CSS
[390]265          if ($conf_tab == 'css') {
266               $ductile_user['body_font'] = $_POST['body_font'];
[1081]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
[390]271               $ductile_user['alternate_font'] = $_POST['alternate_font'];
[1081]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'];
[390]275
276               $ductile_user['blog_title_w'] = (integer) !empty($_POST['blog_title_w']);
[2658]277               $ductile_user['blog_title_s'] = dcThemeConfig::adjustFontSize($_POST['blog_title_s']);
278               $ductile_user['blog_title_c'] = dcThemeConfig::adjustColor($_POST['blog_title_c']);
[2393]279
[390]280               $ductile_user['post_title_w'] = (integer) !empty($_POST['post_title_w']);
[2658]281               $ductile_user['post_title_s'] = dcThemeConfig::adjustFontSize($_POST['post_title_s']);
282               $ductile_user['post_title_c'] = dcThemeConfig::adjustColor($_POST['post_title_c']);
[2393]283
[390]284               $ductile_user['post_link_w'] = (integer) !empty($_POST['post_link_w']);
[2658]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']);
[2393]287
[2658]288               $ductile_user['post_simple_title_c'] = dcThemeConfig::adjustColor($_POST['post_simple_title_c']);
[2393]289
[390]290               $ductile_user['blog_title_w_m'] = (integer) !empty($_POST['blog_title_w_m']);
[2658]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']);
[2393]293
[390]294               $ductile_user['post_title_w_m'] = (integer) !empty($_POST['post_title_w_m']);
[2658]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']);
[390]297          }
[2393]298
[357]299          $core->blog->settings->addNamespace('themes');
[394]300          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_style',serialize($ductile_user));
[419]301          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_stickers',serialize($ductile_stickers));
[563]302          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_entries_lists',serialize($ductile_lists));
[583]303          $core->blog->settings->themes->put($core->blog->settings->system->theme.'_entries_counts',serialize($ductile_counts));
[572]304
305          // Blog refresh
[357]306          $core->blog->triggerBlog();
307
[572]308          // Template cache reset
309          $core->emptyTemplatesCache();
[2393]310
[907]311          dcPage::message(__('Theme configuration upgraded.'),true,true);
[357]312     }
313     catch (Exception $e)
314     {
315          $core->error->add($e->getMessage());
316     }
317}
318
[613]319// Legacy mode
320if (!$standalone_config) echo '</form>';
321
[389]322# HTML Tab
323
[2003]324echo '<div class="multi-part" id="themes-list'.($conf_tab == 'html' ? '' : '-html').'" title="'.__('Content').'">'.
[2335]325'<h3>'.__('Content').'</h3>';
[390]326
327echo '<form id="theme_config" action="blog_theme.php?conf=1" method="post" enctype="multipart/form-data">';
[389]328
[2335]329echo '<h4>'.__('Header').'</h4>'.
330'<p class="field"><label for="subtitle_hidden">'.__('Hide blog description:').'</label> '.
331form::checkbox('subtitle_hidden',1,$ductile_user['subtitle_hidden']).'</p>';
332echo '<p class="field"><label for="logo_src">'.__('Logo URL:').'</label> '.
333     form::field('logo_src',40,255,$ductile_user['logo_src']).'</p>';
[612]334if ($core->plugins->moduleExists('simpleMenu'))
335{
336     echo '<p>'.sprintf(__('To configure the top menu go to the <a href="%s">Simple Menu administration page</a>.'),'plugin.php?p=simpleMenu').'</p>';
337}
[389]338
[2335]339echo '<h4 class="border-top pretty-title">'.__('Stickers').'</h4>';
[419]340
[2393]341echo
[2002]342'<div class="table-outer">'.
343'<table class="dragable">'.'<caption>'.__('Stickers (footer)').'</caption>'.
[419]344'<thead>'.
345'<tr>'.
[605]346'<th scope="col">'.'</th>'.
[604]347'<th scope="col">'.__('Image').'</th>'.
[419]348'<th scope="col">'.__('Label').'</th>'.
349'<th scope="col">'.__('URL').'</th>'.
350'</tr>'.
351'</thead>'.
[605]352'<tbody id="stickerslist">';
353$count = 0;
354foreach ($ductile_stickers as $i => $v) {
355     $count++;
[2393]356     echo
[605]357     '<tr class="line" id="l_'.$i.'">'.
358     '<td class="handle minimal">'.form::field(array('order['.$i.']'),2,3,$count,'position','',false).
359          form::hidden(array('dynorder[]','dynorder-'.$i),$i).'</td>'.
[1622]360     '<td>'.form::hidden(array('sticker_image[]'),$v['image']).'<img src="'.$img_url.$v['image'].'" alt="'.$v['image'].'" /> '.'</td>'.
361     '<td scope="row">'.form::field(array('sticker_label[]','dsl-'.$i),20,255,$v['label']).'</td>'.
[605]362     '<td>'.form::field(array('sticker_url[]','dsu-'.$i),40,255,$v['url']).'</td>'.
[604]363     '</tr>';
364}
365echo
[419]366'</tbody>'.
[2002]367'</table></div>';
[419]368
[2335]369echo '<h4 class="border-top pretty-title">'.__('Entries list types and limits').'</h4>';
[419]370
[2335]371echo '<table id="entrieslist">'.'<caption class="hidden">'.__('Entries lists').'</caption>'.
[563]372'<thead>'.
373'<tr>'.
374'<th scope="col">'.__('Context').'</th>'.
375'<th scope="col">'.__('Entries list type').'</th>'.
[583]376'<th scope="col">'.__('Number of entries').'</th>'.
[563]377'</tr>'.
378'</thead>'.
379'<tbody>';
380foreach ($ductile_lists as $k => $v) {
[2393]381     echo
[563]382          '<tr>'.
[1622]383          '<td scope="row">'.$contexts[$k].'</td>'.
[583]384          '<td>'.form::hidden(array('list_ctx[]'),$k).form::combo(array('list_type[]'),$list_types,$v).'</td>';
385     if (array_key_exists($k,$ductile_counts)) {
386          echo '<td>'.form::hidden(array('count_ctx[]'),$k).form::field(array('count_nb[]'),2,3,$ductile_counts[$k]).'</td>';
387     } else {
388          echo '<td></td>';
389     }
390     echo
[563]391          '</tr>';
392}
393echo
394'</tbody>'.
395'</table>';
396
[2335]397echo '<h4 class="border-top pretty-title">'.__('Miscellaneous options').'</h4>';
398echo '<p><label for="preview_not_mandatory" class="classic">'.__('Comment preview is not mandatory:').'</label> '.
399form::checkbox('preview_not_mandatory',1,$ductile_user['preview_not_mandatory']).'</p>';
[1096]400
[1622]401echo '<p><input type="hidden" name="conf_tab" value="html" /></p>';
[605]402echo '<p class="clear">'.form::hidden('ds_order','').'<input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
[390]403echo '</form>';
404
[389]405echo '</div>'; // Close tab
406
407# CSS tab
408
[390]409echo '<div class="multi-part" id="themes-list'.($conf_tab == 'css' ? '' : '-css').'" title="'.__('Presentation').'">';
410
411echo '<form id="theme_config" action="blog_theme.php?conf=1" method="post" enctype="multipart/form-data">';
[389]412
[387]413echo '<h3>'.__('General settings').'</h3>';
414
[2335]415echo '<h4 class="pretty-title">'.__('Fonts').'</h4>';
[1081]416
417echo '<div class="two-cols">';
418echo '<div class="col">';
419echo
[2335]420'<h5>'.__('Main text').'</h5>'.
421'<p class="field"><label for="body_font">'.__('Main font:').'</label> '.
422form::combo('body_font',$fonts,$ductile_user['body_font']).
[656]423(!empty($ductile_user['body_font']) ? ' '.fontDef($ductile_user['body_font']) : '').
[2335]424' <span class="form-note">'.__('Set to Default to use a webfont.').'</span>'.
[656]425'</p>'.
[1081]426'<p class="field"><label for="body_webfont_family">'.__('Webfont family:').'</label> '.
427form::field('body_webfont_family',25,255,$ductile_user['body_webfont_family']).'</p>'.
428'<p class="field"><label for="body_webfont_url">'.__('Webfont URL:').'</label> '.
429form::field('body_webfont_url',50,255,$ductile_user['body_webfont_url']).'</p>'.
[2335]430'<p class="field"><label for="body_webfont_url">'.__('Webfont API:').'</label> '.
431form::combo('body_webfont_api',$webfont_apis,$ductile_user['body_webfont_api']).'</p>';
[1081]432echo '</div>';
433echo '<div class="col">';
434echo
[2335]435'<h5>'.__('Secondary text').'</h5>'.
436'<p class="field"><label for="alternate_font">'.__('Secondary font:').'</label> '.
437form::combo('alternate_font',$fonts,$ductile_user['alternate_font']).
[656]438(!empty($ductile_user['alternate_font']) ? ' '.fontDef($ductile_user['alternate_font']) : '').
[2335]439' <span class="form-note">'.__('Set to Default to use a webfont.').'</span>'.
[656]440'</p>'.
[1081]441'<p class="field"><label for="alternate_webfont_family">'.__('Webfont family:').'</label> '.
442form::field('alternate_webfont_family',25,255,$ductile_user['alternate_webfont_family']).'</p>'.
443'<p class="field"><label for="alternate_webfont_url">'.__('Webfont URL:').'</label> '.
444form::field('alternate_webfont_url',50,255,$ductile_user['alternate_webfont_url']).'</p>'.
[2335]445'<p class="field"><label for="alternate_webfont_api">'.__('Webfont API:').'</label> '.
446form::combo('alternate_webfont_api',$webfont_apis,$ductile_user['alternate_webfont_api']).'</p>';
[1081]447echo '</div>';
448echo '</div>';
[376]449
[2335]450echo '<h4 class="clear border-top pretty-title">'.__('Titles').'</h4>';
[387]451echo '<div class="two-cols">';
452echo '<div class="col">';
[2335]453echo '<h5>'.__('Blog title').'</h5>'.
454'<p class="field"><label for="blog_title_w">'.__('In bold:').'</label> '.
455form::checkbox('blog_title_w',1,$ductile_user['blog_title_w']).'</p>'.
[387]456
[395]457'<p class="field"><label for="blog_title_s">'.__('Font size (in em by default):').'</label> '.
458form::field('blog_title_s',7,7,$ductile_user['blog_title_s']).'</p>'.
[387]459
[389]460'<p class="field picker"><label for="blog_title_c">'.__('Color:').'</label> '.
[653]461form::field('blog_title_c',7,7,$ductile_user['blog_title_c'],'colorpicker').
[2658]462dcThemeConfig::contrastRatio($ductile_user['blog_title_c'],'#ffffff',
[653]463     (!empty($ductile_user['blog_title_s']) ? $ductile_user['blog_title_s'] : '2em'),
464     $ductile_user['blog_title_w']).
[2335]465'</p>';
[387]466
467echo '</div>';
468echo '<div class="col">';
469
[2335]470echo '<h5>'.__('Post title').'</h5>'.
471'<p class="field"><label for="post_title_w">'.__('In bold:').'</label> '.
472form::checkbox('post_title_w',1,$ductile_user['post_title_w']).'</p>'.
[387]473
[395]474'<p class="field"><label for="post_title_s">'.__('Font size (in em by default):').'</label> '.
475form::field('post_title_s',7,7,$ductile_user['post_title_s']).'</p>'.
[387]476
[389]477'<p class="field picker"><label for="post_title_c">'.__('Color:').'</label> '.
[653]478form::field('post_title_c',7,7,$ductile_user['post_title_c'],'colorpicker').
[2658]479dcThemeConfig::contrastRatio($ductile_user['post_title_c'],'#ffffff',
[653]480     (!empty($ductile_user['post_title_s']) ? $ductile_user['post_title_s'] : '2.5em'),
481     $ductile_user['post_title_w']).
[2335]482'</p>';
[387]483
484echo '</div>';
485echo '</div>';
486
[2335]487echo '<h5>'.__('Titles without link').'</h5>'.
[515]488
489'<p class="field picker"><label for="post_simple_title_c">'.__('Color:').'</label> '.
[653]490form::field('post_simple_title_c',7,7,$ductile_user['post_simple_title_c'],'colorpicker').
[2658]491dcThemeConfig::contrastRatio($ductile_user['post_simple_title_c'],'#ffffff',
[653]492     '1.1em',  // H5 minimum size
493     false).
[2335]494'</p>';
[515]495
[2335]496echo '<h4 class="border-top pretty-title">'.__('Inside posts links').'</h4>'.
497'<p class="field"><label for="post_link_w">'.__('In bold:').'</label> '.
498form::checkbox('post_link_w',1,$ductile_user['post_link_w']).'</p>'.
[357]499
[389]500'<p class="field picker"><label for="post_link_v_c">'.__('Normal and visited links color:').'</label> '.
[653]501form::field('post_link_v_c',7,7,$ductile_user['post_link_v_c'],'colorpicker').
[2658]502dcThemeConfig::contrastRatio($ductile_user['post_link_v_c'],'#ffffff',
[653]503     '1em',
504     $ductile_user['post_link_w']).
505'</p>'.
[357]506
[648]507'<p class="field picker"><label for="post_link_f_c">'.__('Active, hover and focus links color:').'</label> '.
[653]508form::field('post_link_f_c',7,7,$ductile_user['post_link_f_c'],'colorpicker').
[2658]509dcThemeConfig::contrastRatio($ductile_user['post_link_f_c'],'#ebebee',
[653]510     '1em',
511     $ductile_user['post_link_w']).
[2335]512'</p>';
[357]513
[2335]514echo '<h3 class="border-top">'.__('Mobile specific settings').'</h3>';
[387]515
516echo '<div class="two-cols">';
517echo '<div class="col">';
518
[2335]519echo '<h4 class="pretty-title">'.__('Blog title').'</h4>'.
520'<p class="field"><label for="blog_title_w_m">'.__('In bold:').'</label> '.
521form::checkbox('blog_title_w_m',1,$ductile_user['blog_title_w_m']).'</p>'.
[387]522
[395]523'<p class="field"><label for="blog_title_s_m">'.__('Font size (in em by default):').'</label> '.
524form::field('blog_title_s_m',7,7,$ductile_user['blog_title_s_m']).'</p>'.
[387]525
[389]526'<p class="field picker"><label for="blog_title_c_m">'.__('Color:').'</label> '.
[653]527form::field('blog_title_c_m',7,7,$ductile_user['blog_title_c_m'],'colorpicker').
[2658]528dcThemeConfig::contrastRatio($ductile_user['blog_title_c_m'],'#d7d7dc',
[653]529     (!empty($ductile_user['blog_title_s_m']) ? $ductile_user['blog_title_s_m'] : '1.8em'),
530     $ductile_user['blog_title_w_m']).
[2335]531'</p>';
[387]532
533echo '</div>';
534echo '<div class="col">';
535
[2335]536echo '<h4 class="pretty-title">'.__('Post title').'</h4>'.
537'<p class="field"><label for="post_title_w_m">'.__('In bold:').'</label> '.
538form::checkbox('post_title_w_m',1,$ductile_user['post_title_w_m']).'</p>'.
[387]539
[395]540'<p class="field"><label for="post_title_s_m">'.__('Font size (in em by default):').'</label> '.
541form::field('post_title_s_m',7,7,$ductile_user['post_title_s_m']).'</p>'.
[387]542
[389]543'<p class="field picker"><label for="post_title_c_m">'.__('Color:').'</label> '.
[653]544form::field('post_title_c_m',7,7,$ductile_user['post_title_c_m'],'colorpicker').
[2658]545dcThemeConfig::contrastRatio($ductile_user['post_title_c_m'],'#ffffff',
[653]546     (!empty($ductile_user['post_title_s_m']) ? $ductile_user['post_title_s_m'] : '1.5em'),
547     $ductile_user['post_title_w_m']).
[2335]548'</p>';
[387]549
550echo '</div>';
551echo '</div>';
552
[1622]553echo '<p><input type="hidden" name="conf_tab" value="css" /></p>';
[2335]554echo '<p class="clear border-top"><input type="submit" value="'.__('Save').'" />'.$core->formNonce().'</p>';
[390]555echo '</form>';
556
[389]557echo '</div>'; // Close tab
558
[634]559dcPage::helpBlock('ductile');
560
[613]561// Legacy mode
562if (!$standalone_config) echo '<form style="display:none">';
Note: See TracBrowser for help on using the repository browser.

Sites map