function FormatDisplayedItem($ItemID, $FileName, $FileSize, $HandlerMethod, &$Params, $Config)
{
    $FolderPath = substr($Config->CurrentBrowsingDirectory, strlen($Config->CurrentWorkingDirectory) + 1, strlen($Config->CurrentBrowsingDirectory) - strlen($Config->CurrentWorkingDirectory) + 1);
    $FolderPath = $FolderPath != "" ? $FolderPath . "/" . $FileName : $FileName;
    $EncodedPath = EncodeLinkUrl(FilePath(CurrentWebPath(), $FolderPath));
    $Params->Add("gid", $ItemID);
    $Return = "<input type=\"hidden\" name=\"Item{$ItemID}\" value=\"" . $EncodedPath . "\" />\r\n      <div class=\"DisplayItem\">\r\n         <h2><a href=\"" . CurrentWebPath() . $FolderPath . "\">{$FileName}</a></h2>\r\n         <ul class=\"Options\">\r\n            <li class=\"Save\"><a href=\"" . CurrentUrl() . $Params->GetQueryString() . "\">Save</a></li>\r\n            <li class=\"Copy\"><a href=\"Javascript:copy(document.frmLinkContainer.Item{$ItemID});\">Copy url</a></li>\r\n";
    $Handled = false;
    $Params->Remove("gid");
    switch ($HandlerMethod) {
        case "Image":
            $Handled = true;
            $Return .= "<input type=\"hidden\" name=\"ImgTag{$ItemID}\" value='<img src=\"" . $EncodedPath . "\" />' />\r\n               <li class=\"CopyImg\"><a href=\"Javascript:copy(document.frmLinkContainer.ImgTag{$ItemID});\">Copy img tag</a></li>\r\n            </ul>\r\n            <div class=\"DisplayItemImage\">";
            if ($Config->FitImagesToPage) {
                $ImageSize = @getimagesize($FolderPath);
                if ($ImageSize) {
                    $Return .= "<script>writeImage('{$EncodedPath}', " . $ImageSize[0] . ", " . $ImageSize[1] . ", '" . $ItemID . "');</script>";
                } else {
                    $Return .= "<img src=\"{$EncodedPath}\" alt=\"\" />";
                }
            } else {
                $Return .= "<img src=\"{$EncodedPath}\" alt=\"\" />";
            }
            $Return .= "</div>\r\n";
            break;
        case "IFrame":
            $Handled = true;
            $Return .= "<li class=\"CopyImg\"><a href=\"Javascript:copy(document.frmLinkContainer.AnchorTag{$ItemID});\">Copy anchor tag</a></li>\r\n            <input type=\"hidden\" name=\"AnchorTag{$ItemID}\" value=\"<a href='" . $EncodedPath . "'>" . CurrentWebPath() . $FolderPath . "</a>\" />\r\n            <li class=\"View\"><a href=\"" . CurrentWebPath() . $FolderPath . "\" target=\"_blank\">View</a></li>\r\n            </ul>\r\n         <div class=\"DisplayItemIFrame\"><iframe src=\"{$FolderPath}\"></iframe></div>\r\n";
            break;
        case "TextArea":
            $Handled = true;
            // Retrieve the file contents
            $File = new File();
            $File->Name = $FolderPath;
            $File->Path = "./";
            $FileManager = new FileManager();
            $FileManager->ErrorManager =& $Config->ErrorManager;
            $File = $FileManager->Get($File);
            if (!$File) {
                $FauxContext = "0";
                $Config->ErrorManager->AddError($FauxContext, "Filebrowser", "FormatDisplayedItem", "An error occurred while retrieving the file contents.", "", 0);
                $FileContents = $Config->ErrorManager->GetSimple();
            } else {
                // Make sure that a "</textarea>" tag doesn't kill my textarea
                $FileContents = str_replace("<", "&#60;", $File->Body);
            }
            $Return .= "<li class=\"CopyImg\"><a href=\"Javascript:copy(document.frmLinkContainer.AnchorTag{$ItemID});\">Copy anchor tag</a></li>\r\n            <input type=\"hidden\" name=\"AnchorTag{$ItemID}\" value='<a href=\"" . $EncodedPath . "\">" . CurrentWebPath() . $FolderPath . "</a>' />\r\n            <li class=\"View\"><a href=\"" . CurrentWebPath() . $FolderPath . "\" target=\"_blank\">View</a></li>\r\n            </ul>\r\n         <div class=\"DisplayItemTextArea\"><textarea>{$FileContents}</textarea></div>\r\n";
            break;
        case "EmbedFlash":
            $Handled = true;
            $EmbedString = "<object type=\"application/x-shockwave-flash\" data=\"" . $EncodedPath . "\"";
            if ($Config->PluginHeight > 0 && $Config->PluginWidth > 0) {
                $EmbedString .= " height=\"" . $Config->PluginHeight . "\" width=\"" . $Config->PluginWidth . "\"";
            }
            $EmbedString .= "><param name=\"movie\" value=\"" . $EncodedPath . "\" />You do not appear to have the latest flash plugin installed</object>";
            $Return .= "<li class=\"CopyImg\"><a href=\"Javascript:copy(document.frmLinkContainer.EmbedTag{$ItemID});\">Copy embed tag</a></li>\r\n            <input type=\"hidden\" name=\"EmbedTag{$ItemID}\" value='" . $EmbedString . "' />\r\n            </ul>\r\n            <div class=\"DisplayItemFlash\">" . $EmbedString . "</div>\r\n";
            break;
        case "Embed":
            $Handled = true;
            $EmbedString = "<embed src='" . CurrentWebPath() . $FolderPath . "'></embed>";
            $Return .= "<li class=\"CopyImg\"><a href=\"Javascript:copy(document.frmLinkContainer.EmbedTag{$ItemID});\">Copy embed tag</a></li>\r\n            <input type=\"hidden\" name=\"EmbedTag{$ItemID}\" value=\"" . $EmbedString . "\" />\r\n            </ul>\r\n         <div class=\"DisplayItemEmbed\">" . $EmbedString . "</div>\r\n";
            break;
        case "EmbedQuicktime":
            $Handled = true;
            $EmbedString = "<embed src='" . $EncodedPath . "'";
            if ($Config->PluginHeight > 0 && $Config->PluginWidth > 0) {
                $EmbedString .= " height='" . $Config->PluginHeight . "' width='" . $Config->PluginWidth . "'";
            }
            $EmbedString .= "></embed>";
            $Return .= "<li class=\"CopyImg\"><a href=\"Javascript:copy(document.frmLinkContainer.EmbedTag{$ItemID});\">Copy embed tag</a></li>\r\n            <input type=\"hidden\" name=\"EmbedTag{$ItemID}\" value=\"" . $EmbedString . "\" />\r\n            </ul>\r\n         <div class=\"DisplayItemEmbed\">" . $EmbedString . "</div>\r\n";
            break;
        default:
            // HyperLink handler method
            $Return .= "</ul>\r\n         <div class=\"DisplayItemBlank\"></div>\r\n";
            $Handled = true;
            break;
    }
    if (!$Handled) {
        $Return = "";
    } else {
        $Return .= "</div>\r\n";
    }
    return $Return;
}
예제 #2
0
파일: index.php 프로젝트: jdegges/pipweb
 function RetrieveConfigurationPropertiesFromXml($Path)
 {
     $FauxContext = "0";
     if ($this->ConfigFile == "") {
         $this->ErrorManager->AddError($FauxContext, $this->Name, "RetrieveConfigurationPropertiesFromXml", "You must supply a path to the configuration file");
     }
     // Retrieve config file contents
     $File = new File();
     $File->Name = $this->ConfigFile;
     $File->Path = $Path;
     $FileManager = new FileManager();
     $FileManager->ErrorManager =& $this->ErrorManager;
     $File = $FileManager->Get($File);
     // If there were errors retrieving the config file and we're in the CWD, report an error
     if ($this->ErrorManager->ErrorCount > 0 && $Path == $this->CurrentWorkingDirectory) {
         $this->ErrorManager->Clear();
         $this->ErrorManager->AddError($FauxContext, $this->Name, "RetrieveConfigurationPropertiesFromXml", "The root configuration file could not be found/read (_config.xml).");
         // If failed to retrieve the file from a non-root directory,
         // just accept the root file
     } elseif ($this->ErrorManager->ErrorCount > 0) {
         $this->ErrorManager->Clear();
         // If no errors occurred, continue to retrieve new configuration settings
     } else {
         // Create an XML Parser to retrieve configuration settings
         $XMan = new XmlManager();
         $XMan->ErrorManager =& $this->ErrorManager;
         $MyConfig = $XMan->ParseNode($File->Body);
         if ($MyConfig && $this->ErrorManager->ErrorCount == 0) {
             $this->StyleUrl = $XMan->GetNodeValueByName($MyConfig, "StyleUrl");
             $this->PageTitle = $XMan->GetNodeValueByName($MyConfig, "PageTitle");
             $this->PageIntroduction = $XMan->GetNodeValueByName($MyConfig, "PageIntroduction");
             $this->PageIntroduction = str_replace("[", "<", $this->PageIntroduction);
             $this->PageIntroduction = str_replace("]", ">", $this->PageIntroduction);
             $this->PageIntroduction = str_replace("\n", "<br />", $this->PageIntroduction);
             $this->DisplayHiddenFiles = $XMan->GetNodeValueByName($MyConfig, "DisplayHiddenFiles");
             $this->BrowseSubFolders = $XMan->GetNodeValueByName($MyConfig, "BrowseSubFolders");
             $this->SortBy = $XMan->GetNodeValueByName($MyConfig, "SortBy");
             $this->SortDirection = $XMan->GetNodeValueByName($MyConfig, "SortDirection");
             $this->DateFormat = $XMan->GetNodeValueByName($MyConfig, "DateFormat");
             $this->UsePageIntroductionInSubFolders = ForceBool($XMan->GetNodeValueByName($MyConfig, "UsePageIntroductionInSubFolders"), false);
             $this->PluginHeight = ForceInt($XMan->GetNodeValueByName($MyConfig, "PluginHeight"), $this->PluginHeight);
             $this->PluginWidth = ForceInt($XMan->GetNodeValueByName($MyConfig, "PluginWidth"), $this->PluginWidth);
             $this->FilesPerPage = ForceIncomingInt("fpp", ForceInt($XMan->GetNodeValueByName($MyConfig, "FilesPerPage"), $this->FilesPerPage));
             $this->MaxFilesPerPage = ForceInt($XMan->GetNodeValueByName($MyConfig, "MaxFilesPerPage"), $this->MaxFilesPerPage);
             $this->FitImagesToPage = ForceBool($XMan->GetNodeValueByName($MyConfig, "FitImagesToPage"), $this->FitImagesToPage);
             $this->UseThumbnails = ForceBool($XMan->GetNodeValueByName($MyConfig, "UseThumbnails"), $this->UseThumbnails);
             $this->HideFiles = explode(",", $XMan->GetNodeValueByName($MyConfig, "HideFiles"));
             for ($i = 0; $i < count($this->HideFiles); $i++) {
                 $this->FullyQualifiedHideFiles[] = $this->CurrentBrowsingDirectory . "/" . $this->HideFiles[$i];
             }
         }
     }
     return $this->ErrorManager->Iif();
 }
