+ Antworten
Ergebnis 1 bis 6 von 6

Thema: Items sollen publish/unpublish per Klick (Mootool)

  1. #1
    Neu an Board
    Registriert seit
    16.03.2009
    Ort
    Nordkirchen
    Beiträge
    32
    Bedankte sich
    14
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Items sollen publish/unpublish per Klick (Mootool)

    Hallo Leute,
    versuche gerade in einer Komponente für das Frontend den Status publish/unpublish per Klick über Mootool zu lösen.
    Klick auf eines der PNG, sollen in der DB den STatus umsetzen und das PNG austauschen.
    ajaxtable.jpg

    Ich komme gerade an meine Grenzen.
    Hat einer eine Lösung des Problems oder kennt einer eine Komponente wo ich was abgucken kann?


    PHP-Code:
    $myofferpublish JHTML::_("image","components/com_com/assets/images/1.png"NULL , Array("onmouseover"=>"this.style.cursor='pointer'","id"=>"myofferpublish""name"=>$this->rows[$t]->id"width"=>16"height"=>16));

    $myofferunpublish JHTML::_("image","components/com_com/assets/images/0.png"NULL , Array("onmouseover"=>"this.style.cursor='pointer'","id"=>"myofferunpublish""name"=>$this->rows[$t]->id"width"=>16"height"=>16));
                
                
    if (
    $this->rows[$t]->published) {
    echo 
    "<div style=\"width: 30px;\"><div id=\"consoleMyOffer\" style=\"float: left;\"></div>".$myofferpublish."</div>";
    } else {
    echo 
    "<div style=\"width: 30px;\"><div id=\"consoleMyOffer\" style=\"float: left;\"></div>".$myofferunpublish."</div>";

    ajax.js
    HTML-Code:
    $("myofferpublish").addEvent("click", function() {		
    		$("consoleMyOffer").empty().addClass("ajax-loading").setHTML("<img src='"+assetsBase+"/images/ajaxloader.gif' border='0'> " );		
    		var name = $("myofferpublish").name;				
    		var url="index.php?option=com_com&view=angebote&fct=getchangetravleofferpublish&format=raw&myofferid="+name;
    	        var a=new Ajax(url,{
    	            method:"get",
    	            onComplete: function(response) {
    	                var respx=Json.evaluate(response);
    	                $("consoleMyOffer").removeClass("ajax-loading").setHTML('');	                                    
    	                $("myofferpublish").setHTML(resp.html);
    	               
    	            }
    	        }).request();
    		});

    Das eigendliche Probelm ist, dass ich nicht weiss, wie ich das Klick-Ereignis behandeln soll.
    Ich habe ja u.U. mehr als 10 Rows.

    Bspl.:
    $("myofferpublish[1]").addEvent("click", function() {
    oder über eine Schleife ... ?

    Vielleicht antwortet ja einer.
    Für jeden Tipp bin ich dankbar ... echt!

    LG Micha

  2. #2
    Gehört zum Inventar Avatar von SirDrake
    Registriert seit
    29.08.2006
    Ort
    Köln
    Beiträge
    6.268
    Bedankte sich
    164
    Erhielt 2.346 Danksagungen
    in 2.119 Beiträgen

    Standard

    Hallo

    das hast du schon gefunden?
    http://extensions.joomla.org/extensi...ubmission/8656

    Vielleicht kannst du dir ja da auch was abschauen, wenns unbedingt was eigenes sein soll

    Edit dann gibts auch noch was Martikular
    http://extensions.joomla.org/extensi...ubmission/6491
    Gruß Fred
    Fragen und Antworten rund um Joomla! FAQ
    Code-Bereinigung abschalten - Unterstütze Joomla

  3. #3
    Neu an Board
    Registriert seit
    16.03.2009
    Ort
    Nordkirchen
    Beiträge
    32
    Bedankte sich
    14
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hi SirDrake,
    danke für den Tipp.

    Martikular ist down.

    Ist aber nicht ganz genau was ich suche.
    Beim löschen soll ein AJAX-Request ngestoßen werden.
    Bei der "Frontend User Article List" wird ein normaler HTTP ausgelöst.

    Bis dann,
    Micha

  4. #4
    Hat hier eine Zweitwohnung
    Registriert seit
    14.01.2006
    Ort
    Nienburg
    Alter
    32
    Beiträge
    1.237
    Bedankte sich
    115
    Erhielt 471 Danksagungen
    in 368 Beiträgen

    Standard

    Nabend Micha,
    ich wuerde Formatierungen der Elemente weglassen und alles noetige ueber CSS-Styles machen. Was auch, oder gerade fuer das Ajax-Loading Bild gillt. Auch das Pointer-Icon laesst sich besser dort auf die Bilder anwenden. Verwende wo es geht direkt HTML anstatt die Elemente in PHP Variablen zu speichern und diese dann auszugehen. Deine beiden DIV-Container sind identisch - warum also nicht:

    HTML-Code:
    ...
    <div class="consoleMyOffer">
        <?php echo ($this->rows[$t]->published) ? $myofferpublish : $myofferunpublish; ?>
    </div>
    ...
    In fact: immer $this->rows[$t] schreiben nervt doch sicher irgendwann ...
    PHP-Code:
    $row $this->rows[$t]; 
    Weiterhin, auch beim Bau des Image-Tags aendert sich lediglich die ID (Name) und der Name des Bildes. Es reicht 1x JHtml::image zu bemuehen und lediglich die Daten zu setzen die noetig sind.

    Zum Request:
    HTML-Code:
    /* <![CDATA[ */
    	window.addEvent("domready", function() {
    		$$("img.KLASSE").each(function(el) {
    			el.addEvent("click", function() {
    				el.empty().addClass('ajax-loading');
    				var url="index.php?option=com_com&view=angebote&fct=getchangetravleofferpublish&format=raw&myofferid=" + el.name;
    				var a = new Ajax( url, {
    					method: 'get',
    					onComplete: function(response) {
    						var jsonresp = Json.evaluate(response);
    						el.removeCl....
    
    						...
    					}
    				}).request();
    			});
    		});
    	});
    /* ]]> */
    Funktioniert das ? Probiere doch mal bitte, ich hab es nicht getestet. Den Bildern muesste nur eine gemeinsame Klasse gegeben werden.

    Meine alte Komponente waere uebrigens weiterhin im Initial-Thread zu finden.

    Nachtrag: die Uebergabe bzw. Rueckmeldung des Status oder der Aktion die ausgefuehrt werden soll, waere wohl noch wichtig. Ich nehme an du willst den Status wechseln koennen. Helf mir auf die Spruenge, hast du das bislang beruecksichtig ?
    Geändert von Matrikular (03.02.2011 um 19:49 Uhr)

  5. Erhielt Danksagungen von:


  6. #5
    Neu an Board
    Registriert seit
    16.03.2009
    Ort
    Nordkirchen
    Beiträge
    32
    Bedankte sich
    14
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Wow, super danke.
    Jetzt bin ich viele Schritte weiter.
    Funktioniert alles ... bis auf ... den Austausch des Images.

    Hier meine Versuche ... nix funtionierte (siehe Ausklammemrungen) :-(

    window.addEvent("domready", function() {
    $$("img.myoffer").each(function(el) {
    el.addEvent("click", function() {
    $("consoleMyOffer"+el.name).addClass("ajax-loading").setHTML("<img src='"+assetsBase+"/images/ajax-loader.gif' border='0'> " );
    var url="index.php?option=com_com&view=angebote&fct=ge tchangetravleofferpublish&format=raw&myofferid=" + el.name;
    var a = new Ajax( url, {
    method: 'get',
    onComplete: function(response) {
    var jsonresp = Json.evaluate(response);
    var changeimage = assetsBase+"/images/"+jsonresp.html;
    alert(changeimage);
    el.set('src',changeimage);
    //el.setStyle('background-image','transparent');
    //el.setStyle('src','" + changeimage + "');
    //el.set('src', '');
    //el.setHTML(jsonresp.html);
    $("consoleMyOffer"+el.name).removeClass("ajax-loading").setHTML('');
    }
    }).request();
    });
    });
    });
    Geändert von it-micha (04.02.2011 um 12:26 Uhr) Grund: fehlt was

  7. #6
    Neu an Board
    Registriert seit
    16.03.2009
    Ort
    Nordkirchen
    Beiträge
    32
    Bedankte sich
    14
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    GELÖST[:-)]
    var changeimage = assetsBase+"/images/"+jsonresp.html;
    el.setAttribute('src',changeimage);

    Trotzdem, danke Martikular ...
    :-)

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein