Comparing revisions for PageAdminAction

Additions:
=====Page Administration Action=====
{{lastedit}}

>>==See also:==
Documentation: ""PageAdminActionInfo"".
Are you a site administrator? Give it a [[PageAdminTest try]]>>This is the development page for the Page Administration action.::c::

This action, inspired by the UserAdmin action, is meant to allow Wikka Administrators to manage pages and perform several maintenance operations.
It displays the standard PageIndex to non-admins.


== Sample output ==

""
<form action="#" method="post">
Search page by name: <input type ="text" name="q" size="20" maxlength="50" value=" "/><input type="submit" value="Submit" accesskey="a" /><br /><br />Show <select name="l"><option value="10" selected>10</option><option value="20" >20</option><option value="30" >30</option><option value="40" >40</option><option value="50" >50</option><option value="60" >60</option><option value="70" >70</option><option value="80" >80</option><option value="90" >90</option><option value="100" >100</option><option value="110" >110</option><option value="120" >120</option><option value="130" >130</option><option value="140" >140</option><option value="150" >150</option><option value="160" >160</option><option value="170" >170</option><option value="180" >180</option><option value="190" >190</option><option value="200" >200</option><option value="210" >210</option><option value="220" >220</option><option value="230" >230</option><option value="240" >240</option><option value="250" >250</option><option value="260" >260</option><option value="270" >270</option><option value="280" >280</option><option value="290" >290</option><option value="300" >300</option><option value="310" >310</option><option value="320" >320</option><option value="330" >330</option><option value="340" >340</option><option value="350" >350</option><option value="360" >360</option><option value="370" >370</option><option value="380" >380</option><option value="390" >390</option><option value="400" >400</option><option value="410" >410</option><option value="420" >420</option><option value="430" >430</option><option value="440" >440</option><option value="450" >450</option><option value="460" >460</option><option value="470" >470</option></select> records per page <input type="submit" value="Apply" accesskey="a" /><br /><br />[Records (468): <strong>1-10</strong> | <a href="http://wikka.jsnx.com/PageAdminTest?l=10&sort=time&d=desc&s=10&q=">11-20</a> (sorted by: <em>time, desc</em> )]<br /><br /><table width="100%" border="1px"> <tr> <th> </th> <th><a href="http://wikka.jsnx.com/PageAdminTest?l=10&sort=tag&d=asc&q=" title="Sort by page name">Page Name</a></th> <th><a href="http://wikka.jsnx.com/PageAdminTest?l=10&sort=owner&d=asc&q=" title="Sort by page owner">Owner</a></th> <th><a href="http://wikka.jsnx.com/PageAdminTest?l=10&sort=user&d=asc&q=" title="Sort by author name">Last Author</a></th> <th><a href="http://wikka.jsnx.com/PageAdminTest?l=10&sort=time&d=asc&q=" title="Sort by edit time">Last Edit</a></th> <th>Handle</th> </tr> <tr> <td><input type="checkbox" id="5388" /></td> <td><a href="http://wikka.jsnx.com/SandBox" title="Go to SandBox">SandBox</a></td> <td><center>(Public)</center></td><td><center>84.4.13.15</center></td><td><center>2005-01-31 08:18:49 (<a href="http://wikka.jsnx.com/SandBox/history" title="Display SandBox's history">-</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/SandBox/edit" title="Edit SandBox">edit</a> :: <a href="http://wikka.jsnx.com/SandBox/delete" title="Delete SandBox">delete</a> :: <a href="http://wikka.jsnx.com/SandBox/clone" title="Clone SandBox">clone</a> :: rename :: <a href="http://wikka.jsnx.com/SandBox/acls" title="Change ACLs for SandBox">acl</a> :: <a href="http://wikka.jsnx.com/SandBox/revisions" title="Compare previous versions of SandBox">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5385" /></td> <td><a href="http://wikka.jsnx.com/PluginsInDevelopment" title="Go to PluginsInDevelopment">PluginsInDevelo~</a></td> <td><center>(Public)</center></td><td><center><a href="http://wikka.jsnx.com/GmBowen" title="Go to GmBowen's homepage">GmBowen</a></center></td><td><center>2005-01-31 04:51:13 (<a href="http://wikka.jsnx.com/PluginsInDevelopment/history" title="Last edit: updated example links of PMS & progress update">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/PluginsInDevelopment/edit" title="Edit PluginsInDevelopment">edit</a> :: <a href="http://wikka.jsnx.com/PluginsInDevelopment/delete" title="Delete PluginsInDevelopment">delete</a> :: <a href="http://wikka.jsnx.com/PluginsInDevelopment/clone" title="Clone PluginsInDevelopment">clone</a> :: rename :: <a href="http://wikka.jsnx.com/PluginsInDevelopment/acls" title="Change ACLs for PluginsInDevelopment">acl</a> :: <a href="http://wikka.jsnx.com/PluginsInDevelopment/revisions" title="Compare previous versions of PluginsInDevelopment">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5384" /></td> <td><a href="http://wikka.jsnx.com/ProgrammingHelp" title="Go to ProgrammingHelp">ProgrammingHelp</a></td> <td><center>(Public)</center></td><td><center><a href="http://wikka.jsnx.com/GmBowen" title="Go to GmBowen's homepage">GmBowen</a></center></td><td><center>2005-01-31 03:38:56 (<a href="http://wikka.jsnx.com/ProgrammingHelp/history" title="Last edit: update on problem with date conversion from MYSQL string to readable">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/ProgrammingHelp/edit" title="Edit ProgrammingHelp">edit</a> :: <a href="http://wikka.jsnx.com/ProgrammingHelp/delete" title="Delete ProgrammingHelp">delete</a> :: <a href="http://wikka.jsnx.com/ProgrammingHelp/clone" title="Clone ProgrammingHelp">clone</a> :: rename :: <a href="http://wikka.jsnx.com/ProgrammingHelp/acls" title="Change ACLs for ProgrammingHelp">acl</a> :: <a href="http://wikka.jsnx.com/ProgrammingHelp/revisions" title="Compare previous versions of ProgrammingHelp">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5381" /></td> <td><a href="http://wikka.jsnx.com/IndependentWikkaReviews" title="Go to IndependentWikkaReviews">IndependentWikk~</a></td> <td><center><a href="http://wikka.jsnx.com/FreeNSK" title="Go to FreeNSK's homepage">FreeNSK</a></center></td><td><center><a href="http://wikka.jsnx.com/JavaWoman" title="Go to JavaWoman's homepage">JavaWoman</a></center></td><td><center>2005-01-30 18:50:58 (<a href="http://wikka.jsnx.com/IndependentWikkaReviews/history" title="Last edit: small title correction">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/IndependentWikkaReviews/edit" title="Edit IndependentWikkaReviews">edit</a> :: <a href="http://wikka.jsnx.com/IndependentWikkaReviews/delete" title="Delete IndependentWikkaReviews">delete</a> :: <a href="http://wikka.jsnx.com/IndependentWikkaReviews/clone" title="Clone IndependentWikkaReviews">clone</a> :: rename :: <a href="http://wikka.jsnx.com/IndependentWikkaReviews/acls" title="Change ACLs for IndependentWikkaReviews">acl</a> :: <a href="http://wikka.jsnx.com/IndependentWikkaReviews/revisions" title="Compare previous versions of IndependentWikkaReviews">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5380" /></td> <td><a href="http://wikka.jsnx.com/SuggestionBox" title="Go to SuggestionBox">SuggestionBox</a></td> <td><center>(Public)</center></td><td><center><a href="http://wikka.jsnx.com/DarTar" title="Go to DarTar's homepage">DarTar</a></center></td><td><center>2005-01-30 18:04:39 (<a href="http://wikka.jsnx.com/SuggestionBox/history" title="Last edit: Replying to JeroenJansen">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/SuggestionBox/edit" title="Edit SuggestionBox">edit</a> :: <a href="http://wikka.jsnx.com/SuggestionBox/delete" title="Delete SuggestionBox">delete</a> :: <a href="http://wikka.jsnx.com/SuggestionBox/clone" title="Clone SuggestionBox">clone</a> :: rename :: <a href="http://wikka.jsnx.com/SuggestionBox/acls" title="Change ACLs for SuggestionBox">acl</a> :: <a href="http://wikka.jsnx.com/SuggestionBox/revisions" title="Compare previous versions of SuggestionBox">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5378" /></td> <td><a href="http://wikka.jsnx.com/CategorySystemOverhaul" title="Go to CategorySystemOverhaul">CategorySystemO~</a></td> <td><center><a href="http://wikka.jsnx.com/JsnX" title="Go to JsnX's homepage">JsnX</a></center></td><td><center><a href="http://wikka.jsnx.com/DarTar" title="Go to DarTar's homepage">DarTar</a></center></td><td><center>2005-01-30 17:56:28 (<a href="http://wikka.jsnx.com/CategorySystemOverhaul/history" title="Last edit: Adding FreeMind suggestion">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/CategorySystemOverhaul/edit" title="Edit CategorySystemOverhaul">edit</a> :: <a href="http://wikka.jsnx.com/CategorySystemOverhaul/delete" title="Delete CategorySystemOverhaul">delete</a> :: <a href="http://wikka.jsnx.com/CategorySystemOverhaul/clone" title="Clone CategorySystemOverhaul">clone</a> :: rename :: <a href="http://wikka.jsnx.com/CategorySystemOverhaul/acls" title="Change ACLs for CategorySystemOverhaul">acl</a> :: <a href="http://wikka.jsnx.com/CategorySystemOverhaul/revisions" title="Compare previous versions of CategorySystemOverhaul">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5377" /></td> <td><a href="http://wikka.jsnx.com/PageAdminAction" title="Go to PageAdminAction">PageAdminAction</a></td> <td><center><a href="http://wikka.jsnx.com/DarTar" title="Go to DarTar's homepage">DarTar</a></center></td><td><center><a href="http://wikka.jsnx.com/DarTar" title="Go to DarTar's homepage">DarTar</a></center></td><td><center>2005-01-30 17:49:48 (<a href="http://wikka.jsnx.com/PageAdminAction/history" title="Last edit: Replying to Mike and adding ToDo item">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/PageAdminAction/edit" title="Edit PageAdminAction">edit</a> :: <a href="http://wikka.jsnx.com/PageAdminAction/delete" title="Delete PageAdminAction">delete</a> :: <a href="http://wikka.jsnx.com/PageAdminAction/clone" title="Clone PageAdminAction">clone</a> :: rename :: <a href="http://wikka.jsnx.com/PageAdminAction/acls" title="Change ACLs for PageAdminAction">acl</a> :: <a href="http://wikka.jsnx.com/PageAdminAction/revisions" title="Compare previous versions of PageAdminAction">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5373" /></td> <td><a href="http://wikka.jsnx.com/JeremyYip" title="Go to JeremyYip">JeremyYip</a></td> <td><center><a href="http://wikka.jsnx.com/JeremyYip" title="Go to JeremyYip's homepage">JeremyYip</a></center></td><td><center><a href="http://wikka.jsnx.com/JeremyYip" title="Go to JeremyYip's homepage">JeremyYip</a></center></td><td><center>2005-01-30 12:53:53 (<a href="http://wikka.jsnx.com/JeremyYip/history" title="Last edit: Minor edit, added a link">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/JeremyYip/edit" title="Edit JeremyYip">edit</a> :: <a href="http://wikka.jsnx.com/JeremyYip/delete" title="Delete JeremyYip">delete</a> :: <a href="http://wikka.jsnx.com/JeremyYip/clone" title="Clone JeremyYip">clone</a> :: rename :: <a href="http://wikka.jsnx.com/JeremyYip/acls" title="Change ACLs for JeremyYip">acl</a> :: <a href="http://wikka.jsnx.com/JeremyYip/revisions" title="Compare previous versions of JeremyYip">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5371" /></td> <td><a href="http://wikka.jsnx.com/PageAdminTest" title="Go to PageAdminTest">PageAdminTest</a></td> <td><center><a href="http://wikka.jsnx.com/DarTar" title="Go to DarTar's homepage">DarTar</a></center></td><td><center><a href="http://wikka.jsnx.com/DarTar" title="Go to DarTar's homepage">DarTar</a></center></td><td><center>2005-01-30 11:36:08 (<a href="http://wikka.jsnx.com/PageAdminTest/history" title="Last edit: Test pageadmin action">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/PageAdminTest/edit" title="Edit PageAdminTest">edit</a> :: <a href="http://wikka.jsnx.com/PageAdminTest/delete" title="Delete PageAdminTest">delete</a> :: <a href="http://wikka.jsnx.com/PageAdminTest/clone" title="Clone PageAdminTest">clone</a> :: rename :: <a href="http://wikka.jsnx.com/PageAdminTest/acls" title="Change ACLs for PageAdminTest">acl</a> :: <a href="http://wikka.jsnx.com/PageAdminTest/revisions" title="Compare previous versions of PageAdminTest">rev</a></center></td> </tr> <tr> <td><input type="checkbox" id="5368" /></td> <td><a href="http://wikka.jsnx.com/WikkaOptimization" title="Go to WikkaOptimization">WikkaOptimizati~</a></td> <td><center><a href="http://wikka.jsnx.com/DotMG" title="Go to DotMG's homepage">DotMG</a></center></td><td><center><a href="http://wikka.jsnx.com/JavaWoman" title="Go to JavaWoman's homepage">JavaWoman</a></center></td><td><center>2005-01-30 08:22:17 (<a href="http://wikka.jsnx.com/WikkaOptimization/history" title="Last edit: reply to DotMG">*</a>)</center></td> <td><center> <a href="http://wikka.jsnx.com/WikkaOptimization/edit" title="Edit WikkaOptimization">edit</a> :: <a href="http://wikka.jsnx.com/WikkaOptimization/delete" title="Delete WikkaOptimization">delete</a> :: <a href="http://wikka.jsnx.com/WikkaOptimization/clone" title="Clone WikkaOptimization">clone</a> :: rename :: <a href="http://wikka.jsnx.com/WikkaOptimization/acls" title="Change ACLs for WikkaOptimization">acl</a> :: <a href="http://wikka.jsnx.com/WikkaOptimization/revisions" title="Compare previous versions of WikkaOptimization">rev</a></center></td> </tr></table><br /><form action="#" method="get">
[<a href="http://wikka.jsnx.com/PageAdminTest?l=10&sort=time&d=desc&s=0&q=&selectall=1" title="Check all results">Check all</a> | <a href="http://wikka.jsnx.com/PageAdminTest?l=10&sort=time&d=desc&s=0&q=&selectall=0" title="Uncheck all results">Uncheck all</a>] With selected: <select name="action"><option value=" " selected="selected">---</option><option value="massdelete">Delete</option><option value="massrename">Rename</option><option value="massacls">Change ACLs</option></select> <input type="submit" value="Submit" accesskey="s" /></form>

""

=== Current Version ===

Last available version is **0.2.1**.

**Features:**
~-displays a pageable, sortable and searchable list of pages;
~-supports a bunch of configurable options (including max. length of displayed pagename, max. length of hostname, symbol for truncated text);
~-generates links to different handlers with titles;
~-shortens long pagenames and hostnames;
~-shows last edit notes (if available);
~-adds 'claim' links to pages with no owner;
~-shows plain-text usernames if user has no homepage.

**Bugfixes and modifications:**
~-added constant section;
~-added titles to different form elements;
~-added configurable hostname and pagename length limit;
~-fixed problem with search keyword not read by pager;
~-added submit buttons after menus.

=== To Do===

To do:
~-Code optimization;
~-Mass-operations (mass-page deletion, mass-page rename, mass-page ACLs etc.);
~-Rename handler;
~-CSS-driven layout;
~~& Can I advocate for a "Page Hide/Unhide" option here?....H instead of Y or N for most recent works well. In some communities, particularly where there might be legal/administrative follow-ups to what was posted, it is quite useful to be able to "keep" the contents of the page in the database, but make them inaccessible to the wiki users. --GmBowen
~~~& Mike, as you can see this interface does not add any specific handler or page feature which is not already supported by Wikka: it is just a //hub// for existing handlers (the multiple-page operations will require new handlers, though). So if you want to propose something like a 'hide/unhide' handler, I suggest you open a dedicated page. -- DarTar

===The code ===

Save the code below as ##actions/pageadmin.php## and use it as ##""{{pageadmin}}""##.

%%(php)
<?php

/**
* Display an interface allowing Wikka administrators to perform multiple operations on Wikka pages.
*
* @package Actions
* @name PageAdmin
*
* @author {@link http://wikka.jsnx.com/DarTar Dario Taraborelli}
* @version 0.2.1
* @since Wikka 1.1.X.X
*
* @output A list of pages available on the current Wikka server.
*
* @todo - mass-operations
* - rename handler
* - full-text search
* - i18n support
* - CSS-driven layout
*/

// set default values as constants
define('DEFAULT_RECORDS_LIMIT', '20'); # number of records per page
define('DEFAULT_REC_LIMIT_STEP', '10'); # step for selectable records limit
define('DEFAULT_SORT_FIELD', 'time'); # sort field
define('DEFAULT_SORT_ORDER', 'desc'); # sort order, ascendant or descendant
define('DEFAULT_START', '0'); # start record
define('DEFAULT_SEARCH', ''); # keyword to restrict page search
define('DEFAULT_TAG_LENGTH', '15'); # max. length of displayed pagename
define('DEFAULT_URL_LENGTH', '18'); # max. length of displayed user host
define('DEFAULT_TRUNCATOR', '~'); # symbol replacing truncated text

// restrict access to admins
if ($this->IsAdmin($this->GetUser())) {

// perform mass-operations if required (forthcoming)
if ($_GET["action"] == "massdelete") {
echo $this->Action("massdelete");
} else if ($_GET["action"] == "massrename"){
echo $this->Action("massrename");
} else if ($_GET["action"] == "massacls"){
echo $this->Action("massacls");
} else {

// process URL variables

// number of records per page
$l = (!$_POST['l'])? $_GET['l'] : $_POST['l'];
if (!$_POST['l'] && !$_GET['l']) $l = DEFAULT_RECORDS_LIMIT;

// sort field
$sort = ($_GET['sort'])? $_GET['sort'] : DEFAULT_SORT_FIELD;
// sort order
$d = ($_GET['d'])? $_GET['d'] : DEFAULT_SORT_ORDER;
// start record
$s = ($_GET['s'])? $_GET['s'] : DEFAULT_START;

// search string
$q = (!$_POST['q'])? $_GET['q'] : $_POST['q'];
if (!$_POST['q'] && !$_GET['q']) $q = DEFAULT_SEARCH;

// restrict MySQL query by search string
$where = 'WHERE tag LIKE "%'.$q.'%"and latest = "Y"';

// get total number of pages
$pages = $this->LoadSingle('SELECT count(*) as n FROM '.$this->config['table_prefix'].'pages '.$where);
$numpages = $pages['n'];

// print page header
echo $this->Format('===== Page Administration ===== --- --- ');

// build pager form
$form = $this->FormOpen('','','post');
$form .= 'Search page by name: <input type ="text" name="q" title="Enter a search string" size="20" maxlength="50" value="'.$q.'"/><input type="submit" value="Submit" accesskey="a" /><br /><br />';
$form .= 'Show <select name="l">';

// build drop-down menu
for ($rec=DEFAULT_REC_LIMIT_STEP; $rec < ($numpages+DEFAULT_REC_LIMIT_STEP); $rec+=DEFAULT_REC_LIMIT_STEP) {
$selected = ($l == $rec)? 'selected' : '';
$form .= '<option value="'.$rec.'" '.$selected.'>'.$rec.'</option>';
}
$form .= '</select> records per page <input type="submit" value="Apply" accesskey="a" /><br /><br />';
$this->FormClose();
echo $form;
// build pager links
if($s > 0)
$prev = '<a href="' .$this->Href('','','l='.$l.'&sort='.$sort.'&d='.$d.'&s='.($s-$l)).'&q='.$q.'" title="Show records from '.($s-$l+1).' to '.$s.'">'.($s-$l+1).'-'.$s.'</a> | ';
if($numpages > ($s + $l))
$next = ' | <a href="'.$this->Href('','','l='.$l.'&sort='.$sort.'&d='.$d.'&s='.($s+$l)).'&q='.$q.'" title="Show records from '.($s+$l+1).' to '.($s+2*$l).'">'.($s+$l+1).'-'.($s+2*$l).'</a>';
echo '[Records ('.$numpages.'): '.$prev.'<strong>'.($s+1).'-'.($s+$l).'</strong>'.$next.' (sorted by: <em>'.$sort.', '.$d.'</em> )]<br /><br />';

// get page list
$pagedata = $this->LoadAll("SELECT * FROM ".$this->config["table_prefix"]."pages ".
$where." ORDER BY ".$sort." ".$d." limit ".$s.", ".$l);

if ($pagedata) {

// build table headers
$tagheader = '<a href="'.$this->Href('','', (($sort == 'tag' && $d == 'asc')? 'l='.$l.'&sort=tag&d=desc&q='.$q : 'l='.$l.'&sort=tag&d=asc&q='.$q)).'" title="Sort by page name">Page Name</a>';
$ownerheader = '<a href="'.$this->Href('','', (($sort == 'owner' && $d == 'asc')? 'l='.$l.'&sort=owner&d=desc&q='.$q : 'l='.$l.'&sort=owner&d=asc&q='.$q)).'" title="Sort by page owner">Owner</a>';
$userheader = '<a href="'.$this->Href('','', (($sort == 'user' && $d == 'asc')? 'l='.$l.'&sort=user&d=desc&q='.$q : 'l='.$l.'&sort=user&d=asc&q='.$q)).'" title="Sort by author name">Last Author</a>';
$lasteditheader = '<a href="'.$this->Href('','', (($sort == 'time' && $d == 'desc')? 'l='.$l.'&sort=time&d=asc&q='.$q : 'l='.$l.'&sort=time&d=desc&q='.$q)).'" title="Sort by edit time">Last Edit</a>';

$htmlout = '<table width="100%" border="1px">'.
' <tr>'.
' <th> </th>'.
' <th>'.$tagheader.'</th>'.
' <th>'.$ownerheader.'</th>'.
' <th>'.$userheader.'</th>'.
' <th>'.$lasteditheader.'</th>'.
' <th>Handle</th>'.
' </tr>';

// feed table with data
foreach($pagedata as $page) {

// truncate long page names
$pagename = (strlen($page['tag']) > DEFAULT_TAG_LENGTH)? substr($page['tag'], 0, DEFAULT_TAG_LENGTH).DEFAULT_TRUNCATOR : $page['tag'];

// build handler links
$lastedit = $page['time'];
$lastedit .= ($page['note'])? ' (<a href="'.$this->Href('history', $page['tag'], '').'" title="Last edit: '.$page['note'].'">*</a>)' : ' (<a href="'.$this->Href('history', $page['tag'], '').'" title="Display '.$page['tag'].'\'s history">-</a>)';
$showpage = '<a href="'.$this->Href('',$page['tag'], '').'" title="Open '.$page['tag'].'">'.$pagename.'</a>';
$editpage = '<a href="'.$this->Href('edit',$page['tag'], '').'" title="Edit '.$page['tag'].'">edit</a>';
$deletepage = '<a href="'.$this->Href('delete',$page['tag'], '').'" title="Delete '.$page['tag'].'">delete</a>';
$clonepage = '<a href="'.$this->Href('clone',$page['tag'], '').'" title="Clone '.$page['tag'].'">clone</a>';
$aclpage = '<a href="'.$this->Href('acls',$page['tag'], '').'" title="Change ACLs for '.$page['tag'].'">acl</a>';
$revpage = '<a href="'.$this->Href('revisions',$page['tag'], '').'" title="Compare previous versions of '.$page['tag'].'">rev</a>';

// get page owner
if ($page['owner']) {
// is the owner a registered user?
if ($this->LoadUser($page['owner'])) {
// does user's homepage exist?
if ($this->ExistsPage($page['owner'])) {
$owner = $this->Link($page['owner'],'','','','','Go to '.$page['owner'].'\'s homepage');
} else {
$owner = $page['owner'];
}
} else {
$owner = $page['owner'];
}
} else {
// page has empty owner field: print claim link
$owner = $this->Link($page['tag'], 'claim','(Nobody)','','','Take ownership of '.$page['tag']);
}
// get last author
if ($page['user']) {
// is the author a registered user?
if ($this->LoadUser($page['user'])) {
// does user's homepage exist?
if ($this->ExistsPage($page['user'])) {
$user = $this->Link($page['user'],'','','','','Go to '.$page['user'].'\'s homepage');
} else {
$user = $page['user'];
}
} else {
// truncate long host names
$user = (strlen($page['user']) > DEFAULT_URL_LENGTH)? substr($page['user'], 0,
DEFAULT_URL_LENGTH).DEFAULT_TRUNCATOR : $page['user'];
}
} else {
// page has empty user field
$user = '(Nobody)';
}
$htmlout .= ' <tr>';
$htmlout .= ' <td><input type="checkbox" id="'.$page['id'].'" '.(($_GET['selectall'] == 1)? 'checked="checked"' : '').' title="Select '.$page['tag'].'"/></td>';
$htmlout .= ' <td>'.$showpage.'</td> <td><center>'.$owner.
'</center></td><td><center>'.$user.'</center></td><td><center>'.$lastedit.
'</center></td> <td><center> '.$editpage.' :: '.$deletepage.' :: '.$clonepage.' :: rename :: '.$aclpage.' :: '.$revpage.'</center></td>';
$htmlout .= ' </tr>';
}

$htmlout .= '</table>';
// print the table
echo $htmlout;

// multiple-page operations (forthcoming)
echo '<br />'.$this->FormOpen('','','get');
echo '[<a href="'.$this->Href('','','l='.$l.'&sort='.$sort.'&d='.$d.'&s='.$s.'&q='.$q.'&selectall=1').'" title="Check all results">Check all</a> | <a href="'.$this->Href('','','l='.$l.'&sort='.$sort.'&d='.$d.'&s='.$s.'&q='.$q.'&selectall=0').'" title="Uncheck all results">Uncheck all</a>]';
echo ' With selected: <select name="action">';
echo '<option value="" selected="selected">---</option>';
echo '<option value="massdelete">Delete</option>';
echo '<option value="massrename">Rename</option>';
echo '<option value="massacls">Change ACLs</option>';
echo '</select> <input type="submit" value="Submit" accesskey="s" />';
echo $this->FormClose();
} else {
// no records matching the search string: print error message
echo '<p><span class="error">Sorry, there are no pages matching</span> <strong>"'.$q.'"</strong></p>';
}
}
} else {
// current user is not admin: show plain page index
echo $this->Action('pageindex');
}
?>
%%

----
CategoryDevelopment
Deletions:
[[http://lepki.net/ss/products_files/images/new2460.htm panasonic sv sd50 software]] [[http://www.ambresil.dz/downloads/actualite/files/2345.html japanese comedy movies]] [[http://www.ambresil.dz/downloads/actualite/files/1279.html boyhood paradise]] [[http://shobeauction.com/pages/images/pics/index.htm web]] [[http://visionoffice.co.kr/nalog/plug_in_config/conf/comment1701.htm model photo railroad]] [[http://realtorsplus.net/images/listing_photos/thumbs/new2755.htm landscaping ideas]] [[http://neverendingranch.net/images/thumbs/article-1859.htm outside video]] [[http://cloydfuneralhome.com/site/administrator/components/com_images/news-1459.html kings men cologne]] [[http://sgp-gestour.com/en/common/Data/comment-86.html acrobatic aircraft display free video]] [[http://neverendingranch.net/images/thumbs/article-1647.htm antique johnson outboard motors]] [[http://stmichaelschurch.ca/gallery2/_install/po/eng/text-1563.html breathe anna nalick]] [[http://assurances-2a.com/test/upload/media/news-1902-20080804.html movie theater clarksville tennessee]] [[http://realtorsplus.net/images/listing_photos/thumbs/new2175.htm trenchers]] [[http://orangecountychiro.com/wp-content/uploads/2006/news739.html paranormal video clip]] [[http://lewistowndragracing.com/photos/albums/userpics/10002/comment-1291.htm effects of lipitor on the liver]] [[http://secretsofselfhelp.com/wp-content/uploads/2006/page-291.html street legal scooters]] [[http://realtorsplus.net/images/listing_photos/thumbs/new1832.htm free amateur pics]] [[http://turbosolutions.com/images/icons/topic1241.htm custom tents]] [[http://anabib.com/chatana/chat/localization/czech/img/topic-2127.htm kolala po]] [[http://itca.or.jp/kanto/wic/attachment/97/resource-1614.html let me love you mario video download]] [[http://destinationlewistownmontana.com/photos/albums/wpw/resource622.htm tag-along trailers]] [[http://enof-mines.com/downloads/docs/comment1371.htm optical lense companies]] [[http://anabib.com/chatana/chat/localization/czech/img/topic-1591.htm kirsten imrie video]] [[http://ulbgc.org/trustees/wp-content/uploads/2007/article784.html licensed nursing online practical school]] [[http://turbosolutions.com/images/icons/topic1715.htm improve elementary school reading comprehension]] [[http://groupe-abcuisine.com/images/icons/article-214.htm jamal]] [[http://neverendingranch.net/images/thumbs/article-671.htm nokia 3315 ringtones free]] [[http://cmmccares.com/uploads/images/media/c4tvic4-600.html carol brown]] [[http://quadfive.com/pages/php_scripts/files/1641.html tax lien certificates in ontario]] [[http://enof-mines.com/downloads/docs/comment198.htm merrill]] [[http://quadfive.com/pages/php_scripts/files/625.html swat videos download]] [[http://cmmccares.com/uploads/images/media/index.html home]] [[http://mcalger.net/forum/forumbackup/dump/1627.html pirate colouring pages]] [[http://qualityoflifemedia.com/bestof_images/icons/resource956.htm north carolina mortgage broker licensing]] [[http://burtonchamberofcommerce.org/demo/site/images/pics/new843.htm nine tailed fox bittorrent]] [[http://cloydfuneralhome.com/site/administrator/components/com_images/news-2006.html apply clip ponytail]] [[http://groupe-abcuisine.com/images/icons/article-1801.htm ikea croydon address]] [[http://realtorsplus.net/images/listing_photos/thumbs/new2614.htm make it up with love video]] [[http://neverendingranch.net/images/thumbs/article-591.htm face lift cream]] [[http://escrow-services.info/cache/files/page639.html seguridad en la escuela]] [[http://anabib.com/chatana/chat/localization/czech/img/topic-1455.htm real estate licences ma]] [[http://turbosolutions.com/images/icons/topic2797.htm queen fat bottomed girls video]] [[http://ja-harima.or.jp/skyboard/files/rd/csedva.html abhishek bachan movie]] [[http://musicforchange.com/cms/media/images/caviboc.htm idea license personalized plate rescue]] [[http://secretsofselfhelp.com/wp-content/uploads/2006/page-1472.html fire waterfalls]] [[http://unlimitedconfidence.com/swiftblog/titles/images/article642.html inn at the opera san fransico]] [[http://pixastudio.com/fr/common/Image/thumbs/text-802.htm metformin and low blood sugar]] [[http://cloydfuneralhome.com/site/administrator/components/com_images/news-1361.html decorative column]] [[http://ja-harima.or.jp/skyboard/files/rd/fimonxno.html mortgage lead specialist]] [[http://mcalger.net/forum/forumbackup/dump/386.html free lg ringtone canada]] [[http://itca.or.jp/kanto/wic/attachment/97/resource-1129.html asian gallery porn video]] [[http://www.ambresil.dz/downloads/actualite/files/2428.html motorcycle jump video]] [[http://mycoastalconnections.com/photos/albums/pictures/news-1214.html porn bloopers video trailers]] [[http://patrol-store.co.uk/blog/wp-content/uploads/2007/topic-1650.htm black and white photography]] [[http://www.ambresil.dz/downloads/actualite/files/2477.html mlm home business]] [[http://ttminihorse.com/tackstore/_pplogs/cache/news-429-2008-07-26.html jo hick gallery]] [[http://mycoastalconnections.com/photos/albums/pictures/news-1903.html journeyman license va]] [[http://sgp-gestour.com/en/common/Data/comment-1716.html pc tv video]] [[http://shobeauction.com/pages/images/pics/basoucoro.htm funkytown ringtones]] [[http://lepki.net/ss/products_files/images/new2200.htm group medical plan]] [[http://orthopedicsofcentralmontana.com/pages/images/icons/sitemap.html webmap]] [[http://assurances-2a.com/test/upload/media/news-523-20080802.html insane clown posse music videos]] [[http://turbosolutions.com/images/icons/topic1288.htm taste buds]] [[http://mcalger.net/forum/forumbackup/dump/1312.html lil jon lover and friends video]] [[http://sentosoft.com/sestmp/cache/chicdron.html always and forever napolean dynomite]] [[http://cuisine-dz.com/wikipedia/config/conf/text2105.htm action and scary movie site myspace.com]] [[http://visionoffice.co.kr/nalog/plug_in_config/conf/comment1320.htm atlanta drive in in movie]] [[http://www.ambresil.dz/downloads/actualite/files/1430.html alien singing video]] [[http://patrol-store.co.uk/blog/wp-content/uploads/2007/topic-1180.htm poly ringtones for nokia 3100]] [[http://groupe-abcuisine.com/images/icons/article-2360.htm nathan and haley video clip]] [[http://musicforchange.com/cms/media/images/feveret.htm buy cheap silver]] [[http://ramblinroseranch.com/images/thumbs/news-1478-2008-08-04.html install terminal server license server]] [[http://ramblinroseranch.com/images/thumbs/news-1069-2008-08-03.html realgm]] [[http://burtonchamberofcommerce.org/demo/site/images/pics/new611.htm activation card chase master platinum]] [[http://assurances-2a.com/test/upload/media/news-1382-20080801.html kid movie ratings]] [[http://cityoflewistown.com/pages/images/stories/pdfs/docs/resource1651.htm t8 t12 fluorescent]] [[http://lepki.net/ss/products_files/images/new2201.htm west orange newspaper]] [[http://orthopedicsofcentralmontana.com/pages/images/icons/topic646.htm shoe rack]] [[http://pixastudio.com/fr/common/Image/thumbs/text-1528.htm sereday]] [[http://courtesychevroletpontiacbuick.com/images/page_upload/icons/resource1735.htm sapphic movie samples]] [[http://groupe-abcuisine.com/images/icons/article-2687.htm sustanon and dianabol cycle]] [[http://realtorsplus.net/images/listing_photos/thumbs/new1731.htm online graduate degree program jewett city connecticut]] [[http://unlimitedconfidence.com/swiftblog/titles/images/article1723.html caldecott]] [[http://deannewtoninc.com/images/user_photos/thumbs/article434.html hephaestus]] [[http://shobeauction.com/pages/images/pics/lirice.htm actonel mg]] [[http://itca.or.jp/kanto/wic/attachment/97/resource-2183.html every movie made]] [[http://clubfetish.ca/kenjiro/wp-content/uploads/2007/sitemap.htm sitemap]] [[http://ulbgc.org/trustees/wp-content/uploads/2007/article1315.html early symptoms of ms]] [[http://sgp-gestour.com/en/common/Data/comment-1031.html corporate event entertainment]] [[http://ttminihorse.com/tackstore/_pplogs/cache/news-2112-2008-07-25.html oragsm video]] [[http://lewistowndragracing.com/photos/albums/userpics/10002/index.htm website]] [[http://www.ambresil.dz/downloads/actualite/files/229.html girl riding dick]] [[http://lewistownmontanarealestate.com/pages/include/files/ztalocame-372.html jena kay movie ricci sample]] [[http://mcalger.net/forum/forumbackup/dump/1411.html movie player dvd]] [[http://pixastudio.com/fr/common/Image/thumbs/text-288.htm shakira music video whenever]] [[http://onlyfarms.com/vote/data/media/18/index.html domain]] [[http://sentosoft.com/sestmp/cache/oubrheno.html free jenna mpegs]] [[http://musicforchange.com/cms/media/images/norelh.htm bar mitzvah maryland photography]] [[http://turbosolutions.com/images/icons/topic2088.htm reinstall ras]] [[http://assurances-2a.com/test/upload/media/news-1350-20080731.html syncrosoft lcc activation code]] [[http://cinestarfilmworks.com/mobile/files/img/topic-1224.html tiniest bikini contest]] [[http://cmmccares.com/uploads/images/media/troceltfe-204.html pamela anderson home videos]] [[http://stmichaelschurch.ca/gallery2/_install/po/eng/text-678.html road dust control product]] [[http://itca.or.jp/kanto/wic/attachment/97/resource-1570.html homophobia]] [[http://ja-harima.or.jp/skyboard/files/rd/sitvihe.html korn thoughtless music video]] [[http://ttminihorse.com/tackstore/_pplogs/cache/news-758-2008-08-02.html kaylani lei torrent]] [[http://mortgagebondnet.com/apps/pdfs/docs/news808.html ages stages child development]] [[http://employmentbillboard.co.uk/pub/Image/pics/cacnaqasg-1871.html antagonistic drug]] [[http://orthopedicsofcentralmontana.com/pages/images/icons/topic122.htm respiratory system quizes]] [[http://sgp-gestour.com/en/common/Data/comment-1741.html as as backstreet boy long love video]] [[http://turbosolutions.com/images/icons/topic942.htm antivirus crack code]] [[http://ttminihorse.com/tackstore/_pplogs/cache/news-550-2008-07-24.html moisture determination method]] [[http://enof-mines.com/downloads/docs/comment2266.htm toale brother funeral home]] [[http://cloydfuneralhome.com/site/administrator/components/com_images/news-2598.html arcade fire ringtones]] [[http://ttminihorse.com/tackstore/_pplogs/cache/news-1296-2008-08-02.html second first impression torrent]] [[http://mortgagebondnet.com/apps/pdfs/docs/news1018.html accutane and inflammatory bowel disease]] [[http://onlyfarms.com/vote/data/media/18/topic1185.htm pvc video card chart]] [[http://aregnet.net/ar/images/thumbs/comment-322.html teenage fist fight]] [[http://formation-ntic.com/images/icons/page-1491.html moviepass removal]] [[http://cuisine-dz.com/wikipedia/config/conf/text2214.htm nrl video]] [[http://www.swansea.ca/forum/themes/default3/news-1753-2008-07-25.html pc video output]] [[http://stmichaelschurch.ca/gallery2/_install/po/eng/text-1914.html guest book]] [[http://courtesychevroletpontiacbuick.com/images/page_upload/icons/sitemap.htm here]] [[http://evesquest.com/store/images/thumbs/text1285.htm affect drug information licit psychoactive]] [[http://wwddinc.com/class/pictures/cats/pics/text-1203.html as seen on tv store]] [[http://qualityoflifemedia.com/bestof_images/icons/resource914.htm skater boats]] [[http://livingmotivation.com/blog/wp-content/images/news49.html angry beavers]] [[http://realtorsplus.net/images/listing_photos/thumbs/new2451.htm searchers movie]] [[http://wwddinc.com/class/pictures/cats/pics/text-1138.html taxonomy of human being]] [[http://mortgageexpertise.ca/sendstudionx/admin/temp/cache/text-1390.html t mobile text message]] [[http://alphyt.com/v1/fr/common/Image/pics/comment-2221.html viviane castro]] [[http://cmmccares.com/uploads/images/media/sitemap.html home]] [[http://burtonchamberofcommerce.org/demo/site/images/pics/new1042.htm barbi twins adult]] [[http://lewistowndragracing.com/photos/albums/userpics/10002/comment-1554.htm lightening protection systems]] [[http://quadfive.com/pages/php_scripts/files/1728.html emmitt smith video clip]] [[http://onlyfarms.com/vote/data/media/18/topic684.htm autoclaving dna]] [[http://sgp-gestour.com/en/common/Data/sitemap.html page]] [[http://lewistownmontanarealestate.com/pages/include/files/zacquaq-270.html rtttl ringtone files]] [[http://cloydfuneralhome.com/site/administrator/components/com_images/news-1016.html feeding tube]] [[http://courtesychevroletpontiacbuick.com/images/page_upload/icons/resource661.htm yahoo customer complaint]] [[http://destinationlewistownmontana.com/photos/albums/wpw/resource1065.htm anderson lee pamela tom video]] [[http://clubfetish.ca/kenjiro/wp-content/uploads/2007/sitemap.htm map]] [[http://enof-mines.com/downloads/docs/comment1157.htm window 2000 pro download]] [[http://destinationlewistownmontana.com/photos/albums/wpw/resource853.htm pirate puerto ship vallarta]] [[http://escrow-services.info/cache/files/page835.html lawnboy small engine parts]] [[http://qualityoflifemedia.com/bestof_images/icons/resource282.htm igt video slots]] [[http://turbosolutions.com/images/icons/topic2462.htm free stuff online]] [[http://escrow-services.info/cache/files/page1115.html meridia strategic legal resource]] [[http://groupe-abcuisine.com/images/icons/article-1112.htm www.continentalairlines.com]] [[http://assurances-2a.com/test/upload/media/news-239-20080801.html raster logs]] =====Page Administration Action=====
{{lastedit}}

This is the development page for the Page Administration action. The Page Administration module has been committed to the [[http://wush.net/websvn/wikka/listing.php?repname=wikka
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki