Listfiles Action

This is the development page for the Listfiles action.

This is another (complete) transformation of the files action from Mod015fFilesAction (check also the FilesManagementHandler).
It allows to get the links to the attached files but not to upload nor to delete any.


This relies of the ExistsPage function developed by JavaWoman and part of release You can find this version at WikkaBugsResolved under the heading "check of user-names against page-names"..

The code

 * List the files attached to a page.
 * @package     Actions
 * @subpackage  tbd
 * @name            Listfiles
 * @author      {@link} (
 * @version     0.1
 * @since           tbd
 * @input           string  $page  optional: name of a wiki page;
 *                  default: current page
 *                  the user must be allowed to read the page (principle = if you can see the page you can see the attachments)
 * @input           string  $file  optional: name of a file;
 *                  default: empty (means all attached files in the page have to be listed)
 * @input           string  $title  optional: title that must appear on the link to the file;
 *                  default: empty (means the file name will be displayed as it is)
 *                  this is only used in conjonction with $file
 * @output      list all the wished files and provide an anchor to get them;
 *                  CSS classes used for the output:
 *                  -emptylist if the upload path is empty
 *                  -fulllist if the upload path contains attachements
 *                  -singlelist if there is only one file to be listed
 *                  -inexistinglist if the upload path does not exist
 *                  -errorlist if the page or the file does not exist, if the users is not allowed to read the page
 * @todo            nothing I can think about right now;
 *              this action comes nicely with the attachment mini-action and the files handler

// ***** PARAMETERS Interface *****
$uPage = $vars['page'];
if ($uPage) $page = $uPage;
else $page = $this->GetPageTag();

$uFile = $vars['file'];
if ($uFile) $file = $uFile;

// it is not useful to provide a title if there is no file parameter
if ($file) {
    $uTitle = $vars['title'];
    if ($uTitle) $title = $uTitle;
// ***** End PARAMETERS Interface *****

// ***** MAIN SECTION *****
// check if the page exists (the function exists from wikka
if ($this->ExistsPage($page)) {
    // check if the user is allowed to read
    if ($this->HasAccess('read', $page)) {
        // upload path
        $upload_path = $this->config['upload_path'].'/'.$page;
        // check if the upload path does not exist
        if(is_dir($upload_path) ){
            $handle = opendir($upload_path);
            while( (gettype( $name = readdir($handle)) != "boolean")){
                $name_array[] = $name;
            foreach($name_array as $temp) $folder_content .= $temp;
            if($folder_content == "...") {
                print "<div class=\""."emptylist\"".">"; // the upload path is empty
                print "There are no files attached to this page.";
            } else {
                // uploaded files
                $dir = opendir($upload_path);
                // if a file parameter has been provided
                if ($file) {
                    $pathandfile = $upload_path."/".urlencode($file);
                    if (file_exists($pathandfile)) {
                        print "<div class=\""."singlelist\"".">"; // only one file to list
                        if ($title) $thetitle = $title;
                        else $thetitle = $file;
                        $download_link = "<a href=\"".$pathandfile."\">".$thetitle."</a>";
                        print $download_link;
                    else {
                        print "<div class=\""."errorlist\"".">";
                        print "The file (".$file.") does not exist on this page (".$page.").";
                // all files have to be listed
                else {
                    print "<div class=\""."fulllist\"".">"; // the upload path contains attachements
                    while ($file = readdir($dir)) {
                        if ($file != '.' && $file != '..') {
                            $download_link = "<a href=\"".$upload_path."/".urlencode($file)."\">".$file."</a>";
                            print $download_link;
                            print '<br>';
        else {
            print "<div class=\""."inexistinglist\"".">"; // the upload path does not exist
            print "There is no attachement folder linked to this page (".$page.").";
    // the users is not allowed to read the page
    else {
        print "<div class=\""."errorlist\"".">";
        print "You are not allowed to read this page (".$page.").";
// the page doesn't exist
else {
    print "<div class=\""."errorlist\"".">";
    print "The page (".$page.") does not exist.";
print "</div>";
// ***** End MAIN SECTION *****

Then add some nice CSS to the stylesheet file:
.fulllist {
    border: 2px solid #CCAAAA;
    background-color: #cccccc;
    padding: 0px;  
    margin: 0px;
.emptylist {
.singlelist {
.inexistinglist {

To Do

Nothing I can think about right now.

There are 6 comments on this page. [Show comments]
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki