Dotclear

source: admin/blog_pref.php @ 2987:57199ed47806

Revision 2987:57199ed47806, 28.7 KB checked in by franck <carnet.franck.paul@…>, 11 years ago (diff)

Radio and checkbox should be inside label tag

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 -----------------------------------------
12
13$standalone = !isset($edit_blog_mode);
14
15$blog_id = false;
16
17if ($standalone)
18{
19     require dirname(__FILE__).'/../inc/admin/prepend.php';
20     dcPage::check('admin');
21     $blog_id = $core->blog->id;
22     $blog_status = $core->blog->status;
23     $blog_name = $core->blog->name;
24     $blog_desc = $core->blog->desc;
25     $blog_settings = $core->blog->settings;
26     $blog_url = $core->blog->url;
27
28     $action = $core->adminurl->get("admin.blog.pref");
29     $redir = $core->adminurl->get("admin.blog.pref");
30}
31else
32{
33     dcPage::checkSuper();
34     try
35     {
36          if (empty($_REQUEST['id'])) {
37               throw new Exception(__('No given blog id.'));
38          }
39          $rs = $core->getBlog($_REQUEST['id']);
40
41          if (!$rs) {
42               throw new Exception(__('No such blog.'));
43          }
44
45          $blog_id = $rs->blog_id;
46          $blog_status = $rs->blog_status;
47          $blog_name = $rs->blog_name;
48          $blog_desc = $rs->blog_desc;
49          $blog_settings = new dcSettings($core,$blog_id);
50          $blog_url = $rs->blog_url ;
51     }
52     catch (Exception $e)
53     {
54          $core->error->add($e->getMessage());
55     }
56
57     $action = $core->adminurl->get("admin.blog");
58     $redir = $core->adminurl->get("admin.blog",array('id' => "%s"),'&',true);
59}
60
61# Language codes
62$lang_combo = dcAdminCombos::getAdminLangsCombo();
63
64# Status combo
65$status_combo = dcAdminCombos::getBlogStatusescombo();
66
67# Date format combo
68$now = time();
69$date_formats = unserialize($blog_settings->system->date_formats);
70$time_formats = unserialize($blog_settings->system->time_formats);
71$date_formats_combo = array('' => '');
72foreach ($date_formats as $format) {
73    $date_formats_combo[dt::str($format, $now)] = $format;
74}
75$time_formats_combo = array('' => '');
76foreach ($time_formats as $format) {
77    $time_formats_combo[dt::str($format, $now)] = $format;
78}
79
80
81# URL scan modes
82$url_scan_combo = array(
83     'PATH_INFO' => 'path_info',
84     'QUERY_STRING' => 'query_string'
85);
86
87# Post URL combo
88$post_url_combo = array(
89     __('year/month/day/title') => '{y}/{m}/{d}/{t}',
90     __('year/month/title') => '{y}/{m}/{t}',
91     __('year/title') => '{y}/{t}',
92     __('title') => '{t}',
93     __('post id/title') => '{id}/{t}',
94     __('post id') => '{id}'
95);
96if (!in_array($blog_settings->system->post_url_format,$post_url_combo)) {
97     $post_url_combo[html::escapeHTML($blog_settings->system->post_url_format)] = html::escapeHTML($blog_settings->system->post_url_format);
98}
99
100# Note title tag combo
101$note_title_tag_combo = array(
102     __('H4') => 0,
103     __('H3') => 1,
104     __('P') => 2
105);
106
107# Image title combo
108$img_title_combo = array(
109     __('(none)') => '',
110     __('Title') => 'Title ;; separator(, )',
111     __('Title, Date') => 'Title ;; Date(%b %Y) ;; separator(, )',
112     __('Title, Country, Date') => 'Title ;; Country ;; Date(%b %Y) ;; separator(, )',
113     __('Title, City, Country, Date') => 'Title ;; City ;; Country ;; Date(%b %Y) ;; separator(, )',
114);
115if (!in_array($blog_settings->system->media_img_title_pattern,$img_title_combo)) {
116     $img_title_combo[html::escapeHTML($blog_settings->system->media_img_title_pattern)] = html::escapeHTML($blog_settings->system->media_img_title_pattern);
117}
118
119# Image default size combo
120$img_default_size_combo = array();
121try {
122     $media = new dcMedia($core);
123     $img_default_size_combo[__('original')] = 'o';
124     foreach ($media->thumb_sizes as $code => $size) {
125          $img_default_size_combo[__($size[2])] = $code;
126     }
127} catch (Exception $e) {
128     $core->error->add($e->getMessage());
129}
130
131# Image default alignment combo
132$img_default_alignment_combo = array(
133     __('None') => 'none',
134     __('Left') => 'left',
135     __('Right') => 'right',
136     __('Center') => 'center'
137);
138
139# Robots policy options
140$robots_policy_options = array(
141     'INDEX,FOLLOW' => __("I would like search engines and archivers to index and archive my blog's content."),
142     'INDEX,FOLLOW,NOARCHIVE' => __("I would like search engines and archivers to index but not archive my blog's content."),
143     'NOINDEX,NOFOLLOW,NOARCHIVE' => __("I would like to prevent search engines and archivers from indexing or archiving my blog's content."),
144);
145
146# jQuery available versions
147$jquery_root = dirname(__FILE__).'/../inc/js/jquery';
148$jquery_versions_combo = array(__('Default').' ('.DC_DEFAULT_JQUERY.')' => DC_DEFAULT_JQUERY);
149if (is_dir($jquery_root) && is_readable($jquery_root)) {
150     if (($d = @dir($jquery_root)) !== false) {
151          while (($entry = $d->read()) !== false) {
152               if ($entry != '.' && $entry != '..' && substr($entry, 0, 1) != '.' && is_dir($jquery_root.'/'.$entry)) {
153                    if ($entry != DC_DEFAULT_JQUERY) {
154                         $jquery_versions_combo[$entry] = $entry;
155                    }
156               }
157          }
158     }
159}
160
161# Update a blog
162if ($blog_id && !empty($_POST) && $core->auth->check('admin',$blog_id))
163{
164     $cur = $core->con->openCursor($core->prefix.'blog');
165     $cur->blog_id = $_POST['blog_id'];
166     $cur->blog_url = preg_replace('/\?+$/','?', $_POST['blog_url']);
167     $cur->blog_name = $_POST['blog_name'];
168     $cur->blog_desc = $_POST['blog_desc'];
169
170     if ($core->auth->isSuperAdmin() && in_array($_POST['blog_status'], $status_combo)) {
171          $cur->blog_status = (int) $_POST['blog_status'];
172     }
173
174     $media_img_t_size = abs((integer) $_POST['media_img_t_size']);
175     if ($media_img_t_size < 0) { $media_img_t_size = 100; }
176
177     $media_img_s_size = abs((integer) $_POST['media_img_s_size']);
178     if ($media_img_s_size < 0) { $media_img_s_size = 240; }
179
180     $media_img_m_size = abs((integer) $_POST['media_img_m_size']);
181     if ($media_img_m_size < 0) { $media_img_m_size = 448; }
182
183     $nb_post_for_home = abs((integer) $_POST['nb_post_for_home']);
184     if ($nb_post_for_home <= 1) { $nb_post_for_home = 1; }
185
186     $nb_post_per_page = abs((integer) $_POST['nb_post_per_page']);
187     if ($nb_post_per_page <= 1) { $nb_post_per_page = 1; }
188
189     $nb_post_per_feed = abs((integer) $_POST['nb_post_per_feed']);
190     if ($nb_post_per_feed <= 1) { $nb_post_per_feed = 1; }
191
192     $nb_comment_per_feed = abs((integer) $_POST['nb_comment_per_feed']);
193     if ($nb_comment_per_feed <= 1) { $nb_comment_per_feed = 1; }
194
195     try
196     {
197          if ($cur->blog_id != null && $cur->blog_id != $blog_id) {
198               $rs = $core->getBlog($cur->blog_id);
199
200               if ($rs) {
201                    throw new Exception(__('This blog ID is already used.'));
202               }
203          }
204
205          # --BEHAVIOR-- adminBeforeBlogUpdate
206          $core->callBehavior('adminBeforeBlogUpdate',$cur,$blog_id);
207
208          if (!preg_match('/^[a-z]{2}(-[a-z]{2})?$/',$_POST['lang'])) {
209               throw new Exception(__('Invalid language code'));
210          }
211
212          $core->updBlog($blog_id,$cur);
213
214          # --BEHAVIOR-- adminAfterBlogUpdate
215          $core->callBehavior('adminAfterBlogUpdate',$cur,$blog_id);
216
217          if ($cur->blog_id != null && $cur->blog_id != $blog_id) {
218               if ($blog_id == $core->blog->id) {
219                    $core->setBlog($cur->blog_id);
220                    $_SESSION['sess_blog_id'] = $cur->blog_id;
221                    $blog_settings = $core->blog->settings;
222               } else {
223                    $blog_settings = new dcSettings($core,$cur->blog_id);
224               }
225
226               $blog_id = $cur->blog_id;
227          }
228
229
230          $blog_settings->addNameSpace('system');
231
232          $blog_settings->system->put('editor',$_POST['editor']);
233          $blog_settings->system->put('copyright_notice',$_POST['copyright_notice']);
234          $blog_settings->system->put('post_url_format',$_POST['post_url_format']);
235          $blog_settings->system->put('lang',$_POST['lang']);
236          $blog_settings->system->put('blog_timezone',$_POST['blog_timezone']);
237          $blog_settings->system->put('date_format',$_POST['date_format']);
238          $blog_settings->system->put('time_format',$_POST['time_format']);
239          $blog_settings->system->put('comments_ttl',abs((integer) $_POST['comments_ttl']));
240          $blog_settings->system->put('trackbacks_ttl',abs((integer) $_POST['trackbacks_ttl']));
241          $blog_settings->system->put('allow_comments',!empty($_POST['allow_comments']));
242          $blog_settings->system->put('allow_trackbacks',!empty($_POST['allow_trackbacks']));
243          $blog_settings->system->put('comments_pub',empty($_POST['comments_pub']));
244          $blog_settings->system->put('trackbacks_pub',empty($_POST['trackbacks_pub']));
245          $blog_settings->system->put('comments_nofollow',!empty($_POST['comments_nofollow']));
246          $blog_settings->system->put('wiki_comments',!empty($_POST['wiki_comments']));
247          $blog_settings->system->put('comment_preview_optional',!empty($_POST['comment_preview_optional']));
248          $blog_settings->system->put('enable_xmlrpc',!empty($_POST['enable_xmlrpc']));
249          $blog_settings->system->put('note_title_tag',$_POST['note_title_tag']);
250          $blog_settings->system->put('nb_post_for_home',$nb_post_for_home);
251          $blog_settings->system->put('nb_post_per_page',$nb_post_per_page);
252          $blog_settings->system->put('use_smilies',!empty($_POST['use_smilies']));
253          $blog_settings->system->put('inc_subcats',!empty($_POST['inc_subcats']));
254          $blog_settings->system->put('media_img_t_size',$media_img_t_size);
255          $blog_settings->system->put('media_img_s_size',$media_img_s_size);
256          $blog_settings->system->put('media_img_m_size',$media_img_m_size);
257          $blog_settings->system->put('media_img_title_pattern',$_POST['media_img_title_pattern']);
258          $blog_settings->system->put('media_img_use_dto_first',!empty($_POST['media_img_use_dto_first']));
259          $blog_settings->system->put('media_img_no_date_alone',!empty($_POST['media_img_no_date_alone']));
260          $blog_settings->system->put('media_img_default_size',$_POST['media_img_default_size']);
261          $blog_settings->system->put('media_img_default_alignment',$_POST['media_img_default_alignment']);
262          $blog_settings->system->put('media_img_default_link',!empty($_POST['media_img_default_link']));
263          $blog_settings->system->put('nb_post_per_feed',$nb_post_per_feed);
264          $blog_settings->system->put('nb_comment_per_feed',$nb_comment_per_feed);
265          $blog_settings->system->put('short_feed_items',!empty($_POST['short_feed_items']));
266          if (isset($_POST['robots_policy'])) {
267               $blog_settings->system->put('robots_policy',$_POST['robots_policy']);
268          }
269          $blog_settings->system->put('jquery_version',$_POST['jquery_version']);
270          $blog_settings->system->put('prevents_clickjacking',!empty($_POST['prevents_clickjacking']));
271
272          # --BEHAVIOR-- adminBeforeBlogSettingsUpdate
273          $core->callBehavior('adminBeforeBlogSettingsUpdate',$blog_settings);
274
275          if ($core->auth->isSuperAdmin() && in_array($_POST['url_scan'],$url_scan_combo)) {
276               $blog_settings->system->put('url_scan',$_POST['url_scan']);
277          }
278          dcPage::addSuccessNotice(__('Blog has been successfully updated.'));
279
280          http::redirect(sprintf($redir,$blog_id));
281     }
282     catch (Exception $e)
283     {
284          $core->error->add($e->getMessage());
285     }
286}
287
288if ($standalone) {
289     $breadcrumb = dcPage::breadcrumb(
290          array(
291               html::escapeHTML($blog_name) => '',
292               __('Blog settings') => ''
293          )
294     );
295} else {
296     $breadcrumb = dcPage::breadcrumb(
297          array(
298               __('System') => '',
299               __('Blogs') => $core->adminurl->get("admin.blogs"),
300               __('Blog settings').' : '.html::escapeHTML($blog_name) => ''
301          ));
302}
303
304dcPage::open(__('Blog settings'),
305     '<script type="text/javascript">'."\n".
306     "//<![CDATA["."\n".
307     dcPage::jsVar('dotclear.msg.warning_path_info',
308          __('Warning: except for special configurations, it is generally advised to have a trailing "/" in your blog URL in PATH_INFO mode.'))."\n".
309     dcPage::jsVar('dotclear.msg.warning_query_string',
310          __('Warning: except for special configurations, it is generally advised to have a trailing "?" in your blog URL in QUERY_STRING mode.'))."\n".
311     "//]]>".
312     "</script>".
313     dcPage::jsConfirmClose('blog-form').
314     $core->callBehavior('adminPostEditor').
315     dcPage::jsLoad('js/_blog_pref.js').
316
317
318     # --BEHAVIOR-- adminBlogPreferencesHeaders
319     $core->callBehavior('adminBlogPreferencesHeaders').
320
321     dcPage::jsPageTabs(),
322     $breadcrumb
323);
324
325if ($blog_id)
326{
327     if (!empty($_GET['add'])) {
328          dcPage::success(__('Blog has been successfully created.'));
329     }
330
331     if (!empty($_GET['upd'])) {
332          dcPage::success(__('Blog has been successfully updated.'));
333     }
334
335     echo
336     '<div class="multi-part" id="params" title="'.__('Parameters').'">'.
337     '<h3 class="out-of-screen-if-js">'.__('Parameters').'</h3>'.
338     '<form action="'.$action.'" method="post" id="blog-form">';
339
340     echo
341     '<div class="fieldset"><h4>'.__('Blog details').'</h4>'.
342     $core->formNonce();
343
344     if ($core->auth->isSuperAdmin())
345     {
346          echo
347          '<p><label for="blog_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label>'.
348          form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</p>'.
349          '<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> '.
350          '<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>';
351     } else {
352          /*
353          Only super admins can change the blog ID and URL, but we need to pass
354          their values to the POST request via hidden html input values  so as
355          to allow admins to update other settings.
356          Otherwise dcCore::getBlogCursor() throws an exception.
357          */
358          echo form::field('blog_id', 30, 32, html::escapeHTML($blog_id), '', '', false, 'hidden="hidden"');
359          echo form::field('blog_url', 50, 255, html::escapeHTML($blog_url), '', '', false, 'hidden="hidden"');
360     }
361
362     echo
363     '<p><label for="blog_name" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').'</label>'.
364     form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</p>';
365
366     if ($core->auth->isSuperAdmin())
367     {
368          echo
369          '<p><label for="blog_url" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label>'.
370          form::field('blog_url',50,255,html::escapeHTML($blog_url)).'</p>'.
371
372          '<p><label for="url_scan">'.__('URL scan method:').'</label>'.
373          form::combo('url_scan',$url_scan_combo,$blog_settings->system->url_scan).'</p>';
374
375          try
376          {
377               # Test URL of blog by testing it's ATOM feed
378               $file = $blog_url.$core->url->getURLFor('feed','atom');
379               $path = '';
380               $status = '404';
381               $content = '';
382
383               $client = netHttp::initClient($file,$path);
384               if ($client !== false) {
385                    $client->setTimeout(4);
386                    $client->setUserAgent($_SERVER['HTTP_USER_AGENT']);
387                    $client->get($path);
388                    $status = $client->getStatus();
389                    $content = $client->getContent();
390               }
391               if ($status != '200') {
392                    // Might be 404 (URL not found), 670 (blog not online), ...
393                    echo
394                    '<p class="form-note warn">'.
395                    sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> return a <strong>%s</strong> status).'),
396                              $file,$status).
397                    '</p>';
398               } else {
399                    if (substr($content,0,6) != '<?xml ') {
400                         // Not well formed XML feed
401                         echo
402                         '<p class="form-note warn">'.
403                         sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> does not return an ATOM feed).'),
404                                   $file).
405                         '</p>';
406                    }
407               }
408          }
409          catch (Exception $e)
410          {
411               $core->error->add($e->getMessage());
412          }
413          echo
414          '<p><label for="blog_status">'.__('Blog status:').'</label>'.
415          form::combo('blog_status',$status_combo,$blog_status).'</p>';
416     }
417
418     echo
419     '<p class="area"><label for="blog_desc">'.__('Blog description:').'</label>'.
420     form::textarea('blog_desc',60,5,html::escapeHTML($blog_desc)).'</p>'.
421     '</div>';
422
423
424     echo
425     '<div class="fieldset"><h4>'.__('Blog configuration').'</h4>'.
426     '<div class="two-cols">'.
427     '<div class="col">'.
428     '<p><label for="editor">'.__('Blog editor name:').'</label>'.
429     form::field('editor',30,255,html::escapeHTML($blog_settings->system->editor)).
430     '</p>'.
431
432     '<p><label for="lang">'.__('Default language:').'</label>'.
433     form::combo('lang',$lang_combo,$blog_settings->system->lang,'l10n').
434     '</p>'.
435
436     '<p><label for="blog_timezone">'.__('Blog timezone:').'</label>'.
437     form::combo('blog_timezone',dt::getZones(true,true),html::escapeHTML($blog_settings->system->blog_timezone)).
438     '</p>'.
439
440     '<p><label for="copyright_notice">'.__('Copyright notice:').'</label>'.
441     form::field('copyright_notice',30,255,html::escapeHTML($blog_settings->system->copyright_notice)).
442     '</p>'.
443     '</div>'.
444
445     '<div class="col">'.
446     '<p><label for="post_url_format">'.__('New post URL format:').'</label>'.
447     form::combo('post_url_format',$post_url_combo,html::escapeHTML($blog_settings->system->post_url_format)).
448     '</p>'.
449
450     '<p><label for="note_title_tag">'.__('HTML tag for the title of the notes on the blog:').'</label>'.
451     form::combo('note_title_tag',$note_title_tag_combo,$blog_settings->system->note_title_tag).
452     '</p>'.
453
454     '<p><label for="enable_xmlrpc" class="classic">'.
455     form::checkbox('enable_xmlrpc','1',$blog_settings->system->enable_xmlrpc).
456     __('Enable XML/RPC interface').'</label>'.'</p>';
457
458     echo
459          '<p class="form-note info">'.__('XML/RPC interface allows you to edit your blog with an external client.').'</p>';
460
461     if ($blog_settings->system->enable_xmlrpc) {
462          echo
463          '<p>'.__('XML/RPC interface is active. You should set the following parameters on your XML/RPC client:').'</p>'.
464          '<ul>'.
465          '<li>'.__('Server URL:').' <strong><code>'.
466          sprintf(DC_XMLRPC_URL,$core->blog->url,$core->blog->id).
467          '</code></strong></li>'.
468          '<li>'.__('Blogging system:').' <strong><code>Movable Type</code></strong></li>'.
469          '<li>'.__('User name:').' <strong><code>'.$core->auth->userID().'</code></strong></li>'.
470          '<li>'.__('Password:').' <strong><code>&lt;'.__('your password').'&gt;</code></strong></li>'.
471          '<li>'.__('Blog ID:').' <strong><code>1</code></strong></li>'.
472          '</ul>';
473     }
474
475     echo
476     '</div>'.
477     '</div>'.
478     '<br class="clear" />'. //Opera sucks
479     '</div>';
480
481     echo
482     '<div class="fieldset"><h4>'.__('Comments and trackbacks').'</h4>'.
483
484     '<div class="two-cols">'.
485
486     '<div class="col">'.
487     '<p><label for="allow_comments" class="classic">'.
488     form::checkbox('allow_comments','1',$blog_settings->system->allow_comments).
489     __('Accept comments').'</label></p>'.
490     '<p><label for="comments_pub" class="classic">'.
491     form::checkbox('comments_pub','1',!$blog_settings->system->comments_pub).
492     __('Moderate comments').'</label></p>'.
493     '<p><label for="comments_ttl" class="classic">'.sprintf(__('Leave comments open for %s days').'.',
494     form::field('comments_ttl',2,3,$blog_settings->system->comments_ttl)).
495     '</label></p>'.
496     '<p class="form-note">'.__('No limit: leave blank.').'</p>'.
497     '<p><label for="wiki_comments" class="classic">'.
498     form::checkbox('wiki_comments','1',$blog_settings->system->wiki_comments).
499     __('Wiki syntax for comments').'</label></p>'.
500     '<p><label for="comment_preview_optional" class="classic">'.
501     form::checkbox('comment_preview_optional','1',$blog_settings->system->comment_preview_optional).
502     __('Preview of comment before submit is not mandatory').'</label></p>'.
503     '</div>'.
504
505     '<div class="col">'.
506     '<p><label for="allow_trackbacks" class="classic">'.
507     form::checkbox('allow_trackbacks','1',$blog_settings->system->allow_trackbacks).
508     __('Accept trackbacks').'</label></p>'.
509     '<p><label for="trackbacks_pub" class="classic">'.
510     form::checkbox('trackbacks_pub','1',!$blog_settings->system->trackbacks_pub).
511     __('Moderate trackbacks').'</label></p>'.
512     '<p><label for="trackbacks_ttl" class="classic">'.sprintf(__('Leave trackbacks open for %s days').'.',
513     form::field('trackbacks_ttl',2,3,$blog_settings->system->trackbacks_ttl)).'</label></p>'.
514     '<p class="form-note">'.__('No limit: leave blank.').'</p>'.
515     '<p><label for="comments_nofollow" class="classic">'.
516     form::checkbox('comments_nofollow','1',$blog_settings->system->comments_nofollow).
517     __('Add "nofollow" relation on comments and trackbacks links').'</label></p>'.
518     '</div>'.
519     '<br class="clear" />'. //Opera sucks
520
521     '</div>'.
522     '<br class="clear" />'. //Opera sucks
523     '</div>';
524
525     echo
526     '<div class="fieldset"><h4>'.__('Blog presentation').'</h4>'.
527     '<div class="two-cols">'.
528     '<div class="col">'.
529     '<p><label for="date_format">'.__('Date format:').'</label> '.
530     form::field('date_format',30,255,html::escapeHTML($blog_settings->system->date_format)).
531     form::combo('date_format_select',$date_formats_combo,'','','',false,'title="'.__('Pattern of date').'"').
532     '</p>'.
533     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->date_format)).'</p>'.
534
535     '<p><label for="time_format">'.__('Time format:').'</label>'.
536     form::field('time_format',30,255,html::escapeHTML($blog_settings->system->time_format)).
537     form::combo('time_format_select',$time_formats_combo,'','','',false,'title="'.__('Pattern of time').'"').
538     '</p>'.
539     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->time_format)).'</p>'.
540
541     '<p><label for="use_smilies" class="classic">'.
542     form::checkbox('use_smilies','1',$blog_settings->system->use_smilies).
543     __('Display smilies on entries and comments').'</label></p>'.
544     '</div>'.
545
546     '<div class="col">'.
547     '<p><label for="nb_post_for_home" class="classic">'.sprintf(__('Display %s entries on home page'),
548     form::field('nb_post_for_home',2,3,$blog_settings->system->nb_post_for_home)).
549     '</label></p>'.
550
551     '<p><label for="nb_post_per_page" class="classic">'.sprintf(__('Display %s entries per page'),
552     form::field('nb_post_per_page',2,3,$blog_settings->system->nb_post_per_page)).
553     '</label></p>'.
554
555     '<p><label for="nb_post_per_feed" class="classic">'.sprintf(__('Display %s entries per feed'),
556     form::field('nb_post_per_feed',2,3,$blog_settings->system->nb_post_per_feed)).
557     '</label></p>'.
558
559     '<p><label for="nb_comment_per_feed" class="classic">'.sprintf(__('Display %s comments per feed'),
560     form::field('nb_comment_per_feed',2,3,$blog_settings->system->nb_comment_per_feed)).
561     '</label></p>'.
562
563     '<p><label for="short_feed_items" class="classic">'.
564     form::checkbox('short_feed_items','1',$blog_settings->system->short_feed_items).
565     __('Truncate feeds').'</label></p>'.
566
567     '<p><label for="inc_subcats" class="classic">'.
568     form::checkbox('inc_subcats','1',$blog_settings->system->inc_subcats).
569     __('Include sub-categories in category page and category posts feed').'</label></p>'.
570     '</div>'.
571    '</div>'.
572     '<br class="clear" />'. //Opera sucks
573     '</div>';
574
575     echo
576     '<div class="fieldset"><h4 id="medias-settings">'.__('Media and images').'</h4>'.
577          '<p class="form-note warning">'.
578     __('Please note that if you change current settings bellow, they will now apply to all new images in the media manager.').
579     ' '.__('Be carefull if you share it with other blogs in your installation.').'</p>'.
580
581     '<div class="two-cols">'.
582     '<div class="col">'.
583     '<h5>'.__('Generated image sizes (in pixels)').'</h5>'.
584     '<p class="field"><label for="media_img_t_size">Thumbnail</label> '.
585     form::field('media_img_t_size',3,3,$blog_settings->system->media_img_t_size).'</p>'.
586
587     '<p class="field"><label for="media_img_s_size">Small</label> '.
588     form::field('media_img_s_size',3,3,$blog_settings->system->media_img_s_size).'</p>'.
589
590     '<p class="field"><label for="media_img_m_size">Medium</label> '.
591     form::field('media_img_m_size',3,3,$blog_settings->system->media_img_m_size).'</p>'.
592     '</div>'.
593
594     '<div class="col">'.
595     '<h5>'.__('Default image insertion attributes').'</h5>'.
596     '<p class="vertical-separator"><label for="media_img_title_pattern">'.__('Inserted image title').'</label>'.
597     form::combo('media_img_title_pattern',$img_title_combo,html::escapeHTML($blog_settings->system->media_img_title_pattern)).'</p>'.
598     '<p><label for="media_img_use_dto_first" class="classic">'.
599     form::checkbox('media_img_use_dto_first','1',$blog_settings->system->media_img_use_dto_first).
600     __('Use original media date if possible').'</label></p>'.
601     '<p><label for="media_img_no_date_alone" class="classic">'.
602     form::checkbox('media_img_no_date_alone','1',$blog_settings->system->media_img_no_date_alone).
603     __('Do not display date if alone in title').'</label></p>'.
604     '<p class="form-note info">'.__('It is retrieved from the picture\'s metadata.').'</p>'.
605
606     '<p class="field vertical-separator"><label for="media_img_default_size">'.__('Size of inserted image:').'</label>'.
607     form::combo('media_img_default_size',$img_default_size_combo,
608          (html::escapeHTML($blog_settings->system->media_img_default_size) != '' ? html::escapeHTML($blog_settings->system->media_img_default_size) : 'm')).
609     '</p>'.
610     '<p class="field"><label for="media_img_default_alignment">'.__('Image alignment:').'</label>'.
611     form::combo('media_img_default_alignment',$img_default_alignment_combo,html::escapeHTML($blog_settings->system->media_img_default_alignment)).
612     '</p>'.
613     '<p><label for="media_img_default_link">'.
614     form::checkbox('media_img_default_link','1',$blog_settings->system->media_img_default_link).
615     __('Insert a link to the original image').'</label></p>'.
616     '</div>'.
617     '</div>'.
618     '<br class="clear" />'. //Opera sucks
619
620     '</div>';
621
622     echo
623     '<div class="fieldset"><h4>'.__('Search engines robots policy').'</h4>';
624
625     $i = 0;
626     foreach ($robots_policy_options as $k => $v)
627     {
628          echo '<p><label for="robots_policy-'.$i.'" class="classic">'.
629          form::radio(array('robots_policy','robots_policy-'.$i),$k,$blog_settings->system->robots_policy == $k).' '.$v.'</label></p>';
630          $i++;
631     }
632
633     echo '</div>';
634
635     echo
636     '<div class="fieldset"><h4>'.__('jQuery javascript library').'</h4>'.
637     '<p><label for="jquery_version" class="classic">'.__('jQuery version to be loaded for this blog:').'</label>'.' '.
638     form::combo('jquery_version',$jquery_versions_combo,$blog_settings->system->jquery_version).
639     '</p>'.
640     '<br class="clear" />'. //Opera sucks
641     '</div>';
642
643     echo
644     '<div class="fieldset"><h4>'.__('Blog security').'</h4>'.
645     '<p><label for="prevents_clickjacking" class="classic">'.
646     form::checkbox('prevents_clickjacking','1',$blog_settings->system->prevents_clickjacking).
647     __('Protect the blog from Clickjacking (see <a href="https://en.wikipedia.org/wiki/Clickjacking">Wikipedia</a>)').'</label></p>'.
648     '<br class="clear" />'. //Opera sucks
649     '</div>';
650
651     # --BEHAVIOR-- adminBlogPreferencesForm
652     $core->callBehavior('adminBlogPreferencesForm',$core,$blog_settings);
653
654     echo
655     '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
656     (!$standalone ? form::hidden('id',$blog_id) : '').
657     '</p>'.
658     '</form>';
659
660     if ($core->auth->isSuperAdmin() && $blog_id != $core->blog->id)
661     {
662          echo
663          '<form action="'.$core->adminurl->get("admin.blog.del").'" method="post">'.
664          '<p><input type="submit" class="delete" value="'.__('Delete this blog').'" />'.
665          form::hidden(array('blog_id'),$blog_id).
666          $core->formNonce().'</p>'.
667          '</form>';
668     } else {
669          if ($blog_id == $core->blog->id) {
670               echo '<p class="message">'.__('The current blog cannot be deleted.').'</p>';
671          } else {
672               echo '<p class="message">'.__('Only superadmin can delete a blog.').'</p>';
673          }
674     }
675
676     echo '</div>';
677
678     #
679     # Users on the blog (with permissions)
680
681     $blog_users = $core->getBlogPermissions($blog_id,$core->auth->isSuperAdmin());
682     $perm_types = $core->auth->getPermissionsTypes();
683
684     echo
685     '<div class="multi-part" id="users" title="'.__('Users').'">'.
686     '<h3 class="out-of-screen-if-js">'.__('Users on this blog').'</h3>';
687
688     if (empty($blog_users))
689     {
690          echo '<p>'.__('No users').'</p>';
691     }
692     else
693     {
694          if ($core->auth->isSuperAdmin()) {
695               $user_url_p = '<a href="'.$core->adminurl->get("admin.user",array('id' => '%1$s'),'&amp;',true).'">%1$s</a>';
696          } else {
697               $user_url_p = '%1$s';
698          }
699
700          # Sort users list on user_id key
701          ksort($blog_users);
702
703          $post_type = $core->getPostTypes();
704          $current_blog_id = $core->blog->id;
705          if ($blog_id != $core->blog->id) {
706               $core->setBlog($blog_id);
707          }
708
709          foreach ($blog_users as $k => $v)
710          {
711               if (count($v['p']) > 0)
712               {
713                    echo
714                    '<div class="user-perm">'.
715                    '<h4>'.sprintf($user_url_p,html::escapeHTML($k)).
716                    ' ('.html::escapeHTML(dcUtils::getUserCN(
717                         $k, $v['name'], $v['firstname'], $v['displayname']
718                    )).')</h4>';
719
720                    if ($core->auth->isSuperAdmin()) {
721                         echo
722                         '<p>'.__('Email:').' '.
723                         ($v['email'] != '' ? '<a href="mailto:'.$v['email'].'">'.$v['email'].'</a>' : __('(none)')).
724                         '</p>';
725                    }
726
727                    echo
728                    '<h5>'.__('Publications on this blog:').'</h5>'.
729                    '<ul>';
730                    foreach ($post_type as $type => $pt_info) {
731                         $params = array(
732                              'post_type' => $type,
733                              'user_id' => $k
734                              );
735                         echo '<li>'.sprintf(__('%1$s: %2$s'),__($pt_info['label']),$core->blog->getPosts($params,true)->f(0)).'</li>';
736                    }
737                    echo
738                    '</ul>';
739
740                    echo
741                    '<h5>'.__('Permissions:').'</h5>'.
742                    '<ul>';
743                    if ($v['super']) {
744                         echo '<li class="user_super">'.__('Super administrator').'<br />'.
745                         '<span class="form-note">'.__('All rights on all blogs.').'</span></li>';
746                    } else {
747                         foreach ($v['p'] as $p => $V) {
748                              if (isset($perm_types[$p])) {
749                                   echo '<li '.($p == 'admin' ? 'class="user_admin"' : '').'>'.__($perm_types[$p]);
750                              } else {
751                                   echo '<li>'.sprintf(__('[%s] (unreferenced permission)'),$p);
752                              }
753
754                              if($p == 'admin') {
755                                   echo '<br /><span class="form-note">'.__('All rights on this blog.').'</span>';
756                              }
757                              echo '</li>';
758                         }
759                    }
760                    echo
761                    '</ul>';
762
763                    if (!$v['super'] && $core->auth->isSuperAdmin()) {
764                         echo
765                         '<form action="'.$core->adminurl->get('admin.user.actions').'" method="post">'.
766                         '<p class="change-user-perm"><input type="submit" class="reset" value="'.__('Change permissions').'" />'.
767                         form::hidden(array('redir'),$core->adminurl->get("admin.blog.pref",array('id' => $k),'&')).
768                         form::hidden(array('action'),'perms').
769                         form::hidden(array('users[]'),$k).
770                         form::hidden(array('blogs[]'),$blog_id).
771                         $core->formNonce().
772                         '</p>'.
773                         '</form>';
774                    }
775                    echo '</div>';
776               }
777          }
778          if ($current_blog_id != $core->blog->id) {
779               $core->setBlog($current_blog_id);
780          }
781     }
782
783     echo '</div>';
784}
785
786dcPage::helpBlock('core_blog_pref');
787dcPage::close();
Note: See TracBrowser for help on using the repository browser.

Sites map