Advanced search  

News:

cpg1.5.48 Security release - upgrade mandatory!
The Coppermine development team is releasing a security update for Coppermine in order to counter a recently discovered vulnerability. It is important that all users who run version cpg1.5.46 or older update to this latest version as soon as possible.
[more]

Pages: [1]   Go Down

Author Topic: Wo wird die Message-Box generiert?  (Read 3908 times)

0 Members and 1 Guest are viewing this topic.

Icehawk

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Wo wird die Message-Box generiert?
« on: May 30, 2011, 11:29:32 pm »

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:
Code: [Select]
/******************************************************************************
** 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:
Code: [Select]
<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.
Logged
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é

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Wo wird die Message-Box generiert?
« Reply #1 on: May 31, 2011, 10:41:40 am »

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?
Logged

Icehawk

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Re: Wo wird die Message-Box generiert?
« Reply #2 on: May 31, 2011, 10:43:37 am »

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:
Code: [Select]
// 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.
Logged
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é

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Wo wird die Message-Box generiert?
« Reply #3 on: May 31, 2011, 10:49:51 am »

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.
Logged

Icehawk

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Re: Wo wird die Message-Box generiert?
« Reply #4 on: May 31, 2011, 11:06:10 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:
Code: [Select]
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  :-\
Logged
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é

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Wo wird die Message-Box generiert?
« Reply #5 on: May 31, 2011, 11:23:35 am »

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:
Code: [Select]
$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:
Code: [Select]
{$news_icon}{$lang_version_alert['coppermine_news']}{$help_news}
Code: [Select]
<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.
Logged

Icehawk

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Re: Wo wird die Message-Box generiert?
« Reply #6 on: May 31, 2011, 11:33:18 am »

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.
Logged
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é

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Wo wird die Message-Box generiert?
« Reply #7 on: May 31, 2011, 11:37:52 am »

Besser (und wesentlich einfacher für mich) wäre es, wenn du es in der Form folgender Form zur Verfügung stellen würdest.
Quote
Finde
Code: [Select]
<table ...> ...und ersetze es durch
Code: [Select]
<div ...> ...
Logged

Icehawk

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Re: Wo wird die Message-Box generiert?
« Reply #8 on: May 31, 2011, 11:39:17 am »

Alles klar! Ich werde es so versuchen.
Logged
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

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Re: Wo wird die Message-Box generiert?
« Reply #9 on: May 31, 2011, 06:51:17 pm »

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
Code: [Select]
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
Code: [Select]
//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
Code: [Select]
<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
Code: [Select]
<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
Code: [Select]
print <<< EOT
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
EOT;
        endtable();
        print '<br />';

Ersetze durch
Code: [Select]
print <<< EOT
  </div>
</div>
EOT;
//endtable();
print '';

Das ist alles! Sorry aber Quelltextformatierungen sind nicht so der Knaller in diesem Forum  ;D
Logged
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é

  • Administrator
  • Coppermine addict
  • ****
  • Country: de
  • Offline Offline
  • Gender: Male
  • Posts: 15764
Re: Wo wird die Message-Box generiert?
« Reply #10 on: May 31, 2011, 07:00:46 pm »

Das heisst starttable und endtable sollen auch weg, korrekt?
Logged

Icehawk

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Re: Wo wird die Message-Box generiert?
« Reply #11 on: May 31, 2011, 07:01:51 pm »

Jain.
Ich habe sie weggemacht. Könnte aber zur Not drin bleiben. Wie es halt einfacher ist ;)
Logged
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

  • Coppermine newbie
  • Offline Offline
  • Gender: Male
  • Posts: 15
    • Fotogalerie
Re: Wo wird die Message-Box generiert?
« Reply #12 on: June 01, 2011, 07:37:32 am »

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.
Logged
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.
Pages: [1]   Go Up
 

Page created in 0.026 seconds with 19 queries.