Dotclear

source: admin/blog_pref.php @ 3138:fdc62ca291e0

Revision 3138:fdc62ca291e0, 30.2 KB checked in by franck <carnet.franck.paul@…>, 10 years ago (diff)

Make Flash player fallback insertion optional, not anymore needed with modern browsers supporting <video> and <audio> HTML5 tags.

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     $media_video_width = abs((integer) $_POST['media_video_width']);
184     if ($media_video_width < 0) { $media_video_width = 400; }
185
186     $media_video_height = abs((integer) $_POST['media_video_height']);
187     if ($media_video_height < 0) { $media_video_height = 300; }
188
189     $nb_post_for_home = abs((integer) $_POST['nb_post_for_home']);
190     if ($nb_post_for_home <= 1) { $nb_post_for_home = 1; }
191
192     $nb_post_per_page = abs((integer) $_POST['nb_post_per_page']);
193     if ($nb_post_per_page <= 1) { $nb_post_per_page = 1; }
194
195     $nb_post_per_feed = abs((integer) $_POST['nb_post_per_feed']);
196     if ($nb_post_per_feed <= 1) { $nb_post_per_feed = 1; }
197
198     $nb_comment_per_feed = abs((integer) $_POST['nb_comment_per_feed']);
199     if ($nb_comment_per_feed <= 1) { $nb_comment_per_feed = 1; }
200
201     try
202     {
203          if ($cur->blog_id != null && $cur->blog_id != $blog_id) {
204               $rs = $core->getBlog($cur->blog_id);
205
206               if ($rs) {
207                    throw new Exception(__('This blog ID is already used.'));
208               }
209          }
210
211          # --BEHAVIOR-- adminBeforeBlogUpdate
212          $core->callBehavior('adminBeforeBlogUpdate',$cur,$blog_id);
213
214          if (!preg_match('/^[a-z]{2}(-[a-z]{2})?$/',$_POST['lang'])) {
215               throw new Exception(__('Invalid language code'));
216          }
217
218          $core->updBlog($blog_id,$cur);
219
220          # --BEHAVIOR-- adminAfterBlogUpdate
221          $core->callBehavior('adminAfterBlogUpdate',$cur,$blog_id);
222
223          if ($cur->blog_id != null && $cur->blog_id != $blog_id) {
224               if ($blog_id == $core->blog->id) {
225                    $core->setBlog($cur->blog_id);
226                    $_SESSION['sess_blog_id'] = $cur->blog_id;
227                    $blog_settings = $core->blog->settings;
228               } else {
229                    $blog_settings = new dcSettings($core,$cur->blog_id);
230               }
231
232               $blog_id = $cur->blog_id;
233          }
234
235
236          $blog_settings->addNameSpace('system');
237
238          $blog_settings->system->put('editor',$_POST['editor']);
239          $blog_settings->system->put('copyright_notice',$_POST['copyright_notice']);
240          $blog_settings->system->put('post_url_format',$_POST['post_url_format']);
241          $blog_settings->system->put('lang',$_POST['lang']);
242          $blog_settings->system->put('blog_timezone',$_POST['blog_timezone']);
243          $blog_settings->system->put('date_format',$_POST['date_format']);
244          $blog_settings->system->put('time_format',$_POST['time_format']);
245          $blog_settings->system->put('comments_ttl',abs((integer) $_POST['comments_ttl']));
246          $blog_settings->system->put('trackbacks_ttl',abs((integer) $_POST['trackbacks_ttl']));
247          $blog_settings->system->put('allow_comments',!empty($_POST['allow_comments']));
248          $blog_settings->system->put('allow_trackbacks',!empty($_POST['allow_trackbacks']));
249          $blog_settings->system->put('comments_pub',empty($_POST['comments_pub']));
250          $blog_settings->system->put('trackbacks_pub',empty($_POST['trackbacks_pub']));
251          $blog_settings->system->put('comments_nofollow',!empty($_POST['comments_nofollow']));
252          $blog_settings->system->put('wiki_comments',!empty($_POST['wiki_comments']));
253          $blog_settings->system->put('comment_preview_optional',!empty($_POST['comment_preview_optional']));
254          $blog_settings->system->put('enable_xmlrpc',!empty($_POST['enable_xmlrpc']));
255          $blog_settings->system->put('note_title_tag',$_POST['note_title_tag']);
256          $blog_settings->system->put('nb_post_for_home',$nb_post_for_home);
257          $blog_settings->system->put('nb_post_per_page',$nb_post_per_page);
258          $blog_settings->system->put('use_smilies',!empty($_POST['use_smilies']));
259          $blog_settings->system->put('no_search',!empty($_POST['no_search']));
260          $blog_settings->system->put('inc_subcats',!empty($_POST['inc_subcats']));
261          $blog_settings->system->put('media_img_t_size',$media_img_t_size);
262          $blog_settings->system->put('media_img_s_size',$media_img_s_size);
263          $blog_settings->system->put('media_img_m_size',$media_img_m_size);
264          $blog_settings->system->put('media_video_width',$media_video_width);
265          $blog_settings->system->put('media_video_height',$media_video_height);
266          $blog_settings->system->put('media_flash_fallback',!empty($_POST['media_flash_fallback']));
267          $blog_settings->system->put('media_img_title_pattern',$_POST['media_img_title_pattern']);
268          $blog_settings->system->put('media_img_use_dto_first',!empty($_POST['media_img_use_dto_first']));
269          $blog_settings->system->put('media_img_no_date_alone',!empty($_POST['media_img_no_date_alone']));
270          $blog_settings->system->put('media_img_default_size',$_POST['media_img_default_size']);
271          $blog_settings->system->put('media_img_default_alignment',$_POST['media_img_default_alignment']);
272          $blog_settings->system->put('media_img_default_link',!empty($_POST['media_img_default_link']));
273          $blog_settings->system->put('nb_post_per_feed',$nb_post_per_feed);
274          $blog_settings->system->put('nb_comment_per_feed',$nb_comment_per_feed);
275          $blog_settings->system->put('short_feed_items',!empty($_POST['short_feed_items']));
276          if (isset($_POST['robots_policy'])) {
277               $blog_settings->system->put('robots_policy',$_POST['robots_policy']);
278          }
279          $blog_settings->system->put('jquery_version',$_POST['jquery_version']);
280          $blog_settings->system->put('prevents_clickjacking',!empty($_POST['prevents_clickjacking']));
281
282          # --BEHAVIOR-- adminBeforeBlogSettingsUpdate
283          $core->callBehavior('adminBeforeBlogSettingsUpdate',$blog_settings);
284
285          if ($core->auth->isSuperAdmin() && in_array($_POST['url_scan'],$url_scan_combo)) {
286               $blog_settings->system->put('url_scan',$_POST['url_scan']);
287          }
288          dcPage::addSuccessNotice(__('Blog has been successfully updated.'));
289
290          http::redirect(sprintf($redir,$blog_id));
291     }
292     catch (Exception $e)
293     {
294          $core->error->add($e->getMessage());
295     }
296}
297
298if ($standalone) {
299     $breadcrumb = dcPage::breadcrumb(
300          array(
301               html::escapeHTML($blog_name) => '',
302               __('Blog settings') => ''
303          )
304     );
305} else {
306     $breadcrumb = dcPage::breadcrumb(
307          array(
308               __('System') => '',
309               __('Blogs') => $core->adminurl->get("admin.blogs"),
310               __('Blog settings').' : '.html::escapeHTML($blog_name) => ''
311          ));
312}
313
314dcPage::open(__('Blog settings'),
315     '<script type="text/javascript">'."\n".
316     "//<![CDATA["."\n".
317     dcPage::jsVar('dotclear.msg.warning_path_info',
318          __('Warning: except for special configurations, it is generally advised to have a trailing "/" in your blog URL in PATH_INFO mode.'))."\n".
319     dcPage::jsVar('dotclear.msg.warning_query_string',
320          __('Warning: except for special configurations, it is generally advised to have a trailing "?" in your blog URL in QUERY_STRING mode.'))."\n".
321     "//]]>".
322     "</script>".
323     dcPage::jsConfirmClose('blog-form').
324     $core->callBehavior('adminPostEditor').
325     dcPage::jsLoad('js/_blog_pref.js').
326
327
328     # --BEHAVIOR-- adminBlogPreferencesHeaders
329     $core->callBehavior('adminBlogPreferencesHeaders').
330
331     dcPage::jsPageTabs(),
332     $breadcrumb
333);
334
335if ($blog_id)
336{
337     if (!empty($_GET['add'])) {
338          dcPage::success(__('Blog has been successfully created.'));
339     }
340
341     if (!empty($_GET['upd'])) {
342          dcPage::success(__('Blog has been successfully updated.'));
343     }
344
345     echo
346     '<div class="multi-part" id="params" title="'.__('Parameters').'">'.
347     '<h3 class="out-of-screen-if-js">'.__('Parameters').'</h3>'.
348     '<form action="'.$action.'" method="post" id="blog-form">';
349
350     echo
351     '<div class="fieldset"><h4>'.__('Blog details').'</h4>'.
352     $core->formNonce();
353
354     if ($core->auth->isSuperAdmin())
355     {
356          echo
357          '<p><label for="blog_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label>'.
358          form::field('blog_id',30,32,html::escapeHTML($blog_id)).'</p>'.
359          '<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> '.
360          '<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>';
361     } else {
362          /*
363          Only super admins can change the blog ID and URL, but we need to pass
364          their values to the POST request via hidden html input values  so as
365          to allow admins to update other settings.
366          Otherwise dcCore::getBlogCursor() throws an exception.
367          */
368          echo form::field('blog_id', 30, 32, html::escapeHTML($blog_id), '', '', false, 'hidden="hidden"');
369          echo form::field('blog_url', 50, 255, html::escapeHTML($blog_url), '', '', false, 'hidden="hidden"');
370     }
371
372     echo
373     '<p><label for="blog_name" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog name:').'</label>'.
374     form::field('blog_name',30,255,html::escapeHTML($blog_name)).'</p>';
375
376     if ($core->auth->isSuperAdmin())
377     {
378          echo
379          '<p><label for="blog_url" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label>'.
380          form::field('blog_url',50,255,html::escapeHTML($blog_url)).'</p>'.
381
382          '<p><label for="url_scan">'.__('URL scan method:').'</label>'.
383          form::combo('url_scan',$url_scan_combo,$blog_settings->system->url_scan).'</p>';
384
385          try
386          {
387               # Test URL of blog by testing it's ATOM feed
388               $file = $blog_url.$core->url->getURLFor('feed','atom');
389               $path = '';
390               $status = '404';
391               $content = '';
392
393               $client = netHttp::initClient($file,$path);
394               if ($client !== false) {
395                    $client->setTimeout(4);
396                    $client->setUserAgent($_SERVER['HTTP_USER_AGENT']);
397                    $client->get($path);
398                    $status = $client->getStatus();
399                    $content = $client->getContent();
400               }
401               if ($status != '200') {
402                    // Might be 404 (URL not found), 670 (blog not online), ...
403                    echo
404                    '<p class="form-note warn">'.
405                    sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> return a <strong>%s</strong> status).'),
406                              $file,$status).
407                    '</p>';
408               } else {
409                    if (substr($content,0,6) != '<?xml ') {
410                         // Not well formed XML feed
411                         echo
412                         '<p class="form-note warn">'.
413                         sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> does not return an ATOM feed).'),
414                                   $file).
415                         '</p>';
416                    }
417               }
418          }
419          catch (Exception $e)
420          {
421               $core->error->add($e->getMessage());
422          }
423          echo
424          '<p><label for="blog_status">'.__('Blog status:').'</label>'.
425          form::combo('blog_status',$status_combo,$blog_status).'</p>';
426     }
427
428     echo
429     '<p class="area"><label for="blog_desc">'.__('Blog description:').'</label>'.
430     form::textarea('blog_desc',60,5,html::escapeHTML($blog_desc)).'</p>'.
431     '</div>';
432
433
434     echo
435     '<div class="fieldset"><h4>'.__('Blog configuration').'</h4>'.
436     '<div class="two-cols">'.
437     '<div class="col">'.
438     '<p><label for="editor">'.__('Blog editor name:').'</label>'.
439     form::field('editor',30,255,html::escapeHTML($blog_settings->system->editor)).
440     '</p>'.
441
442     '<p><label for="lang">'.__('Default language:').'</label>'.
443     form::combo('lang',$lang_combo,$blog_settings->system->lang,'l10n').
444     '</p>'.
445
446     '<p><label for="blog_timezone">'.__('Blog timezone:').'</label>'.
447     form::combo('blog_timezone',dt::getZones(true,true),html::escapeHTML($blog_settings->system->blog_timezone)).
448     '</p>'.
449
450     '<p><label for="copyright_notice">'.__('Copyright notice:').'</label>'.
451     form::field('copyright_notice',30,255,html::escapeHTML($blog_settings->system->copyright_notice)).
452     '</p>'.
453     '</div>'.
454
455     '<div class="col">'.
456     '<p><label for="post_url_format">'.__('New post URL format:').'</label>'.
457     form::combo('post_url_format',$post_url_combo,html::escapeHTML($blog_settings->system->post_url_format)).
458     '</p>'.
459
460     '<p><label for="note_title_tag">'.__('HTML tag for the title of the notes on the blog:').'</label>'.
461     form::combo('note_title_tag',$note_title_tag_combo,$blog_settings->system->note_title_tag).
462     '</p>'.
463
464     '<p><label for="enable_xmlrpc" class="classic">'.
465     form::checkbox('enable_xmlrpc','1',$blog_settings->system->enable_xmlrpc).
466     __('Enable XML/RPC interface').'</label>'.'</p>';
467
468     echo
469          '<p class="form-note info">'.__('XML/RPC interface allows you to edit your blog with an external client.').'</p>';
470
471     if ($blog_settings->system->enable_xmlrpc) {
472          echo
473          '<p>'.__('XML/RPC interface is active. You should set the following parameters on your XML/RPC client:').'</p>'.
474          '<ul>'.
475          '<li>'.__('Server URL:').' <strong><code>'.
476          sprintf(DC_XMLRPC_URL,$core->blog->url,$core->blog->id).
477          '</code></strong></li>'.
478          '<li>'.__('Blogging system:').' <strong><code>Movable Type</code></strong></li>'.
479          '<li>'.__('User name:').' <strong><code>'.$core->auth->userID().'</code></strong></li>'.
480          '<li>'.__('Password:').' <strong><code>&lt;'.__('your password').'&gt;</code></strong></li>'.
481          '<li>'.__('Blog ID:').' <strong><code>1</code></strong></li>'.
482          '</ul>';
483     }
484
485     echo
486     '</div>'.
487     '</div>'.
488     '<br class="clear" />'. //Opera sucks
489     '</div>';
490
491     echo
492     '<div class="fieldset"><h4>'.__('Comments and trackbacks').'</h4>'.
493
494     '<div class="two-cols">'.
495
496     '<div class="col">'.
497     '<p><label for="allow_comments" class="classic">'.
498     form::checkbox('allow_comments','1',$blog_settings->system->allow_comments).
499     __('Accept comments').'</label></p>'.
500     '<p><label for="comments_pub" class="classic">'.
501     form::checkbox('comments_pub','1',!$blog_settings->system->comments_pub).
502     __('Moderate comments').'</label></p>'.
503     '<p><label for="comments_ttl" class="classic">'.sprintf(__('Leave comments open for %s days').'.',
504     form::field('comments_ttl',2,3,$blog_settings->system->comments_ttl)).
505     '</label></p>'.
506     '<p class="form-note">'.__('No limit: leave blank.').'</p>'.
507     '<p><label for="wiki_comments" class="classic">'.
508     form::checkbox('wiki_comments','1',$blog_settings->system->wiki_comments).
509     __('Wiki syntax for comments').'</label></p>'.
510     '<p><label for="comment_preview_optional" class="classic">'.
511     form::checkbox('comment_preview_optional','1',$blog_settings->system->comment_preview_optional).
512     __('Preview of comment before submit is not mandatory').'</label></p>'.
513     '</div>'.
514
515     '<div class="col">'.
516     '<p><label for="allow_trackbacks" class="classic">'.
517     form::checkbox('allow_trackbacks','1',$blog_settings->system->allow_trackbacks).
518     __('Accept trackbacks').'</label></p>'.
519     '<p><label for="trackbacks_pub" class="classic">'.
520     form::checkbox('trackbacks_pub','1',!$blog_settings->system->trackbacks_pub).
521     __('Moderate trackbacks').'</label></p>'.
522     '<p><label for="trackbacks_ttl" class="classic">'.sprintf(__('Leave trackbacks open for %s days').'.',
523     form::field('trackbacks_ttl',2,3,$blog_settings->system->trackbacks_ttl)).'</label></p>'.
524     '<p class="form-note">'.__('No limit: leave blank.').'</p>'.
525     '<p><label for="comments_nofollow" class="classic">'.
526     form::checkbox('comments_nofollow','1',$blog_settings->system->comments_nofollow).
527     __('Add "nofollow" relation on comments and trackbacks links').'</label></p>'.
528     '</div>'.
529     '<br class="clear" />'. //Opera sucks
530
531     '</div>'.
532     '<br class="clear" />'. //Opera sucks
533     '</div>';
534
535     echo
536     '<div class="fieldset"><h4>'.__('Blog presentation').'</h4>'.
537     '<div class="two-cols">'.
538     '<div class="col">'.
539     '<p><label for="date_format">'.__('Date format:').'</label> '.
540     form::field('date_format',30,255,html::escapeHTML($blog_settings->system->date_format)).
541     form::combo('date_format_select',$date_formats_combo,'','','',false,'title="'.__('Pattern of date').'"').
542     '</p>'.
543     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->date_format)).'</p>'.
544
545     '<p><label for="time_format">'.__('Time format:').'</label>'.
546     form::field('time_format',30,255,html::escapeHTML($blog_settings->system->time_format)).
547     form::combo('time_format_select',$time_formats_combo,'','','',false,'title="'.__('Pattern of time').'"').
548     '</p>'.
549     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->time_format)).'</p>'.
550
551     '<p><label for="use_smilies" class="classic">'.
552     form::checkbox('use_smilies','1',$blog_settings->system->use_smilies).
553     __('Display smilies on entries and comments').'</label></p>'.
554
555     '<p><label for="no_search" class="classic">'.
556     form::checkbox('no_search','1',$blog_settings->system->no_search).
557     __('Disable internal search system').'</label></p>'.
558     '</div>'.
559
560     '<div class="col">'.
561     '<p><label for="nb_post_for_home" class="classic">'.sprintf(__('Display %s entries on home page'),
562     form::field('nb_post_for_home',2,3,$blog_settings->system->nb_post_for_home)).
563     '</label></p>'.
564
565     '<p><label for="nb_post_per_page" class="classic">'.sprintf(__('Display %s entries per page'),
566     form::field('nb_post_per_page',2,3,$blog_settings->system->nb_post_per_page)).
567     '</label></p>'.
568
569     '<p><label for="nb_post_per_feed" class="classic">'.sprintf(__('Display %s entries per feed'),
570     form::field('nb_post_per_feed',2,3,$blog_settings->system->nb_post_per_feed)).
571     '</label></p>'.
572
573     '<p><label for="nb_comment_per_feed" class="classic">'.sprintf(__('Display %s comments per feed'),
574     form::field('nb_comment_per_feed',2,3,$blog_settings->system->nb_comment_per_feed)).
575     '</label></p>'.
576
577     '<p><label for="short_feed_items" class="classic">'.
578     form::checkbox('short_feed_items','1',$blog_settings->system->short_feed_items).
579     __('Truncate feeds').'</label></p>'.
580
581     '<p><label for="inc_subcats" class="classic">'.
582     form::checkbox('inc_subcats','1',$blog_settings->system->inc_subcats).
583     __('Include sub-categories in category page and category posts feed').'</label></p>'.
584     '</div>'.
585    '</div>'.
586     '<br class="clear" />'. //Opera sucks
587     '</div>';
588
589     echo
590     '<div class="fieldset"><h4 id="medias-settings">'.__('Media and images').'</h4>'.
591          '<p class="form-note warning">'.
592     __('Please note that if you change current settings bellow, they will now apply to all new images in the media manager.').
593     ' '.__('Be carefull if you share it with other blogs in your installation.').'</p>'.
594
595     '<div class="two-cols">'.
596     '<div class="col">'.
597     '<h5>'.__('Generated image sizes (in pixels)').'</h5>'.
598     '<p class="field"><label for="media_img_t_size">'.__('Thumbnail').'</label> '.
599     form::field('media_img_t_size',3,3,$blog_settings->system->media_img_t_size).'</p>'.
600
601     '<p class="field"><label for="media_img_s_size">'.__('Small').'</label> '.
602     form::field('media_img_s_size',3,3,$blog_settings->system->media_img_s_size).'</p>'.
603
604     '<p class="field"><label for="media_img_m_size">'.__('Medium').'</label> '.
605     form::field('media_img_m_size',3,3,$blog_settings->system->media_img_m_size).'</p>'.
606
607     '<h5>'.__('Default size of the inserted video (in pixels)').'</h5>'.
608     '<p class="field"><label for="media_video_width">'.__('Width').'</label> '.
609     form::field('media_video_width',3,3,$blog_settings->system->media_video_width).'</p>'.
610
611     '<p class="field"><label for="media_video_height">'.__('Height').'</label> '.
612     form::field('media_video_height',3,3,$blog_settings->system->media_video_height).'</p>'.
613
614     '<h5>'.__('Flash player').'</h5>'.
615     '<p><label for="media_flash_fallback">'.
616     form::checkbox('media_flash_fallback','1',$blog_settings->system->media_flash_fallback).
617     __('Insert Flash player fallback for video (mp4 or m4v) and audio (mp3) media').'</label></p>'.
618     '<p class="form-note info">'.__('For flv video, the Flash player will be anyway inserted.').'</p>'.
619     '</div>'.
620
621     '<div class="col">'.
622     '<h5>'.__('Default image insertion attributes').'</h5>'.
623     '<p class="vertical-separator"><label for="media_img_title_pattern">'.__('Inserted image title').'</label>'.
624     form::combo('media_img_title_pattern',$img_title_combo,html::escapeHTML($blog_settings->system->media_img_title_pattern)).'</p>'.
625     '<p><label for="media_img_use_dto_first" class="classic">'.
626     form::checkbox('media_img_use_dto_first','1',$blog_settings->system->media_img_use_dto_first).
627     __('Use original media date if possible').'</label></p>'.
628     '<p><label for="media_img_no_date_alone" class="classic">'.
629     form::checkbox('media_img_no_date_alone','1',$blog_settings->system->media_img_no_date_alone).
630     __('Do not display date if alone in title').'</label></p>'.
631     '<p class="form-note info">'.__('It is retrieved from the picture\'s metadata.').'</p>'.
632
633     '<p class="field vertical-separator"><label for="media_img_default_size">'.__('Size of inserted image:').'</label>'.
634     form::combo('media_img_default_size',$img_default_size_combo,
635          (html::escapeHTML($blog_settings->system->media_img_default_size) != '' ? html::escapeHTML($blog_settings->system->media_img_default_size) : 'm')).
636     '</p>'.
637     '<p class="field"><label for="media_img_default_alignment">'.__('Image alignment:').'</label>'.
638     form::combo('media_img_default_alignment',$img_default_alignment_combo,html::escapeHTML($blog_settings->system->media_img_default_alignment)).
639     '</p>'.
640     '<p><label for="media_img_default_link">'.
641     form::checkbox('media_img_default_link','1',$blog_settings->system->media_img_default_link).
642     __('Insert a link to the original image').'</label></p>'.
643     '</div>'.
644     '</div>'.
645     '<br class="clear" />'. //Opera sucks
646
647     '</div>';
648
649     echo
650     '<div class="fieldset"><h4>'.__('Search engines robots policy').'</h4>';
651
652     $i = 0;
653     foreach ($robots_policy_options as $k => $v)
654     {
655          echo '<p><label for="robots_policy-'.$i.'" class="classic">'.
656          form::radio(array('robots_policy','robots_policy-'.$i),$k,$blog_settings->system->robots_policy == $k).' '.$v.'</label></p>';
657          $i++;
658     }
659
660     echo '</div>';
661
662     echo
663     '<div class="fieldset"><h4>'.__('jQuery javascript library').'</h4>'.
664     '<p><label for="jquery_version" class="classic">'.__('jQuery version to be loaded for this blog:').'</label>'.' '.
665     form::combo('jquery_version',$jquery_versions_combo,$blog_settings->system->jquery_version).
666     '</p>'.
667     '<br class="clear" />'. //Opera sucks
668     '</div>';
669
670     echo
671     '<div class="fieldset"><h4>'.__('Blog security').'</h4>'.
672     '<p><label for="prevents_clickjacking" class="classic">'.
673     form::checkbox('prevents_clickjacking','1',$blog_settings->system->prevents_clickjacking).
674     __('Protect the blog from Clickjacking (see <a href="https://en.wikipedia.org/wiki/Clickjacking">Wikipedia</a>)').'</label></p>'.
675     '<br class="clear" />'. //Opera sucks
676     '</div>';
677
678     # --BEHAVIOR-- adminBlogPreferencesForm
679     $core->callBehavior('adminBlogPreferencesForm',$core,$blog_settings);
680
681     echo
682     '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
683     (!$standalone ? form::hidden('id',$blog_id) : '').
684     '</p>'.
685     '</form>';
686
687     if ($core->auth->isSuperAdmin() && $blog_id != $core->blog->id)
688     {
689          echo
690          '<form action="'.$core->adminurl->get("admin.blog.del").'" method="post">'.
691          '<p><input type="submit" class="delete" value="'.__('Delete this blog').'" />'.
692          form::hidden(array('blog_id'),$blog_id).
693          $core->formNonce().'</p>'.
694          '</form>';
695     } else {
696          if ($blog_id == $core->blog->id) {
697               echo '<p class="message">'.__('The current blog cannot be deleted.').'</p>';
698          } else {
699               echo '<p class="message">'.__('Only superadmin can delete a blog.').'</p>';
700          }
701     }
702
703     echo '</div>';
704
705     #
706     # Users on the blog (with permissions)
707
708     $blog_users = $core->getBlogPermissions($blog_id,$core->auth->isSuperAdmin());
709     $perm_types = $core->auth->getPermissionsTypes();
710
711     echo
712     '<div class="multi-part" id="users" title="'.__('Users').'">'.
713     '<h3 class="out-of-screen-if-js">'.__('Users on this blog').'</h3>';
714
715     if (empty($blog_users))
716     {
717          echo '<p>'.__('No users').'</p>';
718     }
719     else
720     {
721          if ($core->auth->isSuperAdmin()) {
722               $user_url_p = '<a href="'.$core->adminurl->get("admin.user",array('id' => '%1$s'),'&amp;',true).'">%1$s</a>';
723          } else {
724               $user_url_p = '%1$s';
725          }
726
727          # Sort users list on user_id key
728          dcUtils::lexicalKeySort($blog_users);
729
730          $post_type = $core->getPostTypes();
731          $current_blog_id = $core->blog->id;
732          if ($blog_id != $core->blog->id) {
733               $core->setBlog($blog_id);
734          }
735
736          foreach ($blog_users as $k => $v)
737          {
738               if (count($v['p']) > 0)
739               {
740                    echo
741                    '<div class="user-perm">'.
742                    '<h4>'.sprintf($user_url_p,html::escapeHTML($k)).
743                    ' ('.html::escapeHTML(dcUtils::getUserCN(
744                         $k, $v['name'], $v['firstname'], $v['displayname']
745                    )).')</h4>';
746
747                    if ($core->auth->isSuperAdmin()) {
748                         echo
749                         '<p>'.__('Email:').' '.
750                         ($v['email'] != '' ? '<a href="mailto:'.$v['email'].'">'.$v['email'].'</a>' : __('(none)')).
751                         '</p>';
752                    }
753
754                    echo
755                    '<h5>'.__('Publications on this blog:').'</h5>'.
756                    '<ul>';
757                    foreach ($post_type as $type => $pt_info) {
758                         $params = array(
759                              'post_type' => $type,
760                              'user_id' => $k
761                              );
762                         echo '<li>'.sprintf(__('%1$s: %2$s'),__($pt_info['label']),$core->blog->getPosts($params,true)->f(0)).'</li>';
763                    }
764                    echo
765                    '</ul>';
766
767                    echo
768                    '<h5>'.__('Permissions:').'</h5>'.
769                    '<ul>';
770                    if ($v['super']) {
771                         echo '<li class="user_super">'.__('Super administrator').'<br />'.
772                         '<span class="form-note">'.__('All rights on all blogs.').'</span></li>';
773                    } else {
774                         foreach ($v['p'] as $p => $V) {
775                              if (isset($perm_types[$p])) {
776                                   echo '<li '.($p == 'admin' ? 'class="user_admin"' : '').'>'.__($perm_types[$p]);
777                              } else {
778                                   echo '<li>'.sprintf(__('[%s] (unreferenced permission)'),$p);
779                              }
780
781                              if($p == 'admin') {
782                                   echo '<br /><span class="form-note">'.__('All rights on this blog.').'</span>';
783                              }
784                              echo '</li>';
785                         }
786                    }
787                    echo
788                    '</ul>';
789
790                    if (!$v['super'] && $core->auth->isSuperAdmin()) {
791                         echo
792                         '<form action="'.$core->adminurl->get('admin.user.actions').'" method="post">'.
793                         '<p class="change-user-perm"><input type="submit" class="reset" value="'.__('Change permissions').'" />'.
794                         form::hidden(array('redir'),$core->adminurl->get("admin.blog.pref",array('id' => $k),'&')).
795                         form::hidden(array('action'),'perms').
796                         form::hidden(array('users[]'),$k).
797                         form::hidden(array('blogs[]'),$blog_id).
798                         $core->formNonce().
799                         '</p>'.
800                         '</form>';
801                    }
802                    echo '</div>';
803               }
804          }
805          if ($current_blog_id != $core->blog->id) {
806               $core->setBlog($current_blog_id);
807          }
808     }
809
810     echo '</div>';
811}
812
813dcPage::helpBlock('core_blog_pref');
814dcPage::close();
Note: See TracBrowser for help on using the repository browser.

Sites map