Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: [js] Funktionsbeginn bzw. -anfang
AUTOR BEITRAG
schnubbi

RANG Ruler

#1 - 17.01 22:07

Hallo!

Ich brauche Hilfe bei der Veränderung einer Javascript-Datei. Habe leider mit JS so gut wie keine Erfahrung. Und zwar ist diese Datei Teil eines Twitter-Plugins für einen Wordpress-Blog und erzeugt folgendes Ergebnis: Screenshot


Ich möchte nun, dass die Zeitangabe unter dem Twitter-Text steht und nicht darüber. Kann mir jemand in diesem JS-Wirrwarr zeigen wo die Zeitangabe und die Textauslesung anfängt bzw. endet, damit ich diese beiden tauschen kann?
Ist das überhaupt möglich? Ich hoffe doch

[code](function($){$.fn.tweet=function(o){var s={username:["seaofclouds"],avatar_size:null,count:3,intro_text:null,outro_text:null,join_text:null,auto_join_text_default:"i said,",auto_join_text_ed:"i",auto_join_text_ing:"i am",auto_join_text_reply:"i replied to",auto_join_text_url:"i was looking at",loading_text:null,query:null};$.fn.extend({linkUrl:function(){var returning=[];var regexp=/((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;this.each(function(){returning.push(this.replace(regexp,"<a href=\"$1\">$1</a>")});return $(returning);},linkUser:function(){var returning=[];var regexp=/[\@]+([A-Za-z0-9-_]+)/gi;this.each(function(){returning.push(this.replace(regexp,"<a href=\"http://twitter.com/$1\">@$1</a>"))});return $(returning);},linkHash:function(){var returning=[];var regexp=/ [\#]+([A-Za-z0-9-_]+)/gi;this.each(function(){returning.push(this.replace(regexp,' <a href="http://search.twitter.com/search?q=&tag=$1&#12296;=all&from='+s.username.join("%2BOR%2B")+'">#$1</a>'))});return $(returning);},capAwesome:function(){var returning=[];this.each(function(){returning.push(this.replace(/(a|A)wesome/gi,'AWESOME'))});return $(returning);},capEpic:function(){var returning=[];this.each(function(){returning.push(this.replace(/(e|E)pic/gi,'EPIC'))});return $(returning);},makeHeart:function(){var returning=[];this.each(function(){returning.push(this.replace(/[<]+[3]/gi,"<tt class='heart'>♥</tt>")});return $(returning);}});function relative_time(time_value){var parsed_date=Date.parse(time_value);var relative_to=(arguments.length>1)?arguments[1]:new Date();var delta=parseInt((relative_to.getTime()-parsed_date)/1000);if(delta<60){return'eben gerade';}else if(delta<120){return'etwa eine Minute alt';}else if(delta<(45*60)){return'vor '+(parseInt(delta/60)).toString()+' Minuten';}else if(delta<(90*60)){return'vor etwa 1 Stunde';}else if(delta<(24*60*60)){return'vor etwa '+(parseInt(delta/3600)).toString()+' Stunden';}else if(delta<(48*60*60)){return'Gestern';}else{return'vor '+(parseInt(delta/86400)).toString()+' Tagen';}}
if(o)$.extend(s,o);return this.each(function(){var list=$('<ul class="tweet_list">').appendTo(this);var intro='<p class="tweet_intro">'+s.intro_text+'</p>'
var outro='<p class="tweet_outro">'+s.outro_text+'</p>'
var loading=$('<p class="loading">'+s.loading_text+'</p>');if(typeof(s.username)=="string"{s.username=[s.username];}
var query='';if(s.query){query+='q='+s.query;}
query+='&q=from:'+s.username.join('%20OR%20from:');var url='http://search.twitter.com/search.json?&'+query+'&rpp='+s.count+'&callback=?';if(s.loading_text)$(this).append(loading);$.getJSON(url,function(data){if(s.loading_text)loading.remove();if(s.intro_text)list.before(intro);$.each(data.results,function(i,item){if(s.join_text=="auto"{if(item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)){var join_text=s.auto_join_text_reply;}else if(item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)){var join_text=s.auto_join_text_url;}else if(item.text.match(/^((\w+ed)|just) .*/im)){var join_text=s.auto_join_text_ed;}else if(item.text.match(/^(\w*ing) .*/i)){var join_text=s.auto_join_text_ing;}else{var join_text=s.auto_join_text_default;}}else{var join_text=s.join_text;};var join_template='<span class="tweet_join"> '+join_text+' </span>';var join=((s.join_text)?join_template:' ')
var avatar_template='<a class="tweet_avatar" href="http://twitter.com/'+item.from_user+'"><img src="'+item.profile_image_url+'" height="'+s.avatar_size+'" width="'+s.avatar_size+'" alt="'+item.from_user+'\'s avatar" border="0"/></a>';var avatar=(s.avatar_size?avatar_template:'')
var date='<a href="http://twitter.com/'+item.from_user+'/statuses/'+item.id+'" title="view tweet on twitter">'+relative_time(item.created_at)+'</a>';var text='<span class="tweet_text">'+$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+'</span>';list.append('<li>'+avatar+date+join+text+'</li>');list.children('li:first').addClass('tweet_first');list.children('lidd').addClass('tweet_even');list.children('li:even').addClass('tweet_odd');});if(s.outro_text)list.after(outro);});});};})(jQuery);
[/code]

Über eure Hilfe würde ich mich sehr freuen!
h¥pertex

RANG Deckschrubber

#2 - 18.01 09:13

Ohne es mir näher angesehen zu haben (ist nicht sehr übersichtlich, und der code-tag hat ja scheinbar auch nicht funktioniert) würde ich zuerst mal hier die reihenfolge ändern:
list.append('<li>'+avatar+date+join+text+'</li>');
code

Einfach das date weiter nach hinten, was das join macht hab ich mir nicht angeschaut, kann sein, dass das weiterhin zwischen text und date stehen sollte.
Also irgendwie so:
list.append('<li>'+avatar+join+text+date+'</li>');
code

oder so:
list.append('<li>'+avatar+text+join+date+'</li>');
code
schnubbi

RANG Ruler

#3 - 19.01 07:01

Das hat leider nicht funktioniert.

Deine erste Variante hat nichts verändert und die zweite hat nur das erste Datum komplett unter die ganze Ausgabe gehauen. Warum auch immer. :-/

Noch Ideen?
Kabelbinder

RANG Master of Clanintern

#4 - 21.01 15:18

bei dem code is's echt schwierig, weil unübersichtlich,
es gibt irgendwo einen if-block in dem die zeit/datums-differenzen in text umgewandelt werden

var delta=parseInt((relative_to.getTime()-parsed_date)/1000);if(delta<60){return'eben gerade';}else if(delta<120){return'etwa eine Minute alt';}else if(delta<(45*60)){return'vor '+(parseInt(delta/60)).toString()+' Minuten';}else if(delta<(90*60)){return'vor etwa 1 Stunde';}else if(delta<(24*60*60)){return'vor etwa '+(parseInt(delta/3600)).toString()+' Stunden';}else if(delta<(48*60*60)){return'Gestern';}else{return'vor '+(parseInt(delta/86400)).toString()+' Tagen';}}

quote


da würde ich ansetzen, bzw. bei delta
Crush (NSFW)

RANG Deckschrubber

#5 - 21.01 16:16

Vielleicht den Code erstmal vernünftig in Zeilen umbrechen und einrücken?

Dann ist es wahrscheinlich offensichtlich.

Edit: Hab den Code mal durch ein paar reguläre Ausrücke und einen Auto Indenter geschickt um die original lesbarkeit wieder herzustellen. Ist so IMO noch nicht perfekt aber wesentlich lesbarer:

http://pastebin.com/f3a4c7f34

Edit2: Schönes Beispiel warum man bei regulären Ausdrücken IMMER einen Kommentar dazu schreiben sollte was er macht.
schnubbi

RANG Ruler

#6 - 21.01 16:42

Danke für euer Engagement. Ich werde das zu Hause dann mal testen!
h¥pertex

RANG Deckschrubber

#7 - 22.01 09:17

@kabelbinder: Im delta steht doch nur als Text das "vor einer Minute" usw., da wird ja nicht die Position festgelegt.
schnubbi

RANG Ruler

#8 - 23.01 16:58

@Crush: Danke für diese Ordnung. Leider funktioniert das ganze nicht mehr wenn ich es so einsetze

@Kabelbinder&hypertex: Habt ihr noch eine Idee?
Kabelbinder

RANG Master of Clanintern

#9 - 24.01 10:12

nein, keine idee mehr,
nachdem die var delta ja in den funktion "relative_time" zurückgegeben und in "date" gespeichert wurde, wird diese in Zeile 198 "list.append('<li>'+avatar+date+join+text+'</li>';" verwurschtelt...

somit schließe ich mich hypertex an