aboutsummaryrefslogtreecommitdiff
path: root/mod/blog
diff options
context:
space:
mode:
Diffstat (limited to 'mod/blog')
-rw-r--r--mod/blog/actions/add.php64
-rw-r--r--mod/blog/languages/en.php12
-rw-r--r--mod/blog/start.php4
-rw-r--r--mod/blog/views/default/blog/forms/edit.php36
4 files changed, 113 insertions, 3 deletions
diff --git a/mod/blog/actions/add.php b/mod/blog/actions/add.php
new file mode 100644
index 000000000..21c871e16
--- /dev/null
+++ b/mod/blog/actions/add.php
@@ -0,0 +1,64 @@
+<?php
+
+ /**
+ * Elgg blog: add post action
+ *
+ * @package ElggBlog
+ * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
+ * @author Ben Werdmuller <ben@curverider.co.uk>
+ * @copyright Curverider Ltd 2008
+ * @link http://elgg.org/
+ */
+
+ // Make sure we're logged in (send us to the front page if not)
+ if (!isloggedin()) forward();
+
+ // Get input data
+ $title = get_input('blogtitle');
+ $body = get_input('blogbody');
+ $tags = get_input('blogtags');
+
+ // Cache to the session
+ $_SESSION['blogtitle'] = $title;
+ $_SESSION['blogbody'] = $body;
+ $_SESSION['blogtags'] = $tags;
+
+ // Make sure the title / description aren't blank
+ if (empty($title) || empty($body)) {
+ register_error(elgg_echo("blog:blank"));
+ forward("mod/blog/add.php");
+
+ // Otherwise, save the blog post
+ } else {
+
+ // Initialise a new ElggObject
+ $blog = new ElggObject();
+ // Tell the system it's a blog post
+ $blog->subtype = "blog";
+ // Set its owner to the current user
+ $blog->owner_guid = $_SESSION['user']->getGUID();
+ // For now, set its access to public (we'll add an access dropdown shortly)
+ $blog->access_id = 2;
+ // Set its title and description appropriately
+ $blog->title = $title;
+ $blog->description = $body;
+ // Before we can set metadata, we need to save the blog post
+ if (!$blog->save()) {
+ register_error(elgg_echo("blog:error"));
+ forward("mod/blog/add.php");
+ }
+ // Now let's add tags. We can pass an array directly to setMetaData!
+ // Not very painful.
+ if (is_array($tags) && sizeof($tags) > 0) {
+ $blog->tags = $tags;
+ }
+ // Success message
+ system_message(elgg_echo("blog:posted"));
+ // Remove the blog post cache
+ unset($_SESSION['blogtitle']); unset($_SESSION['blogbody']); unset($_SESSION['blogtags']);
+ // Forward to the main blog page
+ forward("mod/blog/?username=" . $_SESSION['user']->username);
+
+ }
+
+?> \ No newline at end of file
diff --git a/mod/blog/languages/en.php b/mod/blog/languages/en.php
index 3d0057112..cef0f628f 100644
--- a/mod/blog/languages/en.php
+++ b/mod/blog/languages/en.php
@@ -16,6 +16,18 @@
'blog:text' => "Blog text",
+ /**
+ * Status messages
+ */
+
+ 'blog:posted' => "Your blog post was successfully posted.",
+
+ /**
+ * Error messages
+ */
+
+ 'blog:blank' => "Sorry; you need to fill in both the title and body before you can make a post.",
+
);
add_translation("en",$english);
diff --git a/mod/blog/start.php b/mod/blog/start.php
index 4035203b4..d3513dc02 100644
--- a/mod/blog/start.php
+++ b/mod/blog/start.php
@@ -41,4 +41,8 @@
// Make sure the blog initialisation function is called on initialisation
register_event_handler('init','system','blog_init');
+ // Register actions
+ global $CONFIG;
+ register_action("blog/add",false,$CONFIG->pluginspath . "blog/actions/add.php");
+
?> \ No newline at end of file
diff --git a/mod/blog/views/default/blog/forms/edit.php b/mod/blog/views/default/blog/forms/edit.php
index ce39f9205..fb069961b 100644
--- a/mod/blog/views/default/blog/forms/edit.php
+++ b/mod/blog/views/default/blog/forms/edit.php
@@ -16,9 +16,22 @@
if (isset($vars['object'])) {
$title = sprintf(elgg_echo("blog:editpost"),$object->title);
$action = "blog/edit";
- } else {
+ $title = $vars['object']->title;
+ $body = $vars['object']->description;
+ $tags = $vars['object']->tags;
+ } else {
$title = elgg_echo("blog:addpost");
$action = "blog/add";
+ $tags = "";
+ $title = "";
+ $description = "";
+ }
+
+ // Just in case we have some cached details
+ if (isset($vars['blogtitle'])) {
+ $title = $vars['blogtitle'];
+ $body = $vars['blogbody'];
+ $tags = $vars['blogtags'];
}
?>
@@ -32,7 +45,10 @@
<label><?php echo elgg_echo("title"); ?><br />
<?php
- echo elgg_view("input/text");
+ echo elgg_view("input/text", array(
+ "internalname" => "blogtitle",
+ "value" => $title,
+ ));
?>
</label>
@@ -41,11 +57,25 @@
<label><?php echo elgg_echo("blog:text"); ?><br />
<?php
- echo elgg_view("input/longtext");
+ echo elgg_view("input/longtext",array(
+ "internalname" => "blogbody",
+ "value" => $body,
+ ));
?>
</label>
</p>
<p>
+ <label><?php echo elgg_echo("tags"); ?><br />
+ <?php
+
+ echo elgg_view("input/tags", array(
+ "internalname" => "blogtags",
+ "value" => $tags,
+ ));
+
+ ?>
+ </p>
+ <p>
<input type="submit" value="<?php echo elgg_echo('save'); ?>" />
</p>