Dotclear

source: admin/blog_pref.php @ 3421:34cfd92ec45a

Revision 3421:34cfd92ec45a, 30.6 KB checked in by franck <carnet.franck.paul@…>, 9 years ago (diff)

No more <![CDATA[ … ]]> but in rss2.xsl (only useful for XML document, as XHTML)

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

Sites map