Commenting blog

This commit is contained in:
Jeremy Shipman 2007-11-14 01:15:40 +00:00
parent acd6e1a6c5
commit 408cf5c8bb
2 changed files with 67 additions and 4 deletions

View File

@ -1,5 +1,12 @@
<?php <?php
/**
* @package blog
*/
/**
* An individual blog entry page to show a blog entry in full
*/
class BlogEntry extends Page { class BlogEntry extends Page {
static $default_parent = array('BlogHolder'); static $default_parent = array('BlogHolder');
@ -62,6 +69,9 @@ class BlogEntry extends Page {
return $fields; return $fields;
} }
/**
* Returns the tags added to this blog entry
*/
function Tags() { function Tags() {
$theseTags = split(" *, *", trim($this->Tags)); $theseTags = split(" *, *", trim($this->Tags));
@ -77,11 +87,16 @@ class BlogEntry extends Page {
} }
} }
/**
* Get the sidebar
*/
function SideBar() { function SideBar() {
return $this->getParent()->SideBar(); return $this->getParent()->SideBar();
} }
/**
* Get a bbcode parsed summary of the blog entry
*/
function ParagraphSummary(){ function ParagraphSummary(){
$content = new Text('Content'); $content = new Text('Content');
$content->value = Convert::raw2xml($this->Content); $content->value = Convert::raw2xml($this->Content);
@ -89,6 +104,9 @@ class BlogEntry extends Page {
return $parser->parse(); return $parser->parse();
} }
/**
* Get the bbcode parsed content
*/
function ParsedContent() { function ParsedContent() {
$parser = new BBCodeParser($this->Content); $parser = new BBCodeParser($this->Content);
$content = new Text('Content'); $content = new Text('Content');
@ -96,6 +114,9 @@ class BlogEntry extends Page {
return $content; return $content;
} }
/**
* Link for editing this blog entry
*/
function EditURL(){ function EditURL(){
return $this->getParent()->Link('post')."/".$this->ID."/"; return $this->getParent()->Link('post')."/".$this->ID."/";
} }
@ -108,6 +129,9 @@ class BlogEntry_Controller extends Page_Controller {
Requirements::themedCSS("blog"); Requirements::themedCSS("blog");
} }
/**
* Gets a link to unpublish the blog entry
*/
function unpublishPost(){ function unpublishPost(){
if(!Permission::check('ADMIN')){ if(!Permission::check('ADMIN')){
Security::permissionFailure($this, Security::permissionFailure($this,

View File

@ -1,5 +1,13 @@
<?php <?php
/**
* @package blog
*/
/**
* Blog holder to display summarised blog entries
*/
class BlogHolder extends Page { class BlogHolder extends Page {
static $icon = "blog/images/blogholder"; static $icon = "blog/images/blogholder";
@ -23,6 +31,9 @@ class BlogHolder extends Page {
return $fields; return $fields;
} }
/**
* The DataObject of blog entries
*/
public function BlogEntries($limit = 10) { public function BlogEntries($limit = 10) {
$start = isset($_GET['start']) ? (int)$_GET['start'] : 0; $start = isset($_GET['start']) ? (int)$_GET['start'] : 0;
$tagCheck = ''; $tagCheck = '';
@ -51,10 +62,16 @@ class BlogHolder extends Page {
return DataObject::get("Page","`ParentID` = $this->ID AND ShowInMenus = 1 $tagCheck $dateCheck","`BlogEntry`.Date DESC",'',"$start, $limit"); return DataObject::get("Page","`ParentID` = $this->ID AND ShowInMenus = 1 $tagCheck $dateCheck","`BlogEntry`.Date DESC",'',"$start, $limit");
} }
/**
* Only display the blog entries that have the specified tag
*/
function Tag() { function Tag() {
return isset($_GET['tag']) ? $_GET['tag'] : false; return isset($_GET['tag']) ? $_GET['tag'] : false;
} }
/**
* A simple form for creating blog entries
*/
function BlogEntryForm(){ function BlogEntryForm(){
Requirements::javascript('jsparty/behaviour.js'); Requirements::javascript('jsparty/behaviour.js');
Requirements::javascript('jsparty/prototype.js'); Requirements::javascript('jsparty/prototype.js');
@ -101,14 +118,23 @@ class BlogHolder extends Page {
return $form; return $form;
} }
/**
* Check if url has "/post"
*/
function isPost(){ function isPost(){
return Director::urlParam('Action') == 'post'; return Director::urlParam('Action') == 'post';
} }
/**
* Link for creating a new blog entry
*/
function postURL(){ function postURL(){
return $this->Link('post'); return $this->Link('post');
} }
/**
* Create default blog setup
*/
function requireDefaultRecords() { function requireDefaultRecords() {
parent::requireDefaultRecords(); parent::requireDefaultRecords();
@ -157,8 +183,7 @@ class BlogHolder extends Page {
class BlogHolder_Controller extends Page_Controller { class BlogHolder_Controller extends Page_Controller {
function init() { function init() {
parent::init(); parent::init();
// This will create a <link> tag point to the RSS feed // This will create a <link> tag point to the RSS feed
RSSFeed::linkToFeed($this->Link() . "rss", "RSS feed of this blog"); RSSFeed::linkToFeed($this->Link() . "rss", "RSS feed of this blog");
Requirements::themedCSS("blog"); Requirements::themedCSS("blog");
@ -166,6 +191,9 @@ class BlogHolder_Controller extends Page_Controller {
} }
/**
* Get the archived blogs for a particular month or year, in the format /year/month/ eg: /2008/10/
*/
function showarchive() { function showarchive() {
$month = addslashes($this->urlParams['ID']); $month = addslashes($this->urlParams['ID']);
return array( return array(
@ -183,16 +211,25 @@ class BlogHolder_Controller extends Page_Controller {
return $output; return $output;
} }
/**
* Get the rss fee for this blog holder's entries
*/
function rss() { function rss() {
global $project; global $project;
$rss = new RSSFeed($this->Children(), $this->Link(), $project . " blog", "", "Title", "ParsedContent"); $rss = new RSSFeed($this->Children(), $this->Link(), $project . " blog", "", "Title", "ParsedContent");
$rss->outputToBrowser(); $rss->outputToBrowser();
} }
/**
* Return list of usable tags for help
*/
function BBTags() { function BBTags() {
return BBCodeParser::usable_tags(); return BBCodeParser::usable_tags();
} }
/**
* Post a new blog entry
*/
function post(){ function post(){
if(!Permission::check('ADMIN')){ if(!Permission::check('ADMIN')){
Security::permissionFailure($this, Security::permissionFailure($this,
@ -212,7 +249,9 @@ class BlogHolder_Controller extends Page_Controller {
} }
/**
* Blog entry form
*/
class BlogEntry_Form extends Form { class BlogEntry_Form extends Form {
function postblog($data) { function postblog($data) {
Cookie::set("BlogHolder_Name", $data['Author']); Cookie::set("BlogHolder_Name", $data['Author']);