Last Edit Action
In order to avoid clicking on RecentChanges to know who edited a page and why,
here's an action which prints short lastedit infos in the page body:
Usage {{lastedit}}
Optional parameter: show
{{lastedit show="0"}} show user only
Last edited by JavaWoman
{{lastedit}} or {{lastedit show="1"}} show user and notes (default)
Last edited by JavaWoman:
Modified links pointing to docs server
Modified links pointing to docs server
{{lastedit show="2"}} show user, notes, date
Last edited by JavaWoman:
Modified links pointing to docs server
Mon, 28 Jan 2008 00:11 UTC
Modified links pointing to docs server
Mon, 28 Jan 2008 00:11 UTC
{{lastedit show="3"}} show user, notes, date and quickdiff link
actions/lastedit.php
<?php
// Prints short infos on last edit
// Uses parameter: show
// 0 show user only
// 1 show user and notes
// 2 show user, notes, date
// 3 show user, notes, date and quickdiff link
// set default
if ($show == "") {$show="1";}
if ($this->method == "show") {
$page = $this->page;
$pagetag = $page["tag"];
$user = ($this->LoadUser($page["user"]))? $this->Link($page["user"]) : "anonymous";
if (!($show == 0)) {
$note = ($page["note"])? ":<br/><span class=\"notes\">".$page["note"]."</span>" : "";
}
if ($show == 2 || $show == 3) {
list($day, $time) = explode(" ", $page["time"]);
$dateformatted = date("D, d M Y", strtotime($day));
$timeformatted = date("H:i T", strtotime($page["time"]));
}
if ($show == 3) {
$oldpage = $this->LoadSingle("SELECT * FROM ".$this->config["table_prefix"]."pages WHERE tag='".$this->GetPageTag()."' AND latest = 'N' ORDER BY time desc LIMIT 1");
$newid = $page["id"];
$oldid = $oldpage["id"];
$difflink = " [<a title=\"Show differences from last version\" href=\"".$this->Href("diff", $pagetag, "a=".$page["id"]."&b=".$oldpage["id"]."&fastdiff=1")."\">diff</a>]";
}
$output = "<div class=\"lastedit\">Last edited by ".$user.$note."<br /> ".$dateformatted." ".$timeformatted.$difflink."</div>";
print $output;
}
?>
// Prints short infos on last edit
// Uses parameter: show
// 0 show user only
// 1 show user and notes
// 2 show user, notes, date
// 3 show user, notes, date and quickdiff link
// set default
if ($show == "") {$show="1";}
if ($this->method == "show") {
$page = $this->page;
$pagetag = $page["tag"];
$user = ($this->LoadUser($page["user"]))? $this->Link($page["user"]) : "anonymous";
if (!($show == 0)) {
$note = ($page["note"])? ":<br/><span class=\"notes\">".$page["note"]."</span>" : "";
}
if ($show == 2 || $show == 3) {
list($day, $time) = explode(" ", $page["time"]);
$dateformatted = date("D, d M Y", strtotime($day));
$timeformatted = date("H:i T", strtotime($page["time"]));
}
if ($show == 3) {
$oldpage = $this->LoadSingle("SELECT * FROM ".$this->config["table_prefix"]."pages WHERE tag='".$this->GetPageTag()."' AND latest = 'N' ORDER BY time desc LIMIT 1");
$newid = $page["id"];
$oldid = $oldpage["id"];
$difflink = " [<a title=\"Show differences from last version\" href=\"".$this->Href("diff", $pagetag, "a=".$page["id"]."&b=".$oldpage["id"]."&fastdiff=1")."\">diff</a>]";
}
$output = "<div class=\"lastedit\">Last edited by ".$user.$note."<br /> ".$dateformatted." ".$timeformatted.$difflink."</div>";
print $output;
}
?>
Mods by JsnX:
- Removed the line that loaded the current page. The current page is already loaded and stored in $this->page.
- Moved test for show method to beginning. There's no point in running through the code if we're not going to do anything.
- Oops, thanks: I had made both corrections on my machine and forgot to post the modifications :)
CategoryDevelopmentActions
But I think the choice for the parameter values is rather unintuitive, especially with a negative value...
How about:
0 show user only
1 (default) show user and notes
2 show user, notes, date
3 show user, notes, date and quickdiff link
Then, if you want just user and notes (which I think you also think will be the most common usage) you don't need to specify a parameter at all; and we avoid a negative value.
Also, you should jus give the whole thing a class (or id and classes for the components, maybe) and have an entry in the (linked) stylesheet for it - embedded styles make things (styles) really hard to maintain and debug.
As for the CSS selector, this was just a test to see if the idea was appreciated: before (if ever) this is turned into an official Wikka action, the CSS has of course to be updated.
.lastedit {
border:dotted 1px;
padding:3pt;
margin:8pt; color:#888;
font-size:8pt;
width:30%;
}
http://wush.net/trac/wikka/ticket/103
if you want me to do stuff already with phpdoc, someone needs to add a section about it the coding guidelines... i am not familiar with this sytem, and as there are no guidelines, i am not even trying to do it: i would do it "wrong" anyway.
it would be nice to get these guidelines so you don't have to do duplicate work.
thanks, N.
<?php
echo $this->Action('action');
?>
but how can i avoid to have a breaking line?
TIA, n.
Edit page :: last modified on 2005-05-28 19:22:07 by userxy :: Search:
-
but the embedded action shows the username in the following line, like:
Edit page :: last modified on 2005-05-28 19:22:07 by
userxy ::
Search:
...any idea? i removed from the code anything that could cause this (eg. <br>) but nothing changes.
thanks - n.