Forum

Moderiert von: stefan, spinne
Forum Index
Support
     Module
     anypage iframe url
Hilfe anzeigen
Hilfe anzeigen

Autor Druckerfreundliche Darstellunganypage iframe url
xxxxxx

Registriert: 06.08.2008
Beiträge: 38
Wohnort: 88696 Taisersdorf


Sende eine Private Nachricht an xxxxxx Besuche die Homepage von xxxxxx
ICQ
Geschrieben: 15.08.2008 14:45

Hallo zusammen,

ich habe ein HTML-Verzeichnis mit Anypage in opn importiert. In der Datenbank ist alles korrekt angekommen.

Struktur:

HTML-Datei1 : iframe Konstruktion mit iframe Inhalt aus HTML-Datei2

HTML-Datei2 : beinhaltet Bild:

<img src="http://xxx/opn2/cache/anypage_data_url_1218052453//v_modell_imagesv_modell02.gif" width="600" height="358" border="0" usemap="#v_modell">

ruft man im Anypage-Adminmenü die HTML-Datei2 auf, so funktioniert alles wunderbar.

ruft man im Anypage-Adminmenü die HTML-Datei1 auf, so verschwindet ein Teil des Links: -? :

<img src="v_modell_imagesv_modell02.gif" width="600" height="358" border="0" usemap="#v_modell">

Zur Info: Der Import des HTML-Verzeichnisses ist mir erst nach der Änderung der Zeile124 in system/anypage/importdiradmin.php gelungen. Ich habe am Ende der Zeile eine weitere 0 eingefügt, damit die Spaltenanzahl der Tabelle mit der SQL-Anweisung zusammen passt. 

$sql = 'INSERT INTO ' . $opnTables['anypage_page'] . " VALUES ($anypid, $_name, $title, $footline, $shortdesc, $body, $_pagestatus, $_sqldate, $anypage_pos, $anypage_cat, 0, 0, 0, 0)"; 

2.4.13 [Aphrodite] (Revision 2076)

Kann mir da jemand helfen?

Vielen Dank schon mal im voraus und Gruß,

Gregor


Zitieren Druckerfreundliche Darstellung nach oben
xxxxxx

Registriert: 06.08.2008
Beiträge: 38
Wohnort: 88696 Taisersdorf


Sende eine Private Nachricht an xxxxxx Besuche die Homepage von xxxxxx
ICQ
Geschrieben: 15.08.2008 18:51

Hallo,



ich habe mir die PHP-Datei  opn/system/anypage/admin/importdiradmin.php mal genauer angeschaut und einige ungereimtheiten gefunden. Die entscheidenden Stellen habe ich markiert. Die Probleme sind in der function importdir():



