diff options
Diffstat (limited to 'mod/identica/views')
-rw-r--r-- | mod/identica/views/default/identica/css.php | 63 | ||||
-rw-r--r-- | mod/identica/views/default/identica/js.php | 40 | ||||
-rw-r--r-- | mod/identica/views/default/js/friendly_time.php | 50 | ||||
-rw-r--r-- | mod/identica/views/default/widgets/identica/content.php | 30 | ||||
-rw-r--r-- | mod/identica/views/default/widgets/identica/edit.php | 16 |
5 files changed, 199 insertions, 0 deletions
diff --git a/mod/identica/views/default/identica/css.php b/mod/identica/views/default/identica/css.php new file mode 100644 index 000000000..e87d0cf31 --- /dev/null +++ b/mod/identica/views/default/identica/css.php @@ -0,0 +1,63 @@ +<?php +/** + * Elgg Identi.ca CSS + * + * @package ElggIdentica + */ +?> + +#identica_widget { + margin:0 10px 0 10px; +} +#identica_widget ul { + margin:0; + padding:0; +} +#identica_widget li { + list-style-image:none; + list-style-position:outside; + list-style-type:none; + margin:0 0 5px 0; + padding:0; + overflow-x: hidden; + border: 2px solid #dedede; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; +} +#identica_widget li span { + color:#666666; + background:white; + + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; + + padding:5px; + display:block; +} +p.visit_identica a { + background:url(<?php echo elgg_get_site_url(); ?>mod/identica/graphics/identica.png) left no-repeat; + padding:0 0 0 20px; + margin:0; +} +p.identica_username .input-text { + width:200px; +} +.visit_identica { + background:white; + + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; + + padding:2px; + margin:0 0 5px 0; +} +#identica_widget li > a { + display:block; + margin:0 0 0 4px; +} +#identica_widget li span a { + display:inline !important; +} diff --git a/mod/identica/views/default/identica/js.php b/mod/identica/views/default/identica/js.php new file mode 100644 index 000000000..1dd560836 --- /dev/null +++ b/mod/identica/views/default/identica/js.php @@ -0,0 +1,40 @@ +/** + * Elgg identi.ca widget + * This plugin allows users to pull in their identi.ca feed to display on their profile + * + * @package ElggIdentica + */ + +elgg.identica = {}; + +/** + * Parse the JSON result for show this in HTML + * + * @param JSON string the JSON result of the identi.ca's call + */ +elgg.identica.callback = function(identicas) { + var statusHTML = []; + for (var i=0; i<identicas.length; i++){ + var username = identicas[i].user.screen_name; + var status = identicas[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) { + return '<a href="'+url+'">'+url+'</a>'; + }).replace(/\B@([_a-z0-9]+)/ig, function(reply) { + return reply.charAt(0)+'<a href="http://identi.ca/'+reply.substring(1)+'">'+reply.substring(1)+'</a>'; + }).replace(/\B#([-_a-z0-9]+)/ig, function(tag) { + return tag.charAt(0)+'<a href="http://identi.ca/tag/'+tag.substring(1).replace(/[^a-z0-9]+/ig, '')+'">'+tag.substring(1)+'</a>'; + }).replace(/\B!([_a-z0-9]+)/ig, function(group) { + return group.charAt(0)+'<a href="http://identi.ca/group/'+group.substring(1)+'">'+group.substring(1)+'</a>'; + }); + statusHTML.push('<li><span>'+status+'</span> <a style="font-size:85%" href="http://identi.ca/notice/'+identicas[i].id+'">'+elgg.get_friendly_time(identicas[i].created_at)+'</a></li>'); + } + document.getElementById('identica_update_list').innerHTML = statusHTML.join(''); +} + +elgg.identica.init = function() { + username = $('#identica_update_list').data('username'); + num = $('#identica_update_list').data('num'); + js = "https://identi.ca/api/statuses/user_timeline/"+username+".json?callback=elgg.identica.callback&count="+num; + $.getScript(js); +}; + +elgg.register_hook_handler('init', 'system', elgg.identica.init); diff --git a/mod/identica/views/default/js/friendly_time.php b/mod/identica/views/default/js/friendly_time.php new file mode 100644 index 000000000..0b0275206 --- /dev/null +++ b/mod/identica/views/default/js/friendly_time.php @@ -0,0 +1,50 @@ +elgg.get_friendly_time = function(time) { + + if (!time) { + time = new Date(); + } else { + time = new Date(time); + } + diff = (new Date().getTime() - time.getTime()) / 1000; + + minute = 60; + hour = minute * 60; + day = hour * 24; + + if (diff < minute) { + return elgg.echo("friendlytime:justnow"); + } else if (diff < hour) { + diff = Math.round(diff / minute); + if (diff == 0) { + diff = 1; + } + + if (diff > 1) { + return elgg.echo("friendlytime:minutes", [diff]); + } else { + return elgg.echo("friendlytime:minutes:singular", [diff]); + } + } else if (diff < day) { + diff = Math.round(diff / hour); + if (diff == 0) { + diff = 1; + } + + if (diff > 1) { + return elgg.echo("friendlytime:hours", [diff]); + } else { + return elgg.echo("friendlytime:hours:singular", [diff]); + } + } else { + diff = Math.round(diff / day); + if (diff == 0) { + diff = 1; + } + + if (diff > 1) { + return elgg.echo("friendlytime:days", [diff]); + } else { + return elgg.echo("friendlytime:days:singular", [diff]); + } + } +}; diff --git a/mod/identica/views/default/widgets/identica/content.php b/mod/identica/views/default/widgets/identica/content.php new file mode 100644 index 000000000..42cbd1853 --- /dev/null +++ b/mod/identica/views/default/widgets/identica/content.php @@ -0,0 +1,30 @@ +<?php + +/** + * Elgg identi.ca view page + * + * @package ElggIdentica + */ + +//some required params + +$username = $vars['entity']->identica_username; +$num = $vars['entity']->identica_num; + +// if the identi.ca username is empty, then do not show +if ($username) { + elgg_load_js('friendly_time'); + elgg_load_js('identica'); +?> + +<div id="identica_widget"> + <ul id="identica_update_list" data-username="<?php echo $username; ?>" data-num="<?php echo $num; ?>"></ul> + <p class="visit_identica"><a href="http://identi.ca/<?php echo $username; ?>"><?php echo elgg_echo("identica:visit"); ?></a></p> +</div> + +<?php +} else { + + echo "<p>" . elgg_echo("identica:notset") . ".</p>"; + +} diff --git a/mod/identica/views/default/widgets/identica/edit.php b/mod/identica/views/default/widgets/identica/edit.php new file mode 100644 index 000000000..888f4e908 --- /dev/null +++ b/mod/identica/views/default/widgets/identica/edit.php @@ -0,0 +1,16 @@ +<?php + + /** + * Elgg identi.ca edit page + * + * @package ElggIdentica + */ + +?> + <p> + <?php echo elgg_echo("identica:username"); ?> + <input type="text" name="params[identica_username]" value="<?php echo htmlentities($vars['entity']->identica_username); ?>" /> + <br /><?php echo elgg_echo("twitter:num"); ?> + <input type="text" name="params[identica_num]" value="<?php echo htmlentities($vars['entity']->identica_num); ?>" /> + + </p> |