Dotclear

source: admin/blog_pref.php @ 3394:73ad144127d2

Revision 3394:73ad144127d2, 30.6 KB checked in by franck <carnet.franck.paul@…>, 9 years ago (diff)

Locales, closes #2215

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

Sites map