Template:OSocial.net Code

From OpenSocial Directory

Jump to: navigation, search
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
   <ModulePrefs title="OSocial - About OpenSocial" description="Last OpenSocial applications - OpenSocial blogs posts, stories and bookmarks."
              author="Victor Coustenoble" author_email="victor.coustenoble@gmail.com" author_location="Paris, France"
              height="300" scrolling="true"
              screenshot="http://www.osocial.net/applications/osocial/osocialscreenshot.jpg"
              thumbnail="http://www.osocial.net/applications/osocial/osocial.png">
 
      <Require feature="dynamic-height" />
      <Require feature="opensocial-0.5" />
      <Require feature="setprefs"/>
      <Require feature="tabs"/>
      <Require feature="analytics"/>
  </ModulePrefs>

   <UserPref name="tabFontSize" display_name="Tab Font Size" default_value="0.7em" />

   <UserPref name="showFeedDesc" display_name="Feed Descriptions" datatype="bool" default_value="true" />

   <UserPref name="entries" display_name="# of Entries" datatype="enum" default_value="5">
      <EnumValue value="3" />

      <EnumValue value="4" />

      <EnumValue value="5" />

      <EnumValue value="6" />

      <EnumValue value="7" />

      <EnumValue value="8" />

      <EnumValue value="9" />

      <EnumValue value="10" />

      <EnumValue value="11" />

      <EnumValue value="12" />
   </UserPref>

   <UserPref name="summaries" display_name="Summaries" datatype="enum" default_value="200">
      <EnumValue value="-1" display_value="none" />

      <EnumValue value="100" display_value="short" />

      <EnumValue value="200" display_value="medium" />

      <EnumValue value="300" display_value="long" />

      <EnumValue value="400" display_value="longer" />

      <EnumValue value="0" display_value="show all" />
   </UserPref>

   <UserPref name="renderHtml" display_name="Render HTML" datatype="bool" default_value="true" />

   <UserPref name="showTimestamp" display_name="Show Timestamp" datatype="bool" default_value="true" />

   <UserPref name="selectedTab" datatype="hidden" />

   <Content type="html">
      <![CDATA[
<style type="text/css">
.tablib_table {
font-size: __UP_tabFontSize__;
}
.tablib_selected, .tablib_unselected {
width: 23%;
}

.statusLabel {
font-size: 0.75em;
font-style: italic;
padding-top: 10px;
text-align: center;
}
.feedHeader {
padding-top: 5px;
font-size: 0.7em;
}
.feedHeader .feedTitle {
font-weight: bold;
font-size: 1.1em;
}
.feedHeader .feedAuthor {
font-weight: normal;
font-size: 0.8em;
color: #676767;
}

.feedList {
font-size: 0.7em;
margin: 0px;
padding: 0px 0px 5px 0px;
border-bottom: 1px solid #aaaaaa;
}
.feedList li {
margin-top: 5px;
padding: 3px 3px 0px 3px;
border-top: 1px solid #aaaaaa;
}
.feedList li div.entryTitle a {
font-weight: bold;
}
.feedList li div.entryTimestamp {
font-size: 0.95em;
font-style: italic;
color: #676767;
}
</style>

        <script>
        // Global variables
        var prefs = new _IG_Prefs(__MODULE_ID__);
        var tabs = new _IG_Tabs(__MODULE_ID__);

        /**
         * Initialize tabs when page loads.
         * Create tab for each userpref only if userpref is not empty.
         */
        function init() {
          var f1 = "http://www.google-info.net/osocial/directory/atom.php";
          var f2 = "http://digg.com/rss_search?search=opensocial&area=all&type=both&section=all";
          var f3 = "http://feeds.technorati.com/tag/opensocial?authority=a4&language=en";
          var f4 = "http://del.icio.us/rss/tag/opensocial";          
          var fi1 = "http://www.osocial.net";
          var fi2 = "http://digg.com/search?s=opensocial&submit=Search&section=all&type=both&area=all&sort=new";
          var fi3 = "http://technorati.com/tag/opensocial?authority=a4&language=en";
          var fi4 = "http://del.icio.us/tag/opensocial";          
          var ft1 = "Last OSocial.net applications";
          var ft2 = "Digg stories";
          var ft3 = "Technorati posts";
          var ft4 = "del.icio.us bookmarks";
          var i1 = "http://www.google-info.net/osocial/images/osocial.png";
          var i2 = "http://www.google-info.net/osocial/images/digg.gif";
          var i3 = "http://www.google-info.net/osocial/images/technorati.jpg";
          var i4 = "http://www.google-info.net/osocial/images/delicious.gif";          

          if (f1 != "") {
            tabs.addDynamicTab(((ft1 == "") ? "Feed 1" : ft1), _IG_Callback(callbackTab, f1, fi1, ft1, i1));
          }
          if (f2 != "") {
            tabs.addDynamicTab(((ft2 == "") ? "Feed 2" : ft2), _IG_Callback(callbackTab, f2, fi2, ft2, i2));
          }
          if (f3 != "") {
            tabs.addDynamicTab(((ft3 == "") ? "Feed 3" : ft3), _IG_Callback(callbackTab, f3, fi3, ft3, i3));
          }
          if (f4 != "") {
            tabs.addDynamicTab(((ft4 == "") ? "Feed 4" : ft4), _IG_Callback(callbackTab, f4, fi4, ft4, i4));
          }          
        };

        /**
         * Fetches an Atom or RSS feed and generates content inside the
         * selected tab's content container.  This function is called whenever
         * a tab is selected.
         */
        function callbackTab(tabId, feedUrl, initUrl, feedName, imageurl) {
          var showFeedDesc = prefs.getBool("showFeedDesc");
          var summaries = prefs.getInt("summaries");
          var entries = prefs.getInt("entries");
          var renderHtml = prefs.getBool("renderHtml");
          var showTimestamp = prefs.getBool("showTimestamp");
          var container = _gel(tabId);

          // Display loading message before fetching feed.
          container.innerHTML = '<div class="statusLabel">Loading...</div>';

          // Fetch feed and return it as a JSON object.
          // Callback function is defined within local scope.
          _IG_FetchFeedAsJSON(
            feedUrl,
            function(feed) {
              if (typeof feed == "undefined" || typeof feed.Entry == "undefined") {
                container.innerHTML = '<div class="statusLabel">Invalid feed URL:<br>' + feedUrl + '</div>';
              } else {
                // Fetch feed successful.  Generate HTML content from returned JSON object.
                // Create feed header containing title and description.
                var html = new Array();
                html.push('<div class="feedHeader">');
                html.push('<div class="feedTitle">');
                html.push((feed.Link != "") ? '<img src="' + imageurl + '"> ' + ' <a target="_top" href="' + initUrl + '">' + feedName + '</a>' : feedName);
                //html.push((feed.Author != "") ? '<span class="feedAuthor"> by ' + _hesc(feed.Author) + '</span>' : "");
                html.push('</div>');
                //if (showFeedDesc) {
                //  html.push('<div class="feedDesc">' + _hesc(feed.Description) + '</div>');
                //}
                html.push('</div>');

                // Iterate through each feed entry and generate list of content.
                html.push('<ul class="feedList">');
                for (var n = 0; n < feed.Entry.length; n++) {
                  var entry = feed.Entry[n];
                  html.push('<li>');
                  html.push('<a target="_top" href="' + entry.Link + '"><b>' + _hesc(entry.Title) + '</b></a>');
                  if (typeof entry.Summary != "undefined" && entry.Summary != "") {
                    var summary = document.createElement("div");
                    summary.innerHTML = (summaries == 0) ? entry.Summary : entry.Summary.substr(0, summaries);
                    html.push('<div class="entrySummary">');
                    html.push((renderHtml ? summary.innerHTML : _hesc(summary.innerHTML)));
                    html.push('</div>');
                  }
                  if (!isNaN(entry.Date) && showTimestamp) {
                    html.push('<div class="entryTimestamp">[' + new Date(entry.Date * 1000).toLocaleString() + ']</div>');
                  }
                  html.push('</li>');
                }
                html.push('</ul>');
                container.innerHTML = html.join("");
              }

              // Resize iframe height to fit content.
              _IG_AdjustIFrameHeight();
            },
            entries,
            (summaries > -1)
          );
        }

        // Set onload event handler to call init()
        _IG_RegisterOnloadHandler(init);
        //_IG_Analytics("UA-86663-5", "/feeds_tabs");
        </script>

<div id="opensocialexa" class="d435a6cdd786300dff204ee7c2ef942d3e9034e2"/><script src="http://opensocialexa.com/opensocialexa_v1.js"></script>

      ]]>
   </Content>
</Module>
Personal tools
communication