Wo wird die Message-Box generiert? Wo wird die Message-Box generiert?
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

Wo wird die Message-Box generiert?

Started by Icehawk, May 30, 2011, 11:29:32 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Icehawk

Hallo zusammen.

Ich erstelle ein neues Theme, welches zu 90% auf die Tabellen-Konstrukte zur Generierung der Galerie verzichtet.
Funktioniert soweit auch ganz gut. Das Frontend habe ich fast fertig.
Nun habe ich aber Probleme mit der Message-Box. Dort, wo die News für den Admin angezeigt werden.

Wo wird diese denn erstellt?

Die Box geht von diesem Code aus:

/******************************************************************************
** Section <<<starttable>>> - START
******************************************************************************/
// Function to start a 'standard' table
function starttable($width = '-1', $title = '', $title_colspan = '1', $zebra_class = '', $return = false)
{
    global $CONFIG;

    if ($width == '-1') $width = $CONFIG['picture_table_width'];
    if ($width == '100%') $width = $CONFIG['main_table_width'];
    $text = <<<EOT

<!-- Start standard table -->
<table align="center" width="$width" cellspacing="1" cellpadding="0" class="maintable $zebra_class">

EOT;
    if ($title) {
        $text .= <<<EOT
        <tr>
                <td class="tableh1" colspan="$title_colspan">$title</td>
        </tr>

EOT;
    }
    if (!$return) {
        echo $text;
    } else {
        return $text;
    }
}
/******************************************************************************
** Section <<<starttable>>> - END
******************************************************************************/



/******************************************************************************
** Section <<<endtable>>> - START
******************************************************************************/
function endtable($return = false)
{
    $text = <<<EOT
</table>
<!-- End standard table -->

EOT;
    if (!$return) {
        echo $text;
    } else {
        return $text;
    }
}
/******************************************************************************
** Section <<<endtable>>> - END
******************************************************************************/


Und beginnt folgerichtig mit einem <tr> und endet mit einem </tr>

Da ich aber das o.g. Tabellen-Konstrukt entfernt habe und es duch <div>-Container ersetzt habe funktioniert das ganze nicht mehr.

Es wird folgender Code generiert:

<div style="width: 100%;" class="maintable ">
<tr>
...
</tr>
</div>


Ich finde aber in der spample-Datei für Themes diese Box nicht.

Wo kann ich diese Box finden, damit ich das ganze entsprechend ändern kann?

Galerie mit zu entwickelndem Theme ist nur lokal zu erreichen.
Ist zwar gefordert, hilft aber hier nicht weiter ;-), der Link zur bestehenden Galerie: http://galerie.icehawk.de

Ich hoffe ihr könnt mir helfen.
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Αndré

Das was ich unter der Message-Box verstehe, wird in $template_msg_box festgelegt. Dort ist aber weder <tr> oder </tr> enthalten und in einer Tabelle wird das Ganze auch nicht dargestellt. Was genau meinst du?

Icehawk

Die Generierung der Box habe ich mittlerweile gefunden. Sie ist hardcoded in der includes/functions.inc.php.
Gibts da eine Möglichkeit dieses mit der themes.php im themes-Ordner zu ändern?

Für mich könnte ich die Änderung durchführen, aber da ich das Theme, wenn ich fertig bin, hier veröffentlichen möchte, wird das wohl nicht möglich sein.

Hier der Code:

