Dotclear

source: admin/blog_pref.php @ 3731:3770620079d4

Revision 3731:3770620079d4, 37.3 KB checked in by franck <carnet.franck.paul@…>, 7 years ago (diff)

Simplify licence block at the beginning of each file

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

Sites map