Hi Phil_K,
hier nochmal alle Files.
Folgenden Out erhalte ich:
Code:
privcont Object
(
[id] => 0
[content] => <form action="index.php" method="post" name="adminForm">
<input type="hidden" name="task" value="default">
<input type="hidden" name="option" value="com_privatepage">
<input type="hidden" name="pageid" value="1">
<input type="hidden" name="myid" value="63">
<input type="hidden" name="privpageid" value="">
<script language="javascript" type="text/javascript">
function submitbutton(pressbutton,id) {
if ( id ) { document.adminForm.privpageid.value = id; }
var form = document.adminForm;
if (pressbutton == "loadPage") {
submitform(pressbutton);
}
}
</script>
<table width="100%"><tr><td><font face="Arial" size="3"><p>{josprivcontent}</p></font></td></tr>
</table></form>
)
Array
Komponente: privatepage.php
PHP-Code:
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
// load the html drawing class
require_once($mainframe->getPath('front_html'));
require_once($mainframe->getPath('class'));
//print_r($mainframe);
$selpage = trim(mosGetParam($_REQUEST, 'selpage', 0));
$pageid = trim(mosGetParam($_REQUEST, 'pageid', 0));
switch($task) {
case 'loadPage':
echo showMyPages($option, $selpage);
break;
default:
echo showMyPages($option);
break;
}
class privCont {
var $id = 0;
var $content = NULL;
function privCont($arg)
{
$this->content = $arg;
}
}
function showMyPages($option, $selpage = "") {
global $database, $my, $_MAMBOTS;
$content = "";
$getprivs = 1;
if (count($getprivs) == 1) {
$privs = $getprivs;
$database->setQuery("SELECT * FROM #__privatepages where userid = $my->id
and published = 1 order by submitdate desc");
$rows = $database->loadObjectList();
$whichpage = $rows[0];
if (strlen($selpage)) {
foreach ($rows as $page) {
if ($page->id == $selpage) {
$whichpage = $page;
}
}
}
$pageid = $whichpage->id;
$content .= HTML_privatepages::startForm($option, $pageid, $whichpage->title);
$content .= HTML_privatepages::showPrivatePage($whichpage);
$content .= HTML_privatepages::endForm($option);
} else {
$content .= HTML_privatepages::showDenied();
}
$cont = new privCont($content);
print_r($cont);
$_MAMBOTS->loadBotGroup( 'content' );
$results = $_MAMBOTS->trigger( 'onPrepareContent', array( &$cont, &$params, $page ) );
return $results;
}
Komponente: privatepage.html.php
PHP-Code:
class HTML_privatepages {
function startTable() {
$ret = "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"99%\"><tr>\n";
return $ret;
}
function endTable() {
$ret = "</tr></table>\n";
return $ret;
}
function startForm($option, $pageid = -1, $title = "") {
global $my;
$ret = "<form action=\"index.php\" method=\"post\" name=\"adminForm\">\n";
$ret .= "<input type=\"hidden\" name=\"task\" value=\"default\">\n";
$ret .= "<input type=\"hidden\" name=\"option\" value=\"".$option."\">\n";
$ret .= "<input type=\"hidden\" name=\"pageid\" value=\"".$pageid."\">\n";
$ret .= "<input type=\"hidden\" name=\"myid\" value=\"".$my->id."\">\n";
$ret .= "<input type=\"hidden\" name=\"privpageid\" value=\"\">\n";
$ret .= "<script language=\"javascript\" type=\"text/javascript\">\n";
$ret .= "function submitbutton(pressbutton,id) {\n";
$ret .= " if ( id ) { document.adminForm.privpageid.value = id; }\n";
$ret .= " var form = document.adminForm;\n";
$ret .= " if (pressbutton == \"loadPage\") {\n";
$ret .= " submitform(pressbutton);\n";
$ret .= " }\n";
$ret .= "}\n";
$ret .= "</script>\n";
return $ret;
}
function endForm() {
$ret = "</form>";
return $ret;
}
function showPrivatePage(&$page) {
$ret = "<table width=\"100%\">";
if (!is_object($page)) {
$ret .= "<tr><td><b>You have no private page(s).</b></td></tr>\n";
} else {
$ret .= "<tr><td>".$page->content."</td></tr>\n";
}
$ret .= "</table>";
return $ret;
}
function showDenied($message = "") {
$ret = "";
if (strlen($message)) {
$ret .= "<b>" . $message . "</b>\n";
} else {
$ret .= "<b>No private page(s) available for viewing.</b>\n";
}
return $ret;
}
}
Mambot:
PHP-Code:
defined( '_VALID_MOS' ) or die( 'Restricted access' );
$_MAMBOTS->registerFunction( 'onPrepareContent', 'botPrivTemplate' );
/**
*/
function botPrivTemplate( $str=NULL ) {
global $database, $my;
// define the regular expression for the bot
$regex = '/{josprivcontent}/i';
// hier wird entschieden ob die Menüstruktur oder der reine Content angezeigt wird */
if ( $_REQUEST[privpageid] > -1 )
{
$content = preg_replace_callback($regex, 'botPrivContent', $str);
} else {
$content = preg_replace_callback($regex, 'botPrivMenu', $str);
}
return $content;
}
/*
* Menu der Private Page wird gebaut
*/
function botPrivMenu()
{
global $database, $my;
$query = "SELECT * FROM #__privatepages_content "
."WHERE userid = ".$my->id
.";";
$database->setQuery( $query );
$data = $database->loadObjectList();
$repl = "<table>\n";
for ( $i = 0; $i < count($data); $i++ )
{
/* pflügt die params auseinander */
$params = divideParams($data[$i]->params);
$target = "";
$href = "javascript:submitbutton('loadPage',".$data[$i]->id.")";
// -> wenn _blank Link
if ( isset($params[url]) )
{
$target = " target=\"".$params[target]."\"";
$href = $params[url];
}
$repl .= "<tr><td><a ".$target." href=\"".$href."\">".$data[$i]->title."</a></td></tr>\n";
}
$repl .= "</table>\n";
return $repl;
}
/*
* Inhalte der Menüeintrage werden generiert
*/
function botPrivContent()
{
global $database, $my, $mosConfig_absolute_path;
$query = "SELECT * FROM #__privatepages_content "
."WHERE userid = ".$my->id
." AND id = ".$_REQUEST[privpageid]
.";";
$database->setQuery( $query );
$data = $database->loadObjectList();
/* suche nach {} im content */
if ( ereg("[{]",$data[0]->content) )
{
/* {} entfernen */
//$regBot = ereg_replace("[\{|\}]","",$data[0]->content);
/* datei includieren */
//include ( $mosConfig_absolute_path."/components/com_privatepage/".$regBot.".php");
/* uebergebe den Return der Funktion der variable */
//$content = preg_replace_callback($data[0]->content, $regBot, ereg_replace("[\{|\}]","",$data[0]->content));
$content = $data[0]->content;
} else {
/* uebergebe dem Content den Inhalt */
$content = $data[0]->content;
}
$repl = "<table>\n";
$repl .= "<tr><td>".$content."</td></tr>\n";
$repl .= "<tr><td><a href=\"javascript:submitbutton('loadPage',-1)\">zurück</a></td></tr>\n";
$repl .= "</table>\n";
return $repl;
}
function divideParams($params)
{
// [params] => nlcode|10079;aindex|3548;target|_blank;url|https://www.persona.de/kummulator/startb.php;
$arr = split("[;]",$params);
for ( $i = 0; $i < count($arr); $i++ )
{
list($k,$v) = explode("|",$arr[$i]);
$repl[$k] = $v;
}
return $repl;
}
Irgendwas mache ich noch falsch, denn vorher lief alles in der Komponente.
Das DataMining funzte und die Substitution klappte prima.
Jetzt möchte ich per {xxxx} beliebig viele Bots über die Komp. setzen.
Das ist mein Ziel.
Bitte sei so nett und schau nochmal drüber. Mein latain ist zu Ende.
Danke im Voraus.
:-) Michael
Lesezeichen