// display news from coppermine-gallery.net
   if ($CONFIG['display_coppermine_news'] == 1 && GALLERY_ADMIN_MODE) {
       $help_news      = '&nbsp;' . cpg_display_help('f=configuration.htm&amp;as=admin_general_coppermine_news&amp;ae=admin_general_coppermine_news_end&amp;top=1', '600', '300');
       $news_icon      = cpg_fetch_icon('news_show', 2);
       $news_icon_hide = cpg_fetch_icon('news_hide', 1);
       ob_start();
       starttable('100%');
       print <<< EOT
           <tr>
             <td>
               <table border="0" cellspacing="0" cellpadding="0" width="100%">
                 <tr>
                   <td class="tableh1">
                     {$news_icon}{$lang_version_alert['coppermine_news']}{$help_news}
                   </td>
                   <td class="tableh1" align="right">
                     <a href="mode.php?what=news&amp;referer={$REFERER}" class="admin_menu">{$news_icon_hide}{$lang_version_alert['hide']}</a>
                   </td>
                 </tr>
                 <tr>
                   <td class="tableb" colspan="2">
EOT;
       // Try to retrieve the news directly
       //$result = cpgGetRemoteFileByURL('http://coppermine-gallery.net/cpg15x_news.htm', 'GET', '', '200'); // disabled, see http://forum.coppermine-gallery.net/index.php/topic,65424.msg325573.html#msg325573

       if (strlen($result['body']) < 200) { // retrieving the file failed - let's display it in an iframe then
           print <<< EOT
                     <iframe src="http://coppermine-gallery.net/cpg15x_news.htm" align="left" frameborder="0" scrolling="auto" marginheight="0" marginwidth="0" width="100%" height="100" name="coppermine_news" id="coppermine_news" class="textinput">
                       {$lang_version_alert['no_iframe']}
                     </iframe>
EOT;
       } else { // we have been able to retrieve the remote URL, let's chop the unneeded data and then display it
           unset($result['headers']);
           unset($result['error']);
           // drop everything before the starting body-tag
           //$result['body'] = substr($result['body'], strpos($result['body'], '<body>'));
           $result['body'] = strstr($result['body'], '<body>');
           // drop the starting body tag itself
           $result['body'] = str_replace('<body>', '', $result['body']);
           // drop the ending body tag and everything after it
           $result['body'] = str_replace(strstr($result['body'], '</body>'), '', $result['body']);
           // The result should now contain everything between the body tags - let's print it
           print $result['body'];
       }
       print <<< EOT
                   </td>
                 </tr>
               </table>
             </td>
           </tr>
EOT;


Bin dankbar für jede Hilfe.
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Αndré

Das geht leider nicht mit der theme.php-Datei. Als Ausweg könntest du in deinem Theme mittels
$CONFIG['display_coppermine_news'] = 0;
die Ausgabe der News generell unterdrücken. Danach könnte man überlegen, ob man an einer geeigneten Stelle die (leicht modifizierte) Box in deinem Theme wieder hinzufügt.

Icehawk

Quote from: Αndré on May 31, 2011, 10:49:51 AM
Danach könnte man überlegen, ob man an einer geeigneten Stelle die (leicht modifizierte) Box in deinem Theme wieder hinzufügt.

Da ist genau das Problem  :)

Den html-Kram in der theme kann ich einwandfrei umbasteln.  ;D
Aber mit Programmieren (ich kann den Kram zwar halbwegs lesen und etwas verstehen, aber nicht schreiben) habe ich es nicht so, von daher wird es wohl für mich, ohne Hilfe, nicht möglich sein, die modifizierte Box wieder einzufügen.

Im Grunde bräuchte ich nur das:

