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

RevLine 
[0]1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
[1179]6# Copyright (c) 2003-2013 Olivier Meunier & Association Dotclear
[0]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;
[2566]27
[2720]28     $action = $core->adminurl->get("admin.blog.pref");
29     $redir = $core->adminurl->get("admin.blog.pref");
[0]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']);
[2566]40
[0]41          if (!$rs) {
42               throw new Exception(__('No such blog.'));
43          }
[2566]44
[0]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);
[2566]50          $blog_url = $rs->blog_url ;
[0]51     }
52     catch (Exception $e)
53     {
54          $core->error->add($e->getMessage());
55     }
[2566]56
[2720]57     $action = $core->adminurl->get("admin.blog");
[2858]58     $redir = $core->adminurl->get("admin.blog",array('id' => "%s"),'&',true);
[0]59}
60
61# Language codes
[1719]62$lang_combo = dcAdminCombos::getAdminLangsCombo();
[0]63
64# Status combo
[1719]65$status_combo = dcAdminCombos::getBlogStatusescombo();
[0]66
[2019]67# Date format combo
68$now = time();
[3159]69$date_formats = $blog_settings->system->date_formats;
70$time_formats = $blog_settings->system->time_formats;
[2019]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
[0]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}',
[924]92     __('title') => '{t}',
93     __('post id/title') => '{id}/{t}',
94     __('post id') => '{id}'
[0]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
[970]100# Note title tag combo
101$note_title_tag_combo = array(
102     __('H4') => 0,
103     __('H3') => 1,
104     __('P') => 2
105);
106
[0]107# Image title combo
108$img_title_combo = array(
[976]109     __('(none)') => '',
[0]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
[887]119# Image default size combo
120$img_default_size_combo = array();
[1537]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());
[887]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
[3446]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
[0]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
[2800]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
[0]168# Update a blog
169if ($blog_id && !empty($_POST) && $core->auth->check('admin',$blog_id))
170{
171     $cur = $core->con->openCursor($core->prefix.'blog');
[2969]172     $cur->blog_id = $_POST['blog_id'];
173     $cur->blog_url = preg_replace('/\?+$/','?', $_POST['blog_url']);
[0]174     $cur->blog_name = $_POST['blog_name'];
175     $cur->blog_desc = $_POST['blog_desc'];
[2566]176
[2969]177     if ($core->auth->isSuperAdmin() && in_array($_POST['blog_status'], $status_combo)) {
178          $cur->blog_status = (int) $_POST['blog_status'];
179     }
180
[0]181     $media_img_t_size = abs((integer) $_POST['media_img_t_size']);
182     if ($media_img_t_size < 0) { $media_img_t_size = 100; }
[2566]183
[0]184     $media_img_s_size = abs((integer) $_POST['media_img_s_size']);
185     if ($media_img_s_size < 0) { $media_img_s_size = 240; }
[2566]186
[0]187     $media_img_m_size = abs((integer) $_POST['media_img_m_size']);
188     if ($media_img_m_size < 0) { $media_img_m_size = 448; }
[2566]189
[3112]190     $media_video_width = abs((integer) $_POST['media_video_width']);
191     if ($media_video_width < 0) { $media_video_width = 400; }
[3115]192
[3112]193     $media_video_height = abs((integer) $_POST['media_video_height']);
194     if ($media_video_height < 0) { $media_video_height = 300; }
195
[2577]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
[0]199     $nb_post_per_page = abs((integer) $_POST['nb_post_per_page']);
200     if ($nb_post_per_page <= 1) { $nb_post_per_page = 1; }
[2566]201
[0]202     $nb_post_per_feed = abs((integer) $_POST['nb_post_per_feed']);
203     if ($nb_post_per_feed <= 1) { $nb_post_per_feed = 1; }
[2566]204
[0]205     $nb_comment_per_feed = abs((integer) $_POST['nb_comment_per_feed']);
206     if ($nb_comment_per_feed <= 1) { $nb_comment_per_feed = 1; }
[2566]207
[0]208     try
209     {
210          if ($cur->blog_id != null && $cur->blog_id != $blog_id) {
211               $rs = $core->getBlog($cur->blog_id);
[2566]212
[0]213               if ($rs) {
[1615]214                    throw new Exception(__('This blog ID is already used.'));
[0]215               }
216          }
[2566]217
[0]218          # --BEHAVIOR-- adminBeforeBlogUpdate
219          $core->callBehavior('adminBeforeBlogUpdate',$cur,$blog_id);
[2566]220
[0]221          if (!preg_match('/^[a-z]{2}(-[a-z]{2})?$/',$_POST['lang'])) {
222               throw new Exception(__('Invalid language code'));
223          }
[2566]224
[0]225          $core->updBlog($blog_id,$cur);
[2566]226
[0]227          # --BEHAVIOR-- adminAfterBlogUpdate
228          $core->callBehavior('adminAfterBlogUpdate',$cur,$blog_id);
[2566]229
[0]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               }
[2566]238
[0]239               $blog_id = $cur->blog_id;
240          }
[2566]241
242
[0]243          $blog_settings->addNameSpace('system');
[2566]244
[0]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']));
[2776]260          $blog_settings->system->put('comment_preview_optional',!empty($_POST['comment_preview_optional']));
[0]261          $blog_settings->system->put('enable_xmlrpc',!empty($_POST['enable_xmlrpc']));
[970]262          $blog_settings->system->put('note_title_tag',$_POST['note_title_tag']);
[2577]263          $blog_settings->system->put('nb_post_for_home',$nb_post_for_home);
[0]264          $blog_settings->system->put('nb_post_per_page',$nb_post_per_page);
265          $blog_settings->system->put('use_smilies',!empty($_POST['use_smilies']));
[3030]266          $blog_settings->system->put('no_search',!empty($_POST['no_search']));
[2198]267          $blog_settings->system->put('inc_subcats',!empty($_POST['inc_subcats']));
[0]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);
[3112]271          $blog_settings->system->put('media_video_width',$media_video_width);
272          $blog_settings->system->put('media_video_height',$media_video_height);
[3138]273          $blog_settings->system->put('media_flash_fallback',!empty($_POST['media_flash_fallback']));
[0]274          $blog_settings->system->put('media_img_title_pattern',$_POST['media_img_title_pattern']);
[1073]275          $blog_settings->system->put('media_img_use_dto_first',!empty($_POST['media_img_use_dto_first']));
[2799]276          $blog_settings->system->put('media_img_no_date_alone',!empty($_POST['media_img_no_date_alone']));
[887]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']));
[3446]280          $blog_settings->system->put('media_img_default_legend',$_POST['media_img_default_legend']);
[0]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          }
[2800]287          $blog_settings->system->put('jquery_version',$_POST['jquery_version']);
[2797]288          $blog_settings->system->put('prevents_clickjacking',!empty($_POST['prevents_clickjacking']));
[2566]289
[0]290          # --BEHAVIOR-- adminBeforeBlogSettingsUpdate
291          $core->callBehavior('adminBeforeBlogSettingsUpdate',$blog_settings);
[2566]292
[0]293          if ($core->auth->isSuperAdmin() && in_array($_POST['url_scan'],$url_scan_combo)) {
294               $blog_settings->system->put('url_scan',$_POST['url_scan']);
295          }
[2189]296          dcPage::addSuccessNotice(__('Blog has been successfully updated.'));
297
[0]298          http::redirect(sprintf($redir,$blog_id));
299     }
300     catch (Exception $e)
301     {
302          $core->error->add($e->getMessage());
303     }
304}
305
[3444]306// Display
307
[1358]308if ($standalone) {
309     $breadcrumb = dcPage::breadcrumb(
310          array(
311               html::escapeHTML($blog_name) => '',
[2166]312               __('Blog settings') => ''
313          )
314     );
[1358]315} else {
316     $breadcrumb = dcPage::breadcrumb(
317          array(
318               __('System') => '',
[2720]319               __('Blogs') => $core->adminurl->get("admin.blogs"),
[2166]320               __('Blog settings').' : '.html::escapeHTML($blog_name) => ''
[1358]321          ));
322}
323
[3227]324$desc_editor = $core->auth->getOption('editor');
[3330]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}
[3227]330
[0]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',
[38]336          __('Warning: except for special configurations, it is generally advised to have a trailing "?" in your blog URL in QUERY_STRING mode.'))."\n".
[0]337     "</script>".
338     dcPage::jsConfirmClose('blog-form').
[3330]339     ($rte_flag ? $core->callBehavior('adminPostEditor',$desc_editor['xhtml'],'blog_desc',array('#blog_desc'),'xhtml') : '').
[0]340     dcPage::jsLoad('js/_blog_pref.js').
[2566]341
[0]342     # --BEHAVIOR-- adminBlogPreferencesHeaders
343     $core->callBehavior('adminBlogPreferencesHeaders').
[2566]344
[1358]345     dcPage::jsPageTabs(),
346     $breadcrumb
[0]347);
348
349if ($blog_id)
350{
351     if (!empty($_GET['add'])) {
[1553]352          dcPage::success(__('Blog has been successfully created.'));
[0]353     }
[2566]354
[0]355     if (!empty($_GET['upd'])) {
[1553]356          dcPage::success(__('Blog has been successfully updated.'));
[0]357     }
[2566]358
[0]359     echo
360     '<div class="multi-part" id="params" title="'.__('Parameters').'">'.
[1979]361     '<h3 class="out-of-screen-if-js">'.__('Parameters').'</h3>'.
[0]362     '<form action="'.$action.'" method="post" id="blog-form">';
[2566]363
[0]364     echo
[1499]365     '<div class="fieldset"><h4>'.__('Blog details').'</h4>'.
[0]366     $core->formNonce();
[2566]367
[3444]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
[0]376     if ($core->auth->isSuperAdmin())
377     {
378          echo
[3444]379          '<p><label for="blog_status">'.__('Blog status:').'</label>'.
380          form::combo('blog_status',$status_combo,$blog_status).'</p>';
381
[2969]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"');
[0]391     }
[2566]392
[3444]393     echo '</div>';
[2566]394
[0]395     echo
[1499]396     '<div class="fieldset"><h4>'.__('Blog configuration').'</h4>'.
[3444]397
[1399]398     '<p><label for="editor">'.__('Blog editor name:').'</label>'.
[0]399     form::field('editor',30,255,html::escapeHTML($blog_settings->system->editor)).
[1399]400     '</p>'.
[2566]401
[1399]402     '<p><label for="lang">'.__('Default language:').'</label>'.
[0]403     form::combo('lang',$lang_combo,$blog_settings->system->lang,'l10n').
[1399]404     '</p>'.
[2566]405
[1399]406     '<p><label for="blog_timezone">'.__('Blog timezone:').'</label>'.
[0]407     form::combo('blog_timezone',dt::getZones(true,true),html::escapeHTML($blog_settings->system->blog_timezone)).
[1399]408     '</p>'.
[970]409
[1399]410     '<p><label for="copyright_notice">'.__('Copyright notice:').'</label>'.
[970]411     form::field('copyright_notice',30,255,html::escapeHTML($blog_settings->system->copyright_notice)).
[1399]412     '</p>'.
[2566]413
[1499]414     '</div>';
[2566]415
[0]416     echo
[1499]417     '<div class="fieldset"><h4>'.__('Comments and trackbacks').'</h4>'.
418
[0]419     '<div class="two-cols">'.
[1499]420
[0]421     '<div class="col">'.
[38]422     '<p><label for="allow_comments" class="classic">'.
[0]423     form::checkbox('allow_comments','1',$blog_settings->system->allow_comments).
[2566]424     __('Accept comments').'</label></p>'.
[38]425     '<p><label for="comments_pub" class="classic">'.
[0]426     form::checkbox('comments_pub','1',!$blog_settings->system->comments_pub).
[2566]427     __('Moderate comments').'</label></p>'.
[1971]428     '<p><label for="comments_ttl" class="classic">'.sprintf(__('Leave comments open for %s days').'.',
[0]429     form::field('comments_ttl',2,3,$blog_settings->system->comments_ttl)).
430     '</label></p>'.
[2566]431     '<p class="form-note">'.__('No limit: leave blank.').'</p>'.
[38]432     '<p><label for="wiki_comments" class="classic">'.
[0]433     form::checkbox('wiki_comments','1',$blog_settings->system->wiki_comments).
434     __('Wiki syntax for comments').'</label></p>'.
[2776]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>'.
[0]438     '</div>'.
[2566]439
[0]440     '<div class="col">'.
[38]441     '<p><label for="allow_trackbacks" class="classic">'.
[0]442     form::checkbox('allow_trackbacks','1',$blog_settings->system->allow_trackbacks).
[2566]443     __('Accept trackbacks').'</label></p>'.
[38]444     '<p><label for="trackbacks_pub" class="classic">'.
[0]445     form::checkbox('trackbacks_pub','1',!$blog_settings->system->trackbacks_pub).
[2566]446     __('Moderate trackbacks').'</label></p>'.
[1971]447     '<p><label for="trackbacks_ttl" class="classic">'.sprintf(__('Leave trackbacks open for %s days').'.',
[0]448     form::field('trackbacks_ttl',2,3,$blog_settings->system->trackbacks_ttl)).'</label></p>'.
[2566]449     '<p class="form-note">'.__('No limit: leave blank.').'</p>'.
[38]450     '<p><label for="comments_nofollow" class="classic">'.
[0]451     form::checkbox('comments_nofollow','1',$blog_settings->system->comments_nofollow).
452     __('Add "nofollow" relation on comments and trackbacks links').'</label></p>'.
453     '</div>'.
[1499]454
[0]455     '</div>'.
[1499]456     '</div>';
[2566]457
[0]458     echo
[1499]459     '<div class="fieldset"><h4>'.__('Blog presentation').'</h4>'.
[0]460     '<div class="two-cols">'.
461     '<div class="col">'.
[2025]462     '<p><label for="date_format">'.__('Date format:').'</label> '.
[0]463     form::field('date_format',30,255,html::escapeHTML($blog_settings->system->date_format)).
[2025]464     form::combo('date_format_select',$date_formats_combo,'','','',false,'title="'.__('Pattern of date').'"').
[1399]465     '</p>'.
[2028]466     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->date_format)).'</p>'.
[2019]467
[1399]468     '<p><label for="time_format">'.__('Time format:').'</label>'.
[0]469     form::field('time_format',30,255,html::escapeHTML($blog_settings->system->time_format)).
[2025]470     form::combo('time_format_select',$time_formats_combo,'','','',false,'title="'.__('Pattern of time').'"').
[1399]471     '</p>'.
[2028]472     '<p class="chosen form-note">'.__('Sample:').' '.dt::str(html::escapeHTML($blog_settings->system->time_format)).'</p>'.
[2566]473
[38]474     '<p><label for="use_smilies" class="classic">'.
[0]475     form::checkbox('use_smilies','1',$blog_settings->system->use_smilies).
476     __('Display smilies on entries and comments').'</label></p>'.
[3030]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>'.
[0]481     '</div>'.
[2566]482
[0]483     '<div class="col">'.
[2577]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
[38]488     '<p><label for="nb_post_per_page" class="classic">'.sprintf(__('Display %s entries per page'),
[0]489     form::field('nb_post_per_page',2,3,$blog_settings->system->nb_post_per_page)).
490     '</label></p>'.
[2566]491
[38]492     '<p><label for="nb_post_per_feed" class="classic">'.sprintf(__('Display %s entries per feed'),
[0]493     form::field('nb_post_per_feed',2,3,$blog_settings->system->nb_post_per_feed)).
494     '</label></p>'.
[2566]495
[38]496     '<p><label for="nb_comment_per_feed" class="classic">'.sprintf(__('Display %s comments per feed'),
[0]497     form::field('nb_comment_per_feed',2,3,$blog_settings->system->nb_comment_per_feed)).
498     '</label></p>'.
[2566]499
[38]500     '<p><label for="short_feed_items" class="classic">'.
[0]501     form::checkbox('short_feed_items','1',$blog_settings->system->short_feed_items).
502     __('Truncate feeds').'</label></p>'.
[2566]503
[2198]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>'.
[0]507     '</div>'.
508    '</div>'.
[1499]509     '</div>';
[2566]510
[0]511     echo
[1979]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
[0]517     '<div class="two-cols">'.
518     '<div class="col">'.
[3394]519     '<h5>'.__('Generated image sizes (max dimension in pixels)').'</h5>'.
[3091]520     '<p class="field"><label for="media_img_t_size">'.__('Thumbnail').'</label> '.
[1846]521     form::field('media_img_t_size',3,3,$blog_settings->system->media_img_t_size).'</p>'.
[2566]522
[3091]523     '<p class="field"><label for="media_img_s_size">'.__('Small').'</label> '.
[1846]524     form::field('media_img_s_size',3,3,$blog_settings->system->media_img_s_size).'</p>'.
[2566]525
[3091]526     '<p class="field"><label for="media_img_m_size">'.__('Medium').'</label> '.
[1846]527     form::field('media_img_m_size',3,3,$blog_settings->system->media_img_m_size).'</p>'.
[3112]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>'.
[3138]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>'.
[0]541     '</div>'.
[2566]542
[0]543     '<div class="col">'.
[1846]544     '<h5>'.__('Default image insertion attributes').'</h5>'.
[1848]545     '<p class="vertical-separator"><label for="media_img_title_pattern">'.__('Inserted image title').'</label>'.
[2799]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">'.
[1073]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>'.
[2799]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>'.
[1848]553     '<p class="form-note info">'.__('It is retrieved from the picture\'s metadata.').'</p>'.
[887]554
[1848]555     '<p class="field vertical-separator"><label for="media_img_default_size">'.__('Size of inserted image:').'</label>'.
[887]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')).
[1399]558     '</p>'.
[1846]559     '<p class="field"><label for="media_img_default_alignment">'.__('Image alignment:').'</label>'.
[887]560     form::combo('media_img_default_alignment',$img_default_alignment_combo,html::escapeHTML($blog_settings->system->media_img_default_alignment)).
[1399]561     '</p>'.
[1846]562     '<p><label for="media_img_default_link">'.
[887]563     form::checkbox('media_img_default_link','1',$blog_settings->system->media_img_default_link).
[1846]564     __('Insert a link to the original image').'</label></p>'.
[3446]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>'.
[0]568     '</div>'.
[887]569     '</div>'.
570
[1499]571     '</div>';
[2566]572
[3444]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).'),
[3547]612                              html::escapeHTML($file),$status).
[3444]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).'),
[3547]620                                   html::escapeHTML($file)).
[3444]621                         '</p>';
622                    }
623               }
624          }
625          catch (Exception $e)
626          {
627               $core->error->add($e->getMessage());
628          }
629          echo '</div>';
630     }
631
[0]632     echo
[3444]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>';
[2566]669
[122]670     $i = 0;
[0]671     foreach ($robots_policy_options as $k => $v)
672     {
[122]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++;
[0]676     }
[2566]677
[1499]678     echo '</div>';
[2566]679
[3444]680     echo '<div class="fieldset"><h4>'.__('jQuery javascript library').'</h4>'.
681
[2800]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>'.
[3444]685
[2800]686     '</div>';
687
[3444]688     echo '<div class="fieldset"><h4>'.__('Blog security').'</h4>'.
689
[2797]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>'.
[3444]693
[2797]694     '</div>';
[2566]695
[3444]696     echo '</div>'; // End advanced
697
698     echo '<div id="plugins-pref"><h3>'.__('Plugins parameters').'</h3>';
699
[0]700     # --BEHAVIOR-- adminBlogPreferencesForm
701     $core->callBehavior('adminBlogPreferencesForm',$core,$blog_settings);
[2566]702
[3444]703     echo '</div>'; // End 3rd party, aka plugins
704
[0]705     echo
[217]706     '<p><input type="submit" accesskey="s" value="'.__('Save').'" />'.
[0]707     (!$standalone ? form::hidden('id',$blog_id) : '').
708     '</p>'.
709     '</form>';
[2566]710
[0]711     if ($core->auth->isSuperAdmin() && $blog_id != $core->blog->id)
712     {
713          echo
[2720]714          '<form action="'.$core->adminurl->get("admin.blog.del").'" method="post">'.
[3]715          '<p><input type="submit" class="delete" value="'.__('Delete this blog').'" />'.
[0]716          form::hidden(array('blog_id'),$blog_id).
717          $core->formNonce().'</p>'.
718          '</form>';
[953]719     } else {
720          if ($blog_id == $core->blog->id) {
[1474]721               echo '<p class="message">'.__('The current blog cannot be deleted.').'</p>';
[953]722          } else {
[1474]723               echo '<p class="message">'.__('Only superadmin can delete a blog.').'</p>';
[953]724          }
[0]725     }
[2566]726
[0]727     echo '</div>';
[2566]728
[0]729     #
730     # Users on the blog (with permissions)
[2566]731
[0]732     $blog_users = $core->getBlogPermissions($blog_id,$core->auth->isSuperAdmin());
733     $perm_types = $core->auth->getPermissionsTypes();
[2566]734
[0]735     echo
736     '<div class="multi-part" id="users" title="'.__('Users').'">'.
[1979]737     '<h3 class="out-of-screen-if-js">'.__('Users on this blog').'</h3>';
[2566]738
[0]739     if (empty($blog_users))
740     {
741          echo '<p>'.__('No users').'</p>';
742     }
743     else
744     {
745          if ($core->auth->isSuperAdmin()) {
[2921]746               $user_url_p = '<a href="'.$core->adminurl->get("admin.user",array('id' => '%1$s'),'&amp;',true).'">%1$s</a>';
[0]747          } else {
748               $user_url_p = '%1$s';
749          }
[1696]750
751          # Sort users list on user_id key
[3107]752          dcUtils::lexicalKeySort($blog_users);
[1696]753
[1694]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
[3444]760          echo '<div>';
[0]761          foreach ($blog_users as $k => $v)
762          {
763               if (count($v['p']) > 0)
764               {
765                    echo
[3444]766                    '<div class="user-perm'.($v['super'] ? ' user_super' : '').'">'.
[0]767                    '<h4>'.sprintf($user_url_p,html::escapeHTML($k)).
768                    ' ('.html::escapeHTML(dcUtils::getUserCN(
769                         $k, $v['name'], $v['firstname'], $v['displayname']
[1698]770                    )).')</h4>';
771
772                    if ($core->auth->isSuperAdmin()) {
[2566]773                         echo
[1698]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
[1682]793                    '<h5>'.__('Permissions:').'</h5>'.
794                    '<ul>';
[0]795                    if ($v['super']) {
[1979]796                         echo '<li class="user_super">'.__('Super administrator').'<br />'.
797                         '<span class="form-note">'.__('All rights on all blogs.').'</span></li>';
[0]798                    } else {
799                         foreach ($v['p'] as $p => $V) {
[2223]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                              }
[1979]805
806                              if($p == 'admin') {
807                                   echo '<br /><span class="form-note">'.__('All rights on this blog.').'</span>';
808                              }
809                              echo '</li>';
[0]810                         }
811                    }
[2566]812                    echo
[1682]813                    '</ul>';
[2566]814
[860]815                    if (!$v['super'] && $core->auth->isSuperAdmin()) {
[2566]816                         echo
[2817]817                         '<form action="'.$core->adminurl->get('admin.user.actions').'" method="post">'.
[1682]818                         '<p class="change-user-perm"><input type="submit" class="reset" value="'.__('Change permissions').'" />'.
[2852]819                         form::hidden(array('redir'),$core->adminurl->get("admin.blog.pref",array('id' => $k),'&')).
[860]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                    }
[1682]827                    echo '</div>';
[0]828               }
829          }
[3444]830          echo '</div>';
[1694]831          if ($current_blog_id != $core->blog->id) {
832               $core->setBlog($current_blog_id);
833          }
[0]834     }
[2566]835
[0]836     echo '</div>';
837}
838
839dcPage::helpBlock('core_blog_pref');
840dcPage::close();
Note: See TracBrowser for help on using the repository browser.

Sites map