function importdir () {


 global $opnConfig, $opnTables;


 // HTML-Verzeichnis 

 $verzeichnis = '';

 get_var ('verzeichnis', $verzeichnis, 'form', _OOBJ_DTYPE_CLEAN);

 

 // Kategorie = Verzeichnis

 $catname = $verzeichnis;


 // Absoluter Pfad

 $pfad = $opnConfig['datasave']['anypage_data_url']['path'] . $verzeichnis;


 // Rechte

 $opnConfig['permission']->HasRights ('system/anypage', array (_ANYPAGE_PERM_IMPORTDIR, _PERM_ADMIN) );


 // Save Kategorie Record

 $anypage_page_cat_id = $opnConfig['opnSQL']->get_new_number ('anypage_page_cat', 'id');

 $anypage_page_cat_name = $opnConfig['opnSQL']->qstr ($catname);

 $anypage_page_cat_text = $opnConfig['opnSQL']->qstr ($catname);

 $anypage_page_cat_img = $opnConfig['opnSQL']->qstr ('');

 $opnConfig['database']->Execute ('INSERT INTO ' . $opnTables['anypage_page_cat'] . " VALUES ($anypage_page_cat_id, $anypage_page_cat_name, $anypage_page_cat_text, $anypage_page_cat_img, 0)");

 

 // Date

 $date = Date ('m/d/Y/H/i');

 $date_array = explode ('/', $date);

 $myyear = $date_array[2];

 $mymonth = $date_array[0];

 $myday = $date_array[1];

 $myhour = $date_array[3];

 $mymin = $date_array[4];

 $opnConfig['opndate']->setTimestamp ($myyear . '-' . $mymonth . '-' . $myday . ' ' . $myhour . ':' . $mymin . ':00');

 $sqldate = '';

 $opnConfig['opndate']->opnDataTosql ($sqldate);

 

 // Page Status

 $pagestatus = 'V';


 // Felder, die nur über Administration eingegeben werden können

 $footline = '';

 $shortdesc = '';

    

 // Keine Bilddateien durchsuchen

 $noext = array('.jpg','.gif','.bmp','.ico');


 

 // Dateiliste

 $dateiliste = get_file_list ($pfad,$noext);

 

 if (count ($dateiliste) ) {

  usort ($dateiliste, 'strcollcase');

  $max = sizeof ($dateiliste);

  for ($ii = 0; $ii< $max; $ii++) {

   if ($dateiliste[$ii] != 'image') {

    

    // PageName

    $pagename = trim ($dateiliste[$ii]);

        

    // new html_destroy class

    $str = getdateiany ($dateiliste[$ii], $pfad);

    $info = & new html_destroy ($str);


    // PageTitle

    $title = $info->get_title ();

    if ($title ==''){

     $title = $pagename;

    }

    

    // Parse Body

    $body = $info->get_body ();

    $info->clean_content ($body);

    $body = str_replace ("href="", "href="" . $opnConfig['opn_url'] . '/system/anypage/index.php?page=', $body);

    $body = str_replace ("href="" . $opnConfig['opn_url'] . '/system/anypage/index.php?page=#', "href="" . $opnConfig['opn_url'] . '/system/anypage/index.php?page=' . $pagename . '#', $body);

    $body = str_replace ("src="", "src="" . $opnConfig['datasave']['anypage_data_url']['url'] . '/' . $catname . '/', $body);

     

    // Free PageId 

    $anypid = $opnConfig['opnSQL']->get_new_number ('anypage_page', 'id');

     

    // Record Data

    $_anypid = $opnConfig['opnSQL']->get_new_number ('anypage_page', 'id');

    $_pagename = $opnConfig['opnSQL']->qstr ($pagename);    

    $_title = $opnConfig['opnSQL']->qstr ($title);    

    $_footline = $opnConfig['opnSQL']->qstr ($footline);    

    $_shortdesc = $opnConfig['opnSQL']->qstr ($shortdesc, 'shortdesc');    

    $_body = $opnConfig['opnSQL']->qstr ($body, 'wpage');    

    $_pagestatus = $opnConfig['opnSQL']->qstr ($pagestatus);    

    $_sqldate = $opnConfig['opnSQL']->qstr ($sqldate);    

    $_anypage_pos = $anypid;

    $_anypage_cat = $opnConfig['opnSQL']->qstr ($catname);


    // Save New Record

    $sql = 'INSERT INTO ' . $opnTables['anypage_page'] . " VALUES ($_anypid, $_pagename, $_title, $_footline, $_shortdesc, $_body, $_pagestatus, $_sqldate, $_anypage_pos, $_anypage_cat, 0, 0, 0, 0)";

    $opnConfig['database']->Execute ($sql);

    $opnConfig['opnSQL']->UpdateBlobs ($opnTables['anypage_page'], 'id=' . $anypid);

   }

  }

 }

}

 

Gruß,

Gregor



Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Geschrieben: 16.08.2008 10:45

Hallo Gregor.

Konnte das bei mir nicht nachvollziehen. Muss ich dann nochmals versuchen nachzubauen.

Alternativ kannst du den HTML Code direkt in die Anypage Seite eingeben.

iframe Thread

Flash
[addsig]

Zitieren Druckerfreundliche Darstellung nach oben
Gast
Unregistrierter Benutzer
Geschrieben: 16.08.2008 14:03

Hallo Flash,


das Problem tritt nur auf, wenn man ein Verzeichnis mit mehrerern HTML-Dateien importieren will. Vieleicht hat das schon lange niemand mehr probiert. Ich bin nun immer noch dabei, mit meinen geringen PHP-Kenntnissen, folgende Probleme zu lösen:

