Dotclear

source: admin/blog_pref.php @ 3030:1c346de31ad1

Revision 3030:1c346de31ad1, 28.9 KB checked in by franck <carnet.franck.paul@…>, 10 years ago (diff)

Add an blog option to disable internal search (404 on ?q= queries, search widget hidden), fixes #1888

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

Sites map