Hi,
ich wollte mal versuchen selbst ein einfaches Plugin zu erstellen um einen besseren durchblick zu erhalten.
Ich hab aufbauend auf dem gweather plugin ein neues erstellt welches neue mails im CV anzeigen soll. Soweit so gut nur möchte ich die mails sliden lassen und müsste nach dem laden der Daten die Funktion "tileBlockSlider" starten nur weiss ich nicht so recht wie wo ich das Aufrufen hinsetzen muss damit es klappt.
Bis jetzt hab ich es nur hinbekommen wenn ich es mit setTimeout eine Sekunde später aufrufe. Leider geht das nur beim ersten Laden, wenn dann das refresh kommt klappt es nicht.
Danke fürs drüber gucken und eventuelle Hilfe :-)
Gruss,
Chris
ich wollte mal versuchen selbst ein einfaches Plugin zu erstellen um einen besseren durchblick zu erhalten.
Ich hab aufbauend auf dem gweather plugin ein neues erstellt welches neue mails im CV anzeigen soll. Soweit so gut nur möchte ich die mails sliden lassen und müsste nach dem laden der Daten die Funktion "tileBlockSlider" starten nur weiss ich nicht so recht wie wo ich das Aufrufen hinsetzen muss damit es klappt.
Bis jetzt hab ich es nur hinbekommen wenn ich es mit setTimeout eine Sekunde später aufrufe. Leider geht das nur beim ersten Laden, wenn dann das refresh kommt klappt es nicht.
Code:
$( 'head' ).append( '<link rel="stylesheet" href="plugins/email/email.css" type="text/css" />' ); $( 'head' ).append( '<script src="plugins/email/tile-slider.js" type="text/javascript" ></script>' ); VisuDesign_Custom.prototype.addCreator("email", { create: function( page, path ) { var $p = $(page); function uniqid() { var newDate = new Date; return newDate.getTime(); } var id = "email_" + uniqid(); var ret_val = $('<div class="widget clearfix email" />'); ret_val.setWidgetLayout($p); var label = '<div class="label">' + page.textContent + '</div>'; var actor = $("<div class=\"actor\"><div class=\"email\" id=\"" + id + "\" data-role=\"slider\" data-param-period=\"3000\"><div class='email tile-content'>loading</div></div></div>"); var email = $("#" + id, actor); if ($p.attr("width")) { email.css("width", $p.attr("width")); } if ($p.attr("height")) { email.css("height", $p.attr("height")); } ret_val.append(label).append(actor); email.data("id", id); email.data("label", page.textContent); email.data("refresh", $p.attr("refresh")); email.data("provider", $p.attr("provider")); refreshemail(email, {}); return ret_val; } }); function refreshemail(email, data) { var email = $(email); var label = email.data("label"); var refresh = email.data("refresh"); var provider = email.data("provider"); var childData = function(selector, arg) { return selector.find(arg).attr('data'); } function addMailDiv( sender, subject, message ){ maildiv = $("<div class='email tile-content'></div>"); maildiv.append( "<div class='sender'>" + sender + "</div>" ); maildiv.append( "<div class='subject'>" + subject + "</div>" ); maildiv.append( "<div class='message'>" + message + "</div>" ); $(email).append(maildiv); } $.ajax({ type: "GET", datatype: "xml", data: "provider="+encodeURI(provider), url: "plugins/email/email.php", success: function(data){ if(eval(email)){ $(email).text(''); $(data).find('emails').find('email').each(function(){ addMailDiv( $(this).find('sender').text(), $(this).find('subject').text(), $(this).find('message').text() ); }); } } }); //refresh regularly if (typeof (refresh) != "undefined" && refresh) { // reload regularly window.setTimeout(function(email, data) { refreshemail(email, data); }, refresh * 1000, email, data) [B] // [COLOR=Red]PROBLEM: wo aufrufen damit es auch nach dem refresh und ohne setTimeout klappt?[/COLOR] window.setTimeout(function(){ var slidedTiles = $('[data-role=slider], .block-slider'); slidedTiles.each(function (index, tile) { var params = {}; [COLOR=Red] tile = $(tile); params.direction = tile.data('paramDirection'); params.duration = tile.data('paramDuration'); params.period = tile.data('paramPeriod'); tile.tileBlockSlider(params);[/COLOR] }) }, 1000); } //----------------[/B] return false; }
Gruss,
Chris