1) Anypage Kategorie sollte vom Importverzeichnis Name kommen (da sonst die Pfade nicht stimmen)

2) Ich will, dass ich die Dateien nochmals importiern kann, um bei Änderungen nicht vorher erst alle Datensätze löschen zu müssen

3) Beim importieren wird der Inhalt kommplet auf Kleinbuchstaben konvertiert.

Sollte es mir gelingen, dann poste ich den Code hier als Anregung/Diskussion



Viele Grüße,

Gregor 



Zitieren Druckerfreundliche Darstellung nach oben
xxxxxx

Registriert: 06.08.2008
Beiträge: 38
Wohnort: 88696 Taisersdorf


Sende eine Private Nachricht an xxxxxx Besuche die Homepage von xxxxxx
ICQ
Geschrieben: 16.08.2008 20:05

Hallo zusammen,


hier der versprochene Code, zu ändern in der Datei:

...opn2systemanypageadminimportdiradmin.php


function importdir () {


 global $opnConfig, $opnTables;


 // HTML-Verzeichnis 

 $verzeichnis = '';

 get_var ('verzeichnis', $verzeichnis, 'form', _OOBJ_DTYPE_CLEAN);

 

 // Kategorie = Verzeichnis

 $catname = $verzeichnis;


 // Absoluter Pfad

 $pfad = $opnConfig['datasave']['anypage_data_url']['path'] . $verzeichnis;


 // Rechte

 $opnConfig['permission']->HasRights ('system/anypage', array (_ANYPAGE_PERM_IMPORTDIR, _PERM_ADMIN) );


 // Kategorie schon vorhanden?

 $anypage_page_cat_name = $opnConfig['opnSQL']->qstr ($catname);

 $sql = 'SELECT id, name FROM ' . $opnTables['anypage_page_cat'] . ' WHERE (name=' . $anypage_page_cat_name . ')';

 $result = $opnConfig['database']->Execute ($sql);

 if (is_object ($result) ) {

  $result_count = $result->RecordCount ();

 } else {

  $result_count = 0;

 }

 

 if ($result_count==0 )

 {

  // Save Kategorie Record

  $anypage_page_cat_id   = $opnConfig['opnSQL']->get_new_number ('anypage_page_cat', 'id');

  $anypage_page_cat_text = $opnConfig['opnSQL']->qstr ('');

  $anypage_page_cat_img  = $opnConfig['opnSQL']->qstr ('');

  $opnConfig['database']->Execute ('INSERT INTO ' . $opnTables['anypage_page_cat'] . " VALUES ($anypage_page_cat_id, $anypage_page_cat_name, $anypage_page_cat_text, $anypage_page_cat_img, 0)");

 }

 else

 {

  // AnyPageCatId

  $anypage_page_cat_id = $result->fields['id'];

 }

  

 // Date

 $date = Date ('m/d/Y/H/i');

 $date_array = explode ('/', $date);

 $myyear = $date_array[2];

 $mymonth = $date_array[0];

 $myday = $date_array[1];

 $myhour = $date_array[3];

 $mymin = $date_array[4];

 $opnConfig['opndate']->setTimestamp ($myyear . '-' . $mymonth . '-' . $myday . ' ' . $myhour . ':' . $mymin . ':00');

 $sqldate = '';

 $opnConfig['opndate']->opnDataTosql ($sqldate);

 

 // Filelist with out pictues

 $noext = array('.jpg','.gif','.bmp','.ico');

 $dateiliste = get_file_list ($pfad,$noext);

 

 // File allready exist ?

 if (count ($dateiliste) ) {

  usort ($dateiliste, 'strcollcase');

  $max = sizeof ($dateiliste);

  for ($ii = 0; $ii< $max; $ii++) {

   if ($dateiliste[$ii] != 'image') {

    

    // PageName

    $pagename = trim ($dateiliste[$ii]);

        

    // load html-file

    $html = getdateiany ($dateiliste[$ii], $pfad);

    

    // PageTitle

    $result = parse_html( $html, 'title');

    $title = $result['content'][0];

    if ($title ==''){

     $title = $pagename;

    }

    

    // Parse Body

    $result = parse_html( $html, 'body');

    $body = $result['extended content'][0];

    

    // lower all 'href' and 'src' Tags

    $pattern = array('/href/i' , '/src/i');

    $replace = array('href','src');

    $body = preg_replace($pattern, $replace, $body);

    

    // fix Links

    $body = str_replace ("href="", "href="" . $opnConfig['opn_url'] . '/system/anypage/index.php?page=', $body);

    $body = str_replace ("href="" . $opnConfig['opn_url'] . '/system/anypage/index.php?page=#', "href="" . $opnConfig['opn_url'] . '/system/anypage/index.php?page=' . $pagename . '#', $body);

    $body = str_replace ("src="", "src="" . $opnConfig['datasave']['anypage_data_url']['url'] . '/' . $catname . '/', $body);

     

    // Free PageId 

    $anypage_page_id = $opnConfig['opnSQL']->get_new_number ('anypage_page', 'id');

    

    // Record Data

    $anypage_page_pagename = $opnConfig['opnSQL']->qstr ($pagename,'pagename');    

    $anypage_page_title = $opnConfig['opnSQL']->qstr ($title,'title');    

    $anypage_page_footline = $opnConfig['opnSQL']->qstr ('');    

    $anypage_page_shortdesc = $opnConfig['opnSQL']->qstr ('');    

    $anypage_page_wpage = $opnConfig['opnSQL']->qstr ($body,'wpage');    

    $anypage_page_status = $opnConfig['opnSQL']->qstr ('V','status');    

    $anypage_page_lastmod = $opnConfig['opnSQL']->qstr ($sqldate,'lastmod');    

    $anypage_page_anypage_pos = $anypage_page_id;

    $anypage_page_anypage_cat = $anypage_page_cat_id;

          

    // page allready exist ?

    $sql = 'SELECT id, title FROM ' . $opnTables['anypage_page'] . ' WHERE (title=' . $anypage_page_title . ')';

    $result = $opnConfig['database']->Execute ($sql);

    if (is_object ($result) ) {

     $result_count = $result->RecordCount ();

    } else {

     $result_count = 0;

    }

    

    if ($result_count==0 )

    {

     // Save New Record

     $sql = 'INSERT INTO ' . $opnTables['anypage_page'] . " VALUES ($anypage_page_id, $anypage_page_pagename, $anypage_page_title, $anypage_page_footline, $anypage_page_shortdesc, $anypage_page_wpage, $anypage_page_status, $anypage_page_lastmod, $anypage_page_anypage_pos, $anypage_page_anypage_cat, 0, 0, 0, 0)";

     $opnConfig['database']->Execute ($sql);

     $opnConfig['opnSQL']->UpdateBlobs ($opnTables['anypage_page'], 'id=' . $anypage_page_id);

    }

    else

    {

     // AnyPageId

     $anypage_page_id = $result->fields['id'];

      

     // Update  Record

     $sql = 'UPDATE ' . $opnTables['anypage_page'] . ' SET wpage=' . $anypage_page_wpage . ', lastmod=' . $anypage_page_lastmod . ' WHERE id=' . $anypage_page_id;

     $opnConfig['database']->Execute ($sql);

     $opnConfig['opnSQL']->UpdateBlobs ($opnTables['anypage_page'], 'id=' . $anypage_page_id);

    }

   }

  }

 }

}


