auth->getOption('post_format'); $post_password = ''; $post_url = ''; $post_lang = $core->auth->getInfo('user_lang'); $post_title = ''; $post_excerpt = ''; $post_excerpt_xhtml = ''; $post_content = ''; $post_content_xhtml = ''; $post_notes = ''; $post_status = $core->auth->getInfo('user_post_status'); $post_position = 0; $post_open_comment = false; $post_open_tb = false; $post_selected = false; $post_media = array(); $page_title = __('New page'); $can_view_page = true; $can_edit_page = $core->auth->check('pages,usage',$core->blog->id); $can_publish = $core->auth->check('pages,publish,contentadmin',$core->blog->id); $can_delete = false; $post_headlink = ''; $post_link = '%s'; $next_link = $prev_link = $next_headlink = $prev_headlink = null; # If user can't publish if (!$can_publish) { $post_status = -2; } # Status combo foreach ($core->blog->getAllPostStatus() as $k => $v) { $status_combo[$v] = (string) $k; } $img_status_pattern = '%1$s'; # Formaters combo foreach ($core->getFormaters() as $v) { $formaters_combo[$v] = $v; } # Languages combo $rs = $core->blog->getLangs(array('order'=>'asc')); $all_langs = l10n::getISOcodes(0,1); $lang_combo = array('' => '', __('Most used') => array(), __('Available') => l10n::getISOcodes(1,1)); while ($rs->fetch()) { if (isset($all_langs[$rs->post_lang])) { $lang_combo[__('Most used')][$all_langs[$rs->post_lang]] = $rs->post_lang; unset($lang_combo[__('Available')][$all_langs[$rs->post_lang]]); } else { $lang_combo[__('Most used')][$rs->post_lang] = $rs->post_lang; } } unset($all_langs); unset($rs); # Validation flag $bad_dt = false; # Get page informations if (!empty($_REQUEST['id'])) { $params['post_type'] = 'page'; $params['post_id'] = $_REQUEST['id']; $post = $core->blog->getPosts($params); if ($post->isEmpty()) { $core->error->add(__('This page does not exist.')); $can_view_page = false; } else { $post_id = $post->post_id; $post_dt = date('Y-m-d H:i',strtotime($post->post_dt)); $post_format = $post->post_format; $post_password = $post->post_password; $post_url = $post->post_url; $post_lang = $post->post_lang; $post_title = $post->post_title; $post_excerpt = $post->post_excerpt; $post_excerpt_xhtml = $post->post_excerpt_xhtml; $post_content = $post->post_content; $post_content_xhtml = $post->post_content_xhtml; $post_notes = $post->post_notes; $post_status = $post->post_status; $post_position = (integer) $post->post_position; $post_open_comment = (boolean) $post->post_open_comment; $post_open_tb = (boolean) $post->post_open_tb; $post_selected = (boolean) $post->post_selected; $page_title = __('Edit page'); $can_edit_page = $post->isEditable(); $can_delete= $post->isDeletable(); $next_rs = $core->blog->getNextPost($post,1); $prev_rs = $core->blog->getNextPost($post,-1); if ($next_rs !== null) { $next_link = sprintf($post_link,$next_rs->post_id, html::escapeHTML($next_rs->post_title),__('next page').' »'); $next_headlink = sprintf($post_headlink,'next', html::escapeHTML($next_rs->post_title),$next_rs->post_id); } if ($prev_rs !== null) { $prev_link = sprintf($post_link,$prev_rs->post_id, html::escapeHTML($prev_rs->post_title),'« '.__('previous page')); $prev_headlink = sprintf($post_headlink,'previous', html::escapeHTML($prev_rs->post_title),$prev_rs->post_id); } try { $core->media = new dcMedia($core); $post_media = $core->media->getPostMedia($post_id); } catch (Exception $e) { $core->error->add($e->getMessage()); } } } # Format content if (!empty($_POST) && $can_edit_page) { $post_format = $_POST['post_format']; $post_excerpt = $_POST['post_excerpt']; $post_content = $_POST['post_content']; $post_title = $_POST['post_title']; if (isset($_POST['post_status'])) { $post_status = (integer) $_POST['post_status']; } if (empty($_POST['post_dt'])) { $post_dt = ''; } else { try { $post_dt = strtotime($_POST['post_dt']); if ($post_dt == false || $post_dt == -1) { $bad_dt = true; throw new Exception(__('Invalid publication date')); } $post_dt = date('Y-m-d H:i',$post_dt); } catch (Exception $e) { $core->error->add($e->getMessage()); } } $post_open_comment = !empty($_POST['post_open_comment']); $post_open_tb = !empty($_POST['post_open_tb']); $post_selected = !empty($_POST['post_selected']); $post_lang = $_POST['post_lang']; $post_password = !empty($_POST['post_password']) ? $_POST['post_password'] : null; $post_position = (integer) $_POST['post_position']; $post_notes = $_POST['post_notes']; if (isset($_POST['post_url'])) { $post_url = $_POST['post_url']; } $core->blog->setPostContent( $post_id,$post_format,$post_lang, $post_excerpt,$post_excerpt_xhtml,$post_content,$post_content_xhtml ); } # Delete page if (!empty($_POST['delete']) && $can_delete) { try { # --BEHAVIOR-- adminBeforePageDelete $core->callBehavior('adminBeforePageDelete',$post_id); $core->blog->delPost($post_id); http::redirect($p_url); } catch (Exception $e) { $core->error->add($e->getMessage()); } } # Create or update page if (!empty($_POST) && !empty($_POST['save']) && $can_edit_page && !$bad_dt) { $cur = $core->con->openCursor($core->prefix.'post'); # Magic tweak :) $core->blog->settings->system->post_url_format = $page_url_format; $cur->post_type = 'page'; $cur->post_title = $post_title; $cur->post_dt = $post_dt ? date('Y-m-d H:i:00',strtotime($post_dt)) : ''; $cur->post_format = $post_format; $cur->post_password = $post_password; $cur->post_lang = $post_lang; $cur->post_title = $post_title; $cur->post_excerpt = $post_excerpt; $cur->post_excerpt_xhtml = $post_excerpt_xhtml; $cur->post_content = $post_content; $cur->post_content_xhtml = $post_content_xhtml; $cur->post_notes = $post_notes; $cur->post_status = $post_status; $cur->post_position = $post_position; $cur->post_open_comment = (integer) $post_open_comment; $cur->post_open_tb = (integer) $post_open_tb; $cur->post_selected = (integer) $post_selected; if (isset($_POST['post_url'])) { $cur->post_url = $post_url; } # Update post if ($post_id) { try { # --BEHAVIOR-- adminBeforePageUpdate $core->callBehavior('adminBeforePageUpdate',$cur,$post_id); $core->blog->updPost($post_id,$cur); # --BEHAVIOR-- adminAfterPageUpdate $core->callBehavior('adminAfterPageUpdate',$cur,$post_id); http::redirect($redir_url.'&id='.$post_id.'&upd=1'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } else { $cur->user_id = $core->auth->userID(); try { # --BEHAVIOR-- adminBeforePageCreate $core->callBehavior('adminBeforePageCreate',$cur); $return_id = $core->blog->addPost($cur); # --BEHAVIOR-- adminAfterPageCreate $core->callBehavior('adminAfterPageCreate',$cur,$return_id); http::redirect($redir_url.'&id='.$return_id.'&crea=1'); } catch (Exception $e) { $core->error->add($e->getMessage()); } } } /* DISPLAY -------------------------------------------------------- */ $default_tab = 'edit-entry'; if (!$can_edit_page) { $default_tab = ''; } if (!empty($_GET['co'])) { $default_tab = 'comments'; } ?> <?php echo $page_title.' - '.__('Pages'); ?> callBehavior('adminPageHeaders'). dcPage::jsPageTabs($default_tab). $next_headlink."\n".$prev_headlink; ?> '.html::escapeHTML($core->blog->name). ' › '.__('Pages').''.$page_title; if ($post_id) { switch ($post_status) { case 1: $img_status = sprintf($img_status_pattern,__('published'),'check-on.png'); break; case 0: $img_status = sprintf($img_status_pattern,__('unpublished'),'check-off.png'); break; case -1: $img_status = sprintf($img_status_pattern,__('scheduled'),'scheduled.png'); break; case -2: $img_status = sprintf($img_status_pattern,__('pending'),'check-wrn.png'); break; default: $img_status = ''; } echo ' “'.$post_title.'”'.' '.$img_status; } echo ''; if ($post_id && $post->post_status == 1) { echo '