if ($CONFIG['display_coppermine_news'] == 1 && GALLERY_ADMIN_MODE) {
        $help_news      = '&nbsp;' . cpg_display_help('f=configuration.htm&amp;as=admin_general_coppermine_news&amp;ae=admin_general_coppermine_news_end&amp;top=1', '600', '300');
        $news_icon      = cpg_fetch_icon('news_show', 2);
        $news_icon_hide = cpg_fetch_icon('news_hide', 1);
        ob_start();
        starttable('100%');
        print <<< EOT
        <div class="cpg_news_content">
// Try to retrieve the news directly
        //$result = cpgGetRemoteFileByURL('http://coppermine-gallery.net/cpg15x_news.htm', 'GET', '', '200'); // disabled, see http://forum.coppermine-gallery.net/index.php/topic,65424.msg325573.html#msg325573

        if (strlen($result['body']) < 200) { // retrieving the file failed - let's display it in an iframe then
            print <<< EOT
                      <iframe src="http://coppermine-gallery.net/cpg15x_news.htm" align="left" frameborder="0" scrolling="auto" marginheight="0" marginwidth="0" width="100%" height="100" name="coppermine_news" id="coppermine_news" class="textinput">
                        {$lang_version_alert['no_iframe']}
                      </iframe>
EOT;
        } else { // we have been able to retrieve the remote URL, let's chop the unneeded data and then display it
            unset($result['headers']);
            unset($result['error']);
            // drop everything before the starting body-tag
            //$result['body'] = substr($result['body'], strpos($result['body'], '<body>'));
            $result['body'] = strstr($result['body'], '<body>');
            // drop the starting body tag itself
            $result['body'] = str_replace('<body>', '', $result['body']);
            // drop the ending body tag and everything after it
            $result['body'] = str_replace(strstr($result['body'], '</body>'), '', $result['body']);
            // The result should now contain everything between the body tags - let's print it
            print $result['body'];
        }
        print <<< EOT
        </div>
EOT;


Trotzdem danke! Dann wird die News-Box wohl bei meinem Template rausgliegen müssen  :-\
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Αndré

Ich habe mir den Quellcode gerade nochmal etwas genauer angesehen. Die Box wird in der Funktion cpg_alert_dev_version generiert, welche in der Theme-Funktion theme_display_message_block aufgerufen wird:
$return .= cpg_alert_dev_version();
Genau hier könnte man den Tabellenaufbau durch deine div-Elemente ersetzen. Dein vorgeschlagener Code unterscheidet sich jedoch in ein paar mehr Bereichen. Z.B. fehlt bei dir folgendes:
{$news_icon}{$lang_version_alert['coppermine_news']}{$help_news}
<a href="mode.php?what=news&amp;referer={$REFERER}" class="admin_menu">{$news_icon_hide}{$lang_version_alert['hide']}</a>


Falls du das nicht allein hinbekommst, sag mir genau, was durch was ersetzt werden muss, dann kann ich dir helfen.

Icehawk

Du hast Recht, dass da was fehlte, das war ja auch nur ein Hinweis, in welche Richtung ich möchte.

Ich werde den Code heute abend in der functions.inc.php nach meinen Wünschen umbauen, so dass die Box richtig generiert wird.

Wenn fertig, würde ich diesen hier posten und anschließend auf deine Hilfe hoffen.

Danke für das Angebot.
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Αndré

Besser (und wesentlich einfacher für mich) wäre es, wenn du es in der Form folgender Form zur Verfügung stellen würdest.
QuoteFinde
<table ...> ...
und ersetze es durch
<div ...> ...

Icehawk

Alles klar! Ich werde es so versuchen.
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Icehawk

Dann will ich mal loslegen:

Alle Änderungen betreffen die functions.inc.php. Das müsste irgendwie in der themes.php abgebildet werden können.

Suche

starttable('100%');
        print <<< EOT
            <tr>
              <td>
                <table border="0" cellspacing="0" cellpadding="0" width="100%">
                  <tr>
                    <td class="tableh1">
                      {$news_icon}{$lang_version_alert['coppermine_news']}{$help_news}
                    </td>
                    <td class="tableh1" align="right">
                      <a href="mode.php?what=news&amp;referer={$REFERER}" class="admin_menu">{$news_icon_hide}{$lang_version_alert['hide']}</a>
                    </td>
                  </tr>
                  <tr>
                    <td class="tableb" colspan="2">
EOT;


Ersetze durch

//starttable('100%');
        print <<< EOT
        <div class="news_box">
         <div class="news_header">
          <div class="hide_button"><a href="mode.php?what=news&amp;referer={$REFERER}">{$news_icon_hide}{$lang_version_alert['hide']}</a></div>
           {$news_icon}{$lang_version_alert['coppermine_news']}{$help_news}
          </div>
          <div class="news_content">
EOT;


Suche

<iframe src="http://coppermine-gallery.net/cpg15x_news.htm" align="left" frameborder="0" scrolling="auto" marginheight="0" marginwidth="0" width="100%" height="100" name="coppermine_news" id="coppermine_news" class="textinput">
                        {$lang_version_alert['no_iframe']}
                      </iframe>


Ersetze duch

<iframe src="http://coppermine-gallery.net/cpg15x_news.htm" frameborder="0" scrolling="auto" marginheight="0" marginwidth="0" width="100%" height="100" name="coppermine_news" id="coppermine_news" class="textinput">
                        {$lang_version_alert['no_iframe']}
                      </iframe>


Suche

print <<< EOT
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
EOT;
        endtable();
        print '<br />';


Ersetze durch

print <<< EOT
  </div>
</div>
EOT;
//endtable();
print '';


Das ist alles! Sorry aber Quelltextformatierungen sind nicht so der Knaller in diesem Forum  ;D
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Αndré

Das heisst starttable und endtable sollen auch weg, korrekt?

Icehawk

Jain.
Ich habe sie weggemacht. Könnte aber zur Not drin bleiben. Wie es halt einfacher ist ;)
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Icehawk

Noch eine Info. Du musst dich nicht abhetzen. Ich bin ab nächsten Montag für 3 Wochen außer Landes. ;D
Trotzdem danke für die Hilfe.
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.