|
Project Information
|
// ---------------------------------------- // TABLE OF CONTENT FOR BLOGGER // ---------------------------------------- // This functions takes a blogger-feed in JSON // format and displays it. // // Date: 01-02-2010 // Author: Kang eNeS // URL: ruangsc.blogspot.com // ---------------------------------------- var cl_summlen = jumlah_kata_dalam_ringkasan; var all_entries; var entries; var all_labels = ; var json; function createEntries(json){ var entries_obj_list = ;
var entries = json.feed.entry;
for(var i=0; i<entries.length; i++){
var entry = entriesi;
var entry_obj = new Object;
entry_obj.id = entry.id.$t;
entry_obj.title = entry.title.$t;
entry_obj.href = getEntryHref(entry);
entry_obj.content = getEntryContent(entry);
entry_obj.labels = getEntryLabels(entry);
entry_obj.published = entry.published.$t.substr(0, 10);
entries_obj_list.push(entry_obj);
}
return entries_obj_list;
} function getEntryById(id){ for(var i=0; i<all_entries.length; i++){
if(all_entriesi.id == id){return all_entriesi;}
} return null;
} function getEntryContent(entry){ return entry.content ? entry.content.$t : entry.summary.$t;
} function getEntryHref(entry){ var links = entry.link;
for(var i=0; i<links.length; i++){
if(linksi.rel == "alternate"){return linksi.href;}
}
return null;
} function getEntryLabels(entry){ var labels = ;
var categories = entry.category;
if(!categories){return labels;}
for(var i=0; i<categories.length; i++){
var label = categoriesi.term;
if(!isExists(all_labels, label)){all_labels.push(label);} // while collecting all labels
labels.push(label);
}
return labels;
} function getSomeEntries(cmp){ entries = ;
for(var i=0; i<all_entries.length; i++){
var entry = all_entriesi;
if(cmp(entry)){entries.push(entry);}
}
return entries;
} function isExists(array, val){ for(var i=0; i<array.length; i++){
if(arrayi == val){return true;}
} return false;
} function onLoadFeed(json_arg){ json = json_arg;
setTimeout("onLoadFeedTimeout()", 100);
} function onLoadFeedTimeout(){ entries = createEntries(json);
all_entries = entries;
showHeaderOption();
showEntries(entries);
} function showEntries(entries){ var s = "";
for(var i=0; i<entries.length; i++){
var entry = entriesi;
s += " ";
s += titleCode(entry);
s += "Label: " + labelsCode(entry);
s += " pada " + publishedDateCode(entry) + "";
s += " ";
}
s += " ";
s += "";
document.getElementById("cl_content_list").innerHTML = s;
} function showHeaderOption(){ var s = "";
s += "";
s += "";
s += "| Urut berdasarkan: ";
s += " | <select onchange="sortBy(this.value.substr(1), this.value.substr(0,1))"> ";
s += "<option value="0published"> </option> Tanggal dipublikasikan - ";
s += "<option value="1title"> </option> Judul Artikel";
s += "</select> ";
s += " | ";
s += "| Lihat kategori: ";
s += " | <select onchange="showPostsWLabel(this.value)" id="cl_labels"> ";
s += "<option value="*"> </option> Semua kategori - ";
for(var i=0; i<all_labels.length; i++){
var label = all_labelsi;
s += "<option value=""+label+""> </option> " + label;
}
s += "</select> ";
s += "Unknown end tag for </table> ";
document.getElementById("cl_option").innerHTML = s;
} function shortenContent(entry){ var content = entry.content;
content = stripHTML(content);
if(content.length > cl_summlen){
content = content.substr(0, cl_summlen);
if(content.charAt(content.length-1) != " "){content = content.substr(0, content.lastIndexOf(" ")+1);}
content += "...";
}
entry.content = content;
return content;
} function showHideSummary(obj){ var p = obj.nextSibling;
while(p.className != "cl_content"){p = p.nextSibling;}
var id = p.id;
var entry = getEntryById(id);
var content = shortenContent(entry);
if(p.innerHTML == ""){
p.innerHTML = content + " ";
obj.innerHTML = "▼";
obj.title = "Sembunyikan rangkuman";
} else {
p.innerHTML = "";
obj.innerHTML = "►";
obj.title = "Lihat rangkuman";
}
} function sortBy(attribute, asc){ var cmp = function(entry1, entry2){
if(entry1attribute == entry2attribute){return 0;}
else if(asc=='1'){return entry1attribute.toLowerCase() > entry2attribute.toLowerCase();}
else{return entry1attribute.toLowerCase() < entry2attribute.toLowerCase();}
}
entries.sort(cmp);
showEntries(entries);
} function stripHTML(s) { var c;
var intag = false; var newstr = "";
for(var i=0; i<s.length; i++){
c = s.charAt(i);
if(c=="<"){intag = true;}
else if(c==">"){intag = false;}
if(c == ">"){newstr += " ";}
else if(!intag){newstr += c;}
}
return newstr;
} // --------------------- functions returning HTML code -------------------- \\ function labelsCode(entry){ var s = "";
if(entry.labels.length == 0){return " (tidak berlabel) ";}
for(var j=0; j<entry.labels.length; j++){
var label = entry.labelsj;
s += "<a href='javascript:showPostsWLabel(\""+label+"\")' ";
s += "title='lihat post dengan label \""+label+"\"'>" + label + "Unknown end tag for </a> ";
s += (j != entry.labels.length-1) ? ", " : "";
}
return s;
} function publishedDateCode(entry){ var y = entry.published.substr(0, 4);
var m = entry.published.substr(5, 2);
var d = entry.published.substr(8, 2);
var s = "" + y + "/";
s += "" + m + "/";
s += "<a href='javascript:showPostsInDate(\""+y+"-"+m+"-"+d+"\")'title='Lihat artikel pada "+y+"/"+m+"/"+d+"'>" + d + "Unknown end tag for </a> ";
return s;
} function titleCode(entry){ var s = "► ";
s += "" + entry.title + " ";
s += "";
return s;
} // ----------------------- selection functions ------------------------------ \\ function showPostsInDate(date){ var cmp = function(entry){return entry.published.indexOf(date) == 0;}
var entries = getSomeEntries(cmp);
showEntries(entries);
} function showPostsWLabel(label){ var cmp = function(entry){
if(label == ""){return true;}
for(var i=0; i<entry.labels.length; i++){
if(entry.labelsi == label){return true;}
}
return false;
}
var entries = getSomeEntries(cmp);
showEntries(entries);
document.getElementById("cl_labels").value = label;
}
|
|