/* This program is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What The Fuck You Want * To Public License, Version 2, as published by Sam Hocevar. See * http://sam.zoy.org/wtfpl/COPYING for more details. */ var loadForm = document.getElementById('loadForm'); loadForm.addEventListener('submit', function(e) { e.preventDefault(); loadConfig(); }, true); // Change variables here. var type = 'user'; // could be 'group' to follow a group var servertype ='friendica'; var user = 'marco'; var max = 5; var tag = 'federation-widget'; var domain = 'https://freunde.ma-nic.de'; var posttime_label = 'Post time:'; // Other variables if (servertype=='diaspora'){ url = domain+'/public/'+user+'.atom' } else if (servertype=='mastodon'){ url = domain+'/@'+user+'.atom' } else { url = domain+'/feed/'+user; } function loadConfig() { domain = document.getElementById('profile_domain').value; servertype = document.getElementById('server_type').value; user = document.getElementById('profile_name').value; profile_type = document.getElementById('profile_type'); type = profile_type.options[profile_type.selectedIndex].value; if (servertype=='diaspora'){ url = domain+'/public/'+user+'.atom' } else if (servertype=='mastodon'){ url = domain+'/@'+user+'.atom' } else { url = domain+'/feed/'+user; } getAtom(); } function getAtom() { if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.open("GET",url,true); xmlhttp.onreadystatechange = function() { if(xmlhttp.readyState === XMLHttpRequest.DONE) { try{if (xmlhttp.status=200){updateWidget(xmlhttp.responseXML)}} catch (e){} } } xmlhttp.send(); } function updateWidget(xmlDoc){; if (servertype=='hubzilla'){ userinfo=xmlDoc.getElementsByTagNameNS('http://purl.org/zot','owner')[0]; } else{ userinfo=xmlDoc.getElementsByTagName('author')[0]; } try { if (servertype=='hubzilla'){ var imagelinks=userinfo.getElementsByTagName('link'); for (var i=0;i< imagelinks.length;i++) { if (imagelinks[i].getAttribute('rel')=='avatar'){ img=imagelinks[i].getAttribute('href') }; } } else{ img = xmlDoc.getElementsByTagName('logo')[0].firstChild.data; } } catch (e) { img = ''; } try { profile = userinfo.getElementsByTagName('uri')[0].firstChild.data; } catch (e) { profile = ''; } try { displayname = userinfo.getElementsByTagNameNS('http://portablecontacts.net/spec/1.0','displayName')[0].firstChild.data } catch (e) { displayname = ''; } //Header content = '
'; if (img != '') { content += ''; } content += '

'+displayname+ '

'; //Statuses in Array var items = xmlDoc.getElementsByTagName('entry'); var max_item = max - 1 //Read item from array for (var n=0; n < items.length; n++) { try {//Images, names and link for Group member var item_groupmember="",item_groupmember_screen_name="",item_groupmember_name="", item_groupmember_image="",item_groupmember_link=""; if (type=='group'){ var item_groupmember_screen_name = items[n].getElementsByTagName('author')[0].getElementsByTagNameNS('http://portablecontacts.net/spec/1.0','displayName')[0].firstChild.data; var authorlinks=items[n].getElementsByTagName('link'); for (var i=0;i< authorlinks.length;i++) { if (authorlinks[i].getAttribute('rel')=='avatar'){ var item_groupmember_image=authorlinks[i].getAttribute('href') }; } var item_groupmember_link = items[n].getElementsByTagName('uri')[0].firstChild.data; var item_groupmember = '\"Profile\"' + item_groupmember_screen_name + ' ' + item_groupmember_link +' '; }; } catch (e) { var item_groupmember='',item_groupmember_name='',item_groupmember_image='',item_groupmember_link=''; } try {//Get Status Html var item_content = items[n].getElementsByTagName('content')[0].firstChild.data; } catch (e) { var item_content = ''; } try {//Get Create Time from status var item_time = ''; item_time = new Date( items[n].getElementsByTagName('updated')[0].firstChild.data).toLocaleString(); item_time= "⌛\;" + posttime_label + " " + item_time +" "; } catch (e) { var item_time = ''; } //Build status string and add to timeline content += '
'+item_groupmember+item_time+"
" +item_content+'
' if ((max_item < items.length) && (n==max_item)) { n = items.length; } } content += '
'; document.getElementById(tag).innerHTML = content; } window.onload = getAtom;