'.__('Go to this page on the site').'

'; } echo ''; if ($post_id) { echo '

'; if ($prev_link) { echo $prev_link; } if ($next_link && $prev_link) { echo ' - '; } if ($next_link) { echo $next_link; } # --BEHAVIOR-- adminPageNavLinks $core->callBehavior('adminPageNavLinks',isset($post) ? $post : null); echo '

'; } # Exit if we cannot view page if (!$can_view_page) { echo ''; return; } /* Post form if we can edit post -------------------------------------------------------- */ if ($can_edit_page) { echo '
'; echo '
'; echo '
'; echo '
'; echo '

'. '

'. form::textarea('post_excerpt',50,5,html::escapeHTML($post_excerpt)). '

'. '

'. form::textarea('post_content',50,$core->auth->getOption('edit_size'),html::escapeHTML($post_content)). '

'; echo '

'. form::textarea('post_notes',50,5,html::escapeHTML($post_notes)). '

'; # --BEHAVIOR-- adminPageForm $core->callBehavior('adminPageForm',isset($post) ? $post : null); echo '

'. ($post_id ? form::hidden('id',$post_id) : ''). ' '; if ($post_id) { $preview_url = $core->blog->url. $core->url->getURLFor('pagespreview', $core->auth->userID().'/'. http::browserUID(DC_MASTER_KEY.$core->auth->userID().$core->auth->getInfo('user_pwd')). '/'.$post->post_url); echo ''.__('Preview').' (p)'.''; } else { echo ''.__('Cancel').' (c)'; } echo ($can_delete ? '' : ''). $core->formNonce(). '