예제 #3
0
        }
    }
}
// If the folder exists, and there is a _config.xml file in the folder, reconfigure the filebrowser
if ($Config->CurrentWorkingDirectory != $Config->CurrentBrowsingDirectory) {
    $Config->RetrieveConfigurationPropertiesFromXml($Config->CurrentBrowsingDirectory);
}
// -----------------------------------
// 2. RETRIEVE FILE EXTENSION SETTINGS
// -----------------------------------
$File = new File();
$File->Name = $Config->FileTypesFile;
$File->Path = $Config->CurrentWorkingDirectory;
$FileManager = new FileManager();
$FileManager->ErrorManager =& $Config->ErrorManager;
$File = $FileManager->Get($File);
// Create an XML Parser to retrieve configuration settings
$XmlManager = new XmlManager();
$XmlManager->ErrorManager =& $ErrorManager;
$FileTypes = $XmlManager->ParseNode($File->Body);
// Create an array of all defined file types
$FileCollections = array();
$FolderCollection = array();
$ExtensionLibrary = array();
for ($i = 0; $i < count($FileTypes->Child); $i++) {
    if ($FileTypes->Child[$i]->Name == "FileGroup") {
        $FileCollections[$i] = new FileCollection($FileTypes->Child[$i]->Attributes["Name"]);
        for ($j = 0; $j < count($FileTypes->Child[$i]->Child); $j++) {
            $Node = $FileTypes->Child[$i]->Child[$j];
            if ($Node->Name == "Extensions") {
                // Ignore all items with a handler method of none