imagemouth
Willkommen Gast.
Um die volle Funktionalität des Forums nutzen zu können,
müssen Sie sich einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

 
Erweiterte Suche

31.112 Beiträge in 6.477 Themen- von 6.477 Mitglieder - Neuestes Mitglied: Frideborg

29-05-2020 00:14:12
JOOM::GALLERY::FORUMArchivJoomGallery 1.5 MVCZusammenspiel mit anderen KomponentenBild Id an Chronocontact übertragen und Bild mit E-Mail versenden
Seiten: [1]
Drucken
Autor Thema: Bild Id an Chronocontact übertragen und Bild mit E-Mail versenden  (Gelesen 4074 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
gabi_ix
Newbie
*
Offline Offline

Beiträge: 24


WWW
« am: 03-12-2010 17:19:34 »

Hallo Zusammen,

da es keine E-Card-Funktion für die Joomgallery gibt und die "An einen Freund senden"-Funktion nur registrieren Nutzern zur Verfügung steht, möchte ich mit der Formularkomponente Chronocontact eine E-Mail generieren, die das Bild mit absoluten Bildpfad lädt und als HTML-Mail versendet. Wichtig ist, dass das Ganze auch für unregistrierte User funktioniert.
Den Ablauf stelle ich mir wie folgt vor:

1. Joomgallery Detailansicht - Unter dem Detailbild soll ein Link zum Formular erscheinen, der viva URL die Bild id überträgt
2. Anhand der id soll ein Chroncontact-Script aus der Datenbank-Tabelle jos_joomgallery den imgfilename und die catid und aus der Tabelle jos_joomgallery_catg  den catpath auslesen. Daraus wird der absolute Bildpfad zusammengesetzt und in ein img-Tag des E-Mail-Templates meines Chronoformulars geschrieben

Nun meine Fragen:
Mit welchem PHP-Code kann ich die aktuelle id des gewählten Fotos der Detailansicht ausgeben ?
Wie spreche ich die Datenbank an, um die Daten imgfilename und catid aus jos_joomgallery  sowie aus jos_joomgallery_catg den catpath auszulesen?

Durch die Angabe des absoluten Pfades ist es nicht notwendig, dass Bild im Anhang der E-Mail zu versenden. Wenn der Empfänger die E-Mail öffnet soll das Bild vom Server abgerufen werden.

Gruß Gabi
« Letzte Änderung: 03-12-2010 17:28:44 von gabi_ix » Gespeichert
Chraneco
Entwickler-Team
Hero Member
*****
Offline Offline

Beiträge: 4.066



« Antworten #1 am: 09-12-2010 16:28:38 »

Hi,

für den ersten Punkt würde ich dir ein vorschlagen ein kleines Plugin vom Typ 'joomgallery' zu schreiben, das das Event 'onJoomDisplayIcons' (in der Detailansicht bekommst du mit 'JRequestt::getInt('id') die ID des aktuell angezeigten Bildes).

Für den zweiten Punkt könntest du das Interface der Galerie verwenden. Mit der Methode 'getAmbit' erlangst du Zugriff auf die Ambit der Galerie, mit Hilfe von der du dir nur durch Angabe einer Bild-ID die Bildpfade zurückgeben lassen kannst (Funktion 'getImg'). Das heißt du musst gar nicht unbedingt selbst die Datenbank der Galerie ansprechen.

Gruß
Chraneco
Gespeichert

Der Sprecher
gabi_ix
Newbie
*
Offline Offline

Beiträge: 24


WWW
« Antworten #2 am: 09-12-2010 16:32:20 »

Hallo Zusammen,

habe die Lösung inzwischen gefunden.

1. id des Bildes in einen Link einlesen. Der Link-Code habe ich in der Joomgallerie-Detalansicht im Footer in die letzte Zeile dieser Datei gesetzt:
components/com_joomgallery/views/detail/templ/default_footer.php
Der Linkcode sieht so aus:
Code:
<!-- Ergaenzung Link zu eCard mit Chronocontact -->
<div id="jgimglink"><a href="<?php echo "index.php?option=com_chronocontact&Itemid=60&jgimgid=".$this->image->id; ?>">Bild als eCard senden</a></div>
<!-- Ende Link zu eCard mit Chronocontact -->
Die Zuordnung zu dme richtigen Formular erfolgt über die Itemid im Link - bei mir die 60.

2. Das zugehörige Chronoform-eCard-Formular nimmt die Bild id auf und lädt dazu den korrekten Bildname und die Bildpfad aus der Datenbank:
Code:

<?php
//Sollte das Chrono-Forumlar nach der Validation nochmal zurückgesetzt werden, muss die $content_id in einen hidden-Feld im Formular gespeichert und dann weider ausgelsen werden.
if(isset($_POST['content_id']))
{
$content_id = JRequest::getVar( 'content_id', 1, 'post', 'int');
}
else
{
$content_id = JRequest::getVar( 'jgimgid', 1, 'get', 'int');
}
$database =& JFactory::getDBO();
$query = "SELECT catid, imgfilename FROM #__joomgallery WHERE id=".$content_id;
$database->setQuery($query);
if ( !$database->query() ) {
echo "<script type='text/javascript'>
alert('".$database->getErrorMsg()."');
</script>";
} else {

$imgdata = $database->loadObjectList();
foreach ($imgdata as $imgdata)
{
  $jg_catid=$imgdata->catid;
  $jg_imgfilename=$imgdata->imgfilename;
}
}

$query2 = "SELECT catpath FROM #__joomgallery_catg WHERE cid=".$jg_catid;
$database->setQuery($query2);
if ( !$database->query() ) {
echo "<script type='text/javascript'>
alert('".$database->getErrorMsg()."');
</script>";
} else {
$jg_catpath=$database->loadResult();
}
$baseurl=JURI::base();
$imgpath=$baseurl."/images/joomgallery/originals/".$jg_catpath."/".$jg_imgfilename;

?>

Der absolute Pfad (mit Domain) $imgpath wird dann als dynamische Eingabe in das img-Tag des e-mail-Temlates übernommen und so das Bild per E-Mail mit übermittelt.
Leider ist die Lösung nicht 100%, da man bei dieser Methode immer das Risiko hat, dass der Empfänger keine HTML-Mails oder Bilder zulässt.


Gruß Gabi

Gespeichert
gabi_ix
Newbie
*
Offline Offline

Beiträge: 24


WWW
« Antworten #3 am: 09-12-2010 16:37:57 »

Hallo Chraneco,


für den ersten Punkt würde ich dir ein vorschlagen ein kleines Plugin vom Typ 'joomgallery' zu schreiben, das das Event 'onJoomDisplayIcons' (in der Detailansicht bekommst du mit 'JRequestt::getInt('id') die ID des aktuell angezeigten Bildes).

Für den zweiten Punkt könntest du das Interface der Galerie verwenden. Mit der Methode 'getAmbit' erlangst du Zugriff auf die Ambit der Galerie, mit Hilfe von der du dir nur durch Angabe einer Bild-ID die Bildpfade zurückgeben lassen kannst (Funktion 'getImg'). Das heißt du musst gar nicht unbedingt selbst die Datenbank der Galerie ansprechen.

Danke für Deinen Tipp. Das ist einfacher wie mein Weg, wo man erst die beiden Tabellen der Datenbank auslesen muss. Werde das mal testen

Gruß Gabi
Gespeichert
Chraneco
Entwickler-Team
Hero Member
*****
Offline Offline

Beiträge: 4.066



« Antworten #4 am: 09-12-2010 16:44:32 »

Hi,

alles klar, die API-Dokumentation kann dir vielleicht auch noch helfen.

Für die Funktion 'getImg' der Ambit ist noch wichtig, dass die Art des benötigten Pfades angegeben werden muss, also einen der Werte 'thumb_url', 'img_url', 'orig_url', 'thumb_path', 'img_path' und 'orig_path'. Hier ein kleines Beispiel dazu:

Code
require_once JPATH_ROOT.DS.'components'.DS.'com_joomgallery'.DS.'interface.php';
$interface = new JoomInterface();
$ambit     = $interface->getAmbit();
$orig_path = $ambit->getImg('orig_path', $image_id);

Gruß
Chraneco
Gespeichert

Der Sprecher
gabi_ix
Newbie
*
Offline Offline

Beiträge: 24


WWW
« Antworten #5 am: 09-12-2010 17:09:06 »

Hallo Chraneco,

dank Dir sm_smile. Das ist auf jeden Fall eine saubere Lösung das Ganze auf der Basis der Joomla-API umzusetzen.

Gruß Gabi
Gespeichert
Seiten: [1]
Drucken
Gehe zu:  

HOSTED BY SCHWARZKÜNSTLER ®

PROTECTED BY  ZB BLOCK  AND Project Honey Pot
Theme orange-lt created by panic

Bad Behavior has blocked 2013 access attempts in the last 7 days.