'; echo '
'; // End #entry-content echo '
'; // End #entry-wrapper echo '
'; echo '

'. '

'. '

'. '

'. ($core->blog->settings->system->allow_comments ? (isContributionAllowed($post_id,strtotime($post_dt),true) ? '' : '

'.__('Warning: Comments are not more accepted for this page.').'

') : '

'.__('Warning: Comments are not accepted on this blog.').'

'). '

'. ($core->blog->settings->system->allow_trackbacks ? (isContributionAllowed($post_id,strtotime($post_dt),false) ? '' : '

'.__('Warning: Trackbacks are not more accepted for this page.').'

') : '

'.__('Warning: Trackbacks are not accepted on this blog.').'

'). '

'. '

'. __('If checked this page will be active but not listed in widget Pages.'). '

'. '

'. '

'. '

'. '
'. '

'. '

'. __('Warning: If you set the URL manually, it may conflict with another page.'). '

'. '
'; if ($post_id) { echo '

'.__('Attachments').'

'; foreach ($post_media as $f) { $ftitle = $f->media_title; if (strlen($ftitle) > 18) { $ftitle = substr($ftitle,0,16).'...'; } echo '
'. ''. ''. ''. '
'; } unset($f); if (empty($post_media)) { echo '

'.__('No attachment.').'

'; } echo '

'.__('Add files to this page').'