function parse_html( $string_org, $token ) {


 $string = $string_org;

 $string = str_replace ("rn",'<r-e-p-l-a-c-e>',$string);

 $string = str_replace ("n",'<r-e-p-l-a-c-e>',$string);


 // siehe http://www.regex-tester.de

 $pattern = '|<' . $token . '(.*)>(.*)</' . $token . '>|Uui';

 $mat = preg_match_all ($pattern, $string , $matches, PREG_PATTERN_ORDER);

  

 $arr = array();

 

 // found token

 if ($mat > 0)

 { 

  // found more token

  for ($i=0;$i < count($matches[0]);$i++)

  {      

   // Ergebniss

   $ret = trim ( $matches[2][$i] ); 

   $arr['content'][$i] = trim ( str_replace ('<r-e-p-l-a-c-e>', "rn", $ret));

   

   // Vorbelegen der anderen Array-Elemente

   $arr['extended content'][$i] =  $arr['content'][$i];

   $arr['modifier'][$i] = '';

   

   // Ergebniss mit text im ersten Token <Token xxx=yyy jjj=666> ...

   if (strlen(trim ( $matches[1][$i] )) > 0)

   {

    // Modifier im Token

    $arr['modifier'][$i] = trim($matches[1][$i]);

     

    // Einfügen eines  <div> mit Modifier

    $ret = '<div ' . $matches[1][$i] . '><r-e-p-l-a-c-e>';

    $ret .= trim ( $matches[2][$i] ) . '<r-e-p-l-a-c-e>';

    $ret .= '</div>';

    $arr['extended content'][$i] = trim ( str_replace ('<r-e-p-l-a-c-e>', "rn", $ret));

   }

  }

 }

 else

 {

  $tmp = str_replace ('>', ']', $string_org);

  $tmp = str_replace ('<', '[', $tmp);  

  $tmp = 'NO MATCHING FOUND FOR : ' . $token . '<br>IN : ' . $tmp;

  print($tmp);

  

  $arr['content'][0] = '';

  $arr['modifier'][0] = '';

  $arr['extended content'][0] = '';  

 }





 return $arr;

}









