Dotclear

source: admin/blog_pref.php @ 3639:fe9f4d94f86b

Revision 3639:fe9f4d94f86b, 31.6 KB checked in by franck <carnet.franck.paul@…>, 8 years ago (diff)

Add required attribute for mandatory fields

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),'','',false,'required placeholder="'.__('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     '<br class="clear" />'. //Opera sucks
455
456     '</div>'.
457     '<br class="clear" />'. //Opera sucks
458     '</div>';
459
460     echo
461     '<div class="fieldset"><h4>'.__('Blog presentation').'</h4>'.
462     '<div class="two-cols">'.
463     '<div class="col">'.
464     '<p><label for="date_format">'.__('Date format:').'</label> '.
465     form::field('date_format',30,255,html::escapeHTML($blog_settings->system->date_format)).
466     form::combo('date_format_select',$date_formats_combo,'','','',false,'title="'.__('Pattern of date').'"').
467     '</p>'.
468     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->date_format)).'</p>'.
469
470     '<p><label for="time_format">'.__('Time format:').'</label>'.
471     form::field('time_format',30,255,html::escapeHTML($blog_settings->system->time_format)).
472     form::combo('time_format_select',$time_formats_combo,'','','',false,'title="'.__('Pattern of time').'"').
473     '</p>'.
474     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->time_format)).'</p>'.
475
476     '<p><label for="use_smilies" class="classic">'.
477     form::checkbox('use_smilies','1',$blog_settings->system->use_smilies).
478     __('Display smilies on entries and comments').'</label></p>'.
479
480     '<p><label for="no_search" class="classic">'.
481     form::checkbox('no_search','1',$blog_settings->system->no_search).
482     __('Disable internal search system').'</label></p>'.
483     '</div>'.
484
485     '<div class="col">'.
486     '<p><label for="nb_post_for_home" class="classic">'.sprintf(__('Display %s entries on home page'),
487     form::field('nb_post_for_home',2,3,$blog_settings->system->nb_post_for_home)).
488     '</label></p>'.
489
490     '<p><label for="nb_post_per_page" class="classic">'.sprintf(__('Display %s entries per page'),
491     form::field('nb_post_per_page',2,3,$blog_settings->system->nb_post_per_page)).
492     '</label></p>'.
493
494     '<p><label for="nb_post_per_feed" class="classic">'.sprintf(__('Display %s entries per feed'),
495     form::field('nb_post_per_feed',2,3,$blog_settings->system->nb_post_per_feed)).
496     '</label></p>'.
497
498     '<p><label for="nb_comment_per_feed" class="classic">'.sprintf(__('Display %s comments per feed'),
499     form::field('nb_comment_per_feed',2,3,$blog_settings->system->nb_comment_per_feed)).
500     '</label></p>'.
501
502     '<p><label for="short_feed_items" class="classic">'.
503     form::checkbox('short_feed_items','1',$blog_settings->system->short_feed_items).
504     __('Truncate feeds').'</label></p>'.
505
506     '<p><label for="inc_subcats" class="classic">'.
507     form::checkbox('inc_subcats','1',$blog_settings->system->inc_subcats).
508     __('Include sub-categories in category page and category posts feed').'</label></p>'.
509     '</div>'.
510    '</div>'.
511     '<br class="clear" />'. //Opera sucks
512     '</div>';
513
514     echo
515     '<div class="fieldset"><h4 id="medias-settings">'.__('Media and images').'</h4>'.
516          '<p class="form-note warning">'.
517     __('Please note that if you change current settings bellow, they will now apply to all new images in the media manager.').
518     ' '.__('Be carefull if you share it with other blogs in your installation.').'</p>'.
519
520     '<div class="two-cols">'.
521     '<div class="col">'.
522     '<h5>'.__('Generated image sizes (max dimension in pixels)').'</h5>'.
523     '<p class="field"><label for="media_img_t_size">'.__('Thumbnail').'</label> '.
524     form::field('media_img_t_size',3,3,$blog_settings->system->media_img_t_size).'</p>'.
525
526     '<p class="field"><label for="media_img_s_size">'.__('Small').'</label> '.
527     form::field('media_img_s_size',3,3,$blog_settings->system->media_img_s_size).'</p>'.
528
529     '<p class="field"><label for="media_img_m_size">'.__('Medium').'</label> '.
530     form::field('media_img_m_size',3,3,$blog_settings->system->media_img_m_size).'</p>'.
531
532     '<h5>'.__('Default size of the inserted video (in pixels)').'</h5>'.
533     '<p class="field"><label for="media_video_width">'.__('Width').'</label> '.
534     form::field('media_video_width',3,3,$blog_settings->system->media_video_width).'</p>'.
535
536     '<p class="field"><label for="media_video_height">'.__('Height').'</label> '.
537     form::field('media_video_height',3,3,$blog_settings->system->media_video_height).'</p>'.
538
539     '<h5>'.__('Flash player').'</h5>'.
540     '<p><label for="media_flash_fallback">'.
541     form::checkbox('media_flash_fallback','1',$blog_settings->system->media_flash_fallback).
542     __('Insert Flash player fallback for video (mp4 or m4v) and audio (mp3) media').'</label></p>'.
543     '<p class="form-note info">'.__('For flv video, the Flash player will be anyway inserted.').'</p>'.
544     '</div>'.
545
546     '<div class="col">'.
547     '<h5>'.__('Default image insertion attributes').'</h5>'.
548     '<p class="vertical-separator"><label for="media_img_title_pattern">'.__('Inserted image title').'</label>'.
549     form::combo('media_img_title_pattern',$img_title_combo,html::escapeHTML($blog_settings->system->media_img_title_pattern)).'</p>'.
550     '<p><label for="media_img_use_dto_first" class="classic">'.
551     form::checkbox('media_img_use_dto_first','1',$blog_settings->system->media_img_use_dto_first).
552     __('Use original media date if possible').'</label></p>'.
553     '<p><label for="media_img_no_date_alone" class="classic">'.
554     form::checkbox('media_img_no_date_alone','1',$blog_settings->system->media_img_no_date_alone).
555     __('Do not display date if alone in title').'</label></p>'.
556     '<p class="form-note info">'.__('It is retrieved from the picture\'s metadata.').'</p>'.
557
558     '<p class="field vertical-separator"><label for="media_img_default_size">'.__('Size of inserted image:').'</label>'.
559     form::combo('media_img_default_size',$img_default_size_combo,
560          (html::escapeHTML($blog_settings->system->media_img_default_size) != '' ? html::escapeHTML($blog_settings->system->media_img_default_size) : 'm')).
561     '</p>'.
562     '<p class="field"><label for="media_img_default_alignment">'.__('Image alignment:').'</label>'.
563     form::combo('media_img_default_alignment',$img_default_alignment_combo,html::escapeHTML($blog_settings->system->media_img_default_alignment)).
564     '</p>'.
565     '<p><label for="media_img_default_link">'.
566     form::checkbox('media_img_default_link','1',$blog_settings->system->media_img_default_link).
567     __('Insert a link to the original image').'</label></p>'.
568     '<p class="field"><label for="media_img_default_legend">'.__('Image legend and title:').'</label>'.
569     form::combo('media_img_default_legend',$img_default_legend_combo,html::escapeHTML($blog_settings->system->media_img_default_legend)).
570     '</p>'.
571     '</div>'.
572     '</div>'.
573     '<br class="clear" />'. //Opera sucks
574
575     '</div>';
576
577     echo '<div id="advanced-pref"><h3>'.__('Advanced parameters').'</h3>';
578
579     if ($core->auth->isSuperAdmin())
580     {
581          echo '<div class="fieldset"><h4>'.__('Blog details').'</h4>';
582          echo
583          '<p><label for="blog_id" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog ID:').'</label>'.
584          form::field('blog_id',30,32,html::escapeHTML($blog_id),'','',false,'required placeholder="'.__('Blog ID').'"').'</p>'.
585          '<p class="form-note">'.__('At least 2 characters using letters, numbers or symbols.').'</p> '.
586          '<p class="form-note warn">'.__('Please note that changing your blog ID may require changes in your public index.php file.').'</p>';
587
588          echo
589          '<p><label for="blog_url" class="required"><abbr title="'.__('Required field').'">*</abbr> '.__('Blog URL:').'</label>'.
590          form::field('blog_url',50,255,html::escapeHTML($blog_url),'','',false,'required placeholder="'.__('Blog URL').'"').'</p>'.
591
592          '<p><label for="url_scan">'.__('URL scan method:').'</label>'.
593          form::combo('url_scan',$url_scan_combo,$blog_settings->system->url_scan).'</p>';
594
595          try
596          {
597               # Test URL of blog by testing it's ATOM feed
598               $file = $blog_url.$core->url->getURLFor('feed','atom');
599               $path = '';
600               $status = '404';
601               $content = '';
602
603               $client = netHttp::initClient($file,$path);
604               if ($client !== false) {
605                    $client->setTimeout(4);
606                    $client->setUserAgent($_SERVER['HTTP_USER_AGENT']);
607                    $client->get($path);
608                    $status = $client->getStatus();
609                    $content = $client->getContent();
610               }
611               if ($status != '200') {
612                    // Might be 404 (URL not found), 670 (blog not online), ...
613                    echo
614                    '<p class="form-note warn">'.
615                    sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> return a <strong>%s</strong> status).'),
616                              html::escapeHTML($file),$status).
617                    '</p>';
618               } else {
619                    if (substr($content,0,6) != '<?xml ') {
620                         // Not well formed XML feed
621                         echo
622                         '<p class="form-note warn">'.
623                         sprintf(__('The URL of blog or the URL scan method might not be well set (<code>%s</code> does not return an ATOM feed).'),
624                                   html::escapeHTML($file)).
625                         '</p>';
626                    }
627               }
628          }
629          catch (Exception $e)
630          {
631               $core->error->add($e->getMessage());
632          }
633          echo '</div>';
634     }
635
636     echo
637     '<div class="fieldset"><h4>'.__('Blog configuration').'</h4>'.
638
639     '<p><label for="post_url_format">'.__('New post URL format:').'</label>'.
640     form::combo('post_url_format',$post_url_combo,html::escapeHTML($blog_settings->system->post_url_format)).
641     '</p>'.
642     '<p class="chosen form-note">'.__('Sample:').' '.$core->blog->getPostURL('',date('Y-m-d H:i:00',$now),__('Dotclear'),42).'</p>'.
643     '</p>'.
644
645     '<p><label for="note_title_tag">'.__('HTML tag for the title of the notes on the blog:').'</label>'.
646     form::combo('note_title_tag',$note_title_tag_combo,$blog_settings->system->note_title_tag).
647     '</p>'.
648
649     '<p><label for="enable_xmlrpc" class="classic">'.
650     form::checkbox('enable_xmlrpc','1',$blog_settings->system->enable_xmlrpc).
651     __('Enable XML/RPC interface').'</label>'.'</p>'.
652     '<p class="form-note info">'.__('XML/RPC interface allows you to edit your blog with an external client.').'</p>';
653
654     if ($blog_settings->system->enable_xmlrpc) {
655          echo
656          '<p>'.__('XML/RPC interface is active. You should set the following parameters on your XML/RPC client:').'</p>'.
657          '<ul>'.
658          '<li>'.__('Server URL:').' <strong><code>'.
659          sprintf(DC_XMLRPC_URL,$core->blog->url,$core->blog->id).
660          '</code></strong></li>'.
661          '<li>'.__('Blogging system:').' <strong><code>Movable Type</code></strong></li>'.
662          '<li>'.__('User name:').' <strong><code>'.$core->auth->userID().'</code></strong></li>'.
663          '<li>'.__('Password:').' <strong><code>&lt;'.__('your password').'&gt;</code></strong></li>'.
664          '<li>'.__('Blog ID:').' <strong><code>1</code></strong></li>'.
665          '</ul>';
666     }
667
668     echo
669     '</div>';
670
671     // Search engines policies
672     echo '<div class="fieldset"><h4>'.__('Search engines robots policy').'</h4>';
673
674     $i = 0;
675     foreach ($robots_policy_options as $k => $v)
676     {
677          echo '<p><label for="robots_policy-'.$i.'" class="classic">'.
678          form::radio(array('robots_policy','robots_policy-'.$i),$k,$blog_settings->system->robots_policy == $k).' '.$v.'</label></p>';
679          $i++;
680     }
681
682     echo '</div>';
683
684     echo '<div class="fieldset"><h4>'.__('jQuery javascript library').'</h4>'.
685
686     '<p><label for="jquery_version" class="classic">'.__('jQuery version to be loaded for this blog:').'</label>'.' '.
687     form::combo('jquery_version',$jquery_versions_combo,$blog_settings->system->jquery_version).
688     '</p>'.
689     '<br class="clear" />'. //Opera sucks
690
691     '</div>';
692
693     echo '<div class="fieldset"><h4>'.__('Blog security').'</h4>'.
694
695     '<p><label for="prevents_clickjacking" class="classic">'.
696     form::checkbox('prevents_clickjacking','1',$blog_settings->system->prevents_clickjacking).
697     __('Protect the blog from Clickjacking (see <a href="https://en.wikipedia.org/wiki/Clickjacking">Wikipedia</a>)').'</label></p>'.
698     '<br class="clear" />'. //Opera sucks
699
700     '</div>';
701
702     echo '</div>'; // End advanced
703
704     echo '<div id="plugins-pref"><h3>'.__('Plugins parameters').'</h3>';
705
706     # --BEHAVIOR-- adminBlogPreferencesForm
707     $core->callBehavior('adminBlogPreferencesForm',$core,$blog_settings);
708
709     echo '</div>'; // End 3rd party, aka plugins
710
711     echo
712     '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
713     (!$standalone ? form::hidden('id',$blog_id) : '').
714     '</p>'.
715     '</form>';
716
717     if ($core->auth->isSuperAdmin() && $blog_id != $core->blog->id)
718     {
719          echo
720          '<form action="'.$core->adminurl->get("admin.blog.del").'" method="post">'.
721          '<p><input type="submit" class="delete" value="'.__('Delete this blog').'" />'.
722          form::hidden(array('blog_id'),$blog_id).
723          $core->formNonce().'</p>'.
724          '</form>';
725     } else {
726          if ($blog_id == $core->blog->id) {
727               echo '<p class="message">'.__('The current blog cannot be deleted.').'</p>';
728          } else {
729               echo '<p class="message">'.__('Only superadmin can delete a blog.').'</p>';
730          }
731     }
732
733     echo '</div>';
734
735     #
736     # Users on the blog (with permissions)
737
738     $blog_users = $core->getBlogPermissions($blog_id,$core->auth->isSuperAdmin());
739     $perm_types = $core->auth->getPermissionsTypes();
740
741     echo
742     '<div class="multi-part" id="users" title="'.__('Users').'">'.
743     '<h3 class="out-of-screen-if-js">'.__('Users on this blog').'</h3>';
744
745     if (empty($blog_users))
746     {
747          echo '<p>'.__('No users').'</p>';
748     }
749     else
750     {
751          if ($core->auth->isSuperAdmin()) {
752               $user_url_p = '<a href="'.$core->adminurl->get("admin.user",array('id' => '%1$s'),'&amp;',true).'">%1$s</a>';
753          } else {
754               $user_url_p = '%1$s';
755          }
756
757          # Sort users list on user_id key
758          dcUtils::lexicalKeySort($blog_users);
759
760          $post_type = $core->getPostTypes();
761          $current_blog_id = $core->blog->id;
762          if ($blog_id != $core->blog->id) {
763               $core->setBlog($blog_id);
764          }
765
766          echo '<div>';
767          foreach ($blog_users as $k => $v)
768          {
769               if (count($v['p']) > 0)
770               {
771                    echo
772                    '<div class="user-perm'.($v['super'] ? ' user_super' : '').'">'.
773                    '<h4>'.sprintf($user_url_p,html::escapeHTML($k)).
774                    ' ('.html::escapeHTML(dcUtils::getUserCN(
775                         $k, $v['name'], $v['firstname'], $v['displayname']
776                    )).')</h4>';
777
778                    if ($core->auth->isSuperAdmin()) {
779                         echo
780                         '<p>'.__('Email:').' '.
781                         ($v['email'] != '' ? '<a href="mailto:'.$v['email'].'">'.$v['email'].'</a>' : __('(none)')).
782                         '</p>';
783                    }
784
785                    echo
786                    '<h5>'.__('Publications on this blog:').'</h5>'.
787                    '<ul>';
788                    foreach ($post_type as $type => $pt_info) {
789                         $params = array(
790                              'post_type' => $type,
791                              'user_id' => $k
792                              );
793                         echo '<li>'.sprintf(__('%1$s: %2$s'),__($pt_info['label']),$core->blog->getPosts($params,true)->f(0)).'</li>';
794                    }
795                    echo
796                    '</ul>';
797
798                    echo
799                    '<h5>'.__('Permissions:').'</h5>'.
800                    '<ul>';
801                    if ($v['super']) {
802                         echo '<li class="user_super">'.__('Super administrator').'<br />'.
803                         '<span class="form-note">'.__('All rights on all blogs.').'</span></li>';
804                    } else {
805                         foreach ($v['p'] as $p => $V) {
806                              if (isset($perm_types[$p])) {
807                                   echo '<li '.($p == 'admin' ? 'class="user_admin"' : '').'>'.__($perm_types[$p]);
808                              } else {
809                                   echo '<li>'.sprintf(__('[%s] (unreferenced permission)'),$p);
810                              }
811
812                              if($p == 'admin') {
813                                   echo '<br /><span class="form-note">'.__('All rights on this blog.').'</span>';
814                              }
815                              echo '</li>';
816                         }
817                    }
818                    echo
819                    '</ul>';
820
821                    if (!$v['super'] && $core->auth->isSuperAdmin()) {
822                         echo
823                         '<form action="'.$core->adminurl->get('admin.user.actions').'" method="post">'.
824                         '<p class="change-user-perm"><input type="submit" class="reset" value="'.__('Change permissions').'" />'.
825                         form::hidden(array('redir'),$core->adminurl->get("admin.blog.pref",array('id' => $k),'&')).
826                         form::hidden(array('action'),'perms').
827                         form::hidden(array('users[]'),$k).
828                         form::hidden(array('blogs[]'),$blog_id).
829                         $core->formNonce().
830                         '</p>'.
831                         '</form>';
832                    }
833                    echo '</div>';
834               }
835          }
836          echo '</div>';
837          if ($current_blog_id != $core->blog->id) {
838               $core->setBlog($current_blog_id);
839          }
840     }
841
842     echo '</div>';
843}
844
845dcPage::helpBlock('core_blog_pref');
846dcPage::close();
Note: See TracBrowser for help on using the repository browser.

Sites map