'; } # --BEHAVIOR-- adminPageFormSidebar $core->callBehavior('adminPageFormSidebar',isset($post) ? $post : null); echo '
'; // End #entry-sidebar echo '
'; echo '
'; if ($post_id && !empty($post_media)) { echo '
'. '
'.form::hidden(array('post_id'),$post_id). form::hidden(array('media_id'),''). form::hidden(array('remove'),1). $core->formNonce().'
'; } } /* Comments and trackbacks -------------------------------------------------------- */ if ($post_id) { $params = array('post_id' => $post_id, 'order' => 'comment_dt ASC'); $comments = $core->blog->getComments(array_merge($params,array('comment_trackback'=>0))); $trackbacks = $core->blog->getComments(array_merge($params,array('comment_trackback'=>1))); # Actions combo box $combo_action = array(); if ($can_edit_page && $core->auth->check('publish,contentadmin',$core->blog->id)) { $combo_action[__('publish')] = 'publish'; $combo_action[__('unpublish')] = 'unpublish'; $combo_action[__('mark as pending')] = 'pending'; $combo_action[__('mark as junk')] = 'junk'; } if ($can_edit_page && $core->auth->check('delete,contentadmin',$core->blog->id)) { $combo_action[__('delete')] = 'delete'; } $has_action = !empty($combo_action) && (!$trackbacks->isEmpty() || !$comments->isEmpty()); echo '
'; if ($has_action) { echo '
'; } echo '

'.__('Trackbacks').'

'; if (!$trackbacks->isEmpty()) { showComments($trackbacks,$has_action); } else { echo '

'.__('No trackback').'

'; } echo '

'.__('Comments').'

'; if (!$comments->isEmpty()) { showComments($comments,$has_action); } else { echo '

'.__('No comment').'

'; } if ($has_action) { echo '
'. '

'. '

'. form::combo('action',$combo_action). form::hidden('redir',html::escapeURL($redir_url).'&id='.$post_id.'&co=1'). $core->formNonce(). '

'. '
'. '
'; } echo '
'; } /* Add a comment -------------------------------------------------------- */ if ($post_id) { echo '
'. '

'.__('Add a comment').'

'. '
'. '
'. '

'. '

'. '

'. '

'. form::textarea('comment_content',50,8,html::escapeHTML('')). '

'. '

'.form::hidden('post_id',$post_id). $core->formNonce(). '

'. '
'. '
'. '
'; } # Controls comments or trakbacks capabilities function isContributionAllowed($id,$dt,$com=true) { global $core; if (!$id) { return true; } if ($com) { if (($core->blog->settings->system->comments_ttl == 0) || (time() - $core->blog->settings->system->comments_ttl*86400 < $dt)) { return true; } } else { if (($core->blog->settings->system->trackbacks_ttl == 0) || (time() - $core->blog->settings->system->trackbacks_ttl*86400 < $dt)) { return true; } } return false; } # Show comments or trackbacks function showComments($rs,$has_action) { echo ''. ''. ''. ''. ''. ''. ''; while($rs->fetch()) { $comment_url = 'comment.php?id='.$rs->comment_id; $img = '%1$s'; switch ($rs->comment_status) { case 1: $img_status = sprintf($img,__('published'),'check-on.png'); break; case 0: $img_status = sprintf($img,__('unpublished'),'check-off.png'); break; case -1: $img_status = sprintf($img,__('pending'),'check-wrn.png'); break; case -2: $img_status = sprintf($img,__('junk'),'junk.png'); break; } echo ''. ''. ''. ''. ''. ''. ''. ''; } echo '
'.__('Author').''.__('Date').''.__('IP address').''.__('Status').' 
'. ($has_action ? form::checkbox(array('comments[]'),$rs->comment_id,'','','',0,'title="'.__('select this comment').'"') : '').''.$rs->comment_author.''.dt::dt2str(__('%Y-%m-%d %H:%M'),$rs->comment_dt).''.$rs->comment_ip.''.$img_status.''. '
'; } dcPage::helpBlock('page'); ?>