Zitieren Druckerfreundliche Darstellung nach oben
stefan
Wohnort: Münster


Sende eine Private Nachricht an stefan
ICQ
Geschrieben: 17.08.2008 14:36

Das sollte ja dann BT 1129 sein. Deine Lösung sieht doch gut aus. Hab sie in experimental/trunk übernommen.

Eine Anmerkung zum code. (hab ich geändert)

function parse_html

...

$mat = preg_match_all ($pattern, $string , $matches, PREG_PATTERN_ORDER);

das $matches wird ja gesetzt und muss daher vorher definiert sein.

also vorher um

$matches = '';

erweitert.

Anmerkung zur Funktion selbst.

Richtig die ist lange nicht getestet worden, ich hatte das mal gebaut um eine bestehende Struktur in anypage zu bekommen. Da ich dann aber Änderungen nur noch in anypage mache braucht ich das überschreiben nicht. Ist aber ne nette Idee.

Anmerkung zum BT.

Kannst dort auch Dateien als zip an hängen wenn du schon ne Lösung hast über nehme ich die natürlich gerne.

Anmerkung

Es freut mich das sich hier mal jemand die Mühe macht selbst eine Lösung zu finden und diese dann vorstellt. Das ist leider sehr selten.


Zitieren Druckerfreundliche Darstellung nach oben
xxxxxx

Registriert: 06.08.2008
Beiträge: 38
Wohnort: 88696 Taisersdorf


Sende eine Private Nachricht an xxxxxx Besuche die Homepage von xxxxxx
ICQ
Geschrieben: 17.08.2008 15:30

Hallo Stefan,

schön, dass Dir meine Lösung gefällt. Ich bin neu hier und muss mich erst zurecht finden. Upload im BT werde ich das nächste mal benutzen.

Hier noch ein grosses Lob an alle, die bei openPhpNuke mit machen. Mit so wenig Leuten eine so stabiles CMS zu bauen ist schon eine gewaltige Leistung.

Habe mir 2 Wochen lang Joomla angeschaut und bin dann zu openPhpNuke gewechselt. Es gibt zwar viele Module bei Joomla, konnte aber fast keines ohne einen Bug zu Finden und dementsprechend Zeit zu investieren ohne Änderungen verwenden. Das Zusammenspiel der Joomla- und der Modulversionen ist sehr schlecht. Auch die fehlende Benutzergruppen-Verwaltung war ein Grund für den Wechsel.

Viele Grüße,
Gregor



-- Alles wird Gut --

Zitieren Druckerfreundliche Darstellung nach oben
sortieren nach

Hilfe anzeigen
Hilfe anzeigen
Vorheriges Thema:  Zusatzinfos unter dem Avatar im Forum
Nächstes Thema:  PIRC

Gehe zu:

Benutzername:
 
Sicherheits-Code
Sicherheits-Code
Neu laden