Dotclear

source: admin/blog_pref.php @ 3558:22c217c13bde

Revision 3558:22c217c13bde, 31.2 KB checked in by franck <carnet.franck.paul@…>, 8 years ago (diff)

Opera does not suck anymore :-p

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

Sites map