Skip to content

Instantly share code, notes, and snippets.

@ftherese
Created October 30, 2009 20:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ftherese/222686 to your computer and use it in GitHub Desktop.
Save ftherese/222686 to your computer and use it in GitHub Desktop.
<Module>
<ModulePrefs title="My Google Book Search Library"
author="Guillaume P., Stavan P."
author_location="Mountain View, CA"
author_affiliation="Google, Inc."
author_email="booksgadget.feedback+library_gadget@gmail.com"
description="Search for and preview books all from the comfort of iGoogle.
Create a Library and receive personalized book recommendations. Review
books and help others to find amazing things to read."
screenshot="http://www.google.com/ig/modules/books/library_gadget.png"
thumbnail="http://www.google.com/ig/modules/books/library_gadget-thm.png"
directory_title="My Google Book Search Library"
title_url="http://books.google.com/"
height="300">
<Require feature="views"/>
<Require feature="dynamic-height"/>
<Require feature="setprefs"/>
<Require feature="analytics"/>
<Require feature="wave" />
<OAuth>
<Service name="google">
<Access
url="https://www.google.com/accounts/OAuthGetAccessToken"
method="GET" />
<Request
url="https://www.google.com/accounts/OAuthGetRequestToken?scope=http://books.google.com/books/feeds/"
method="GET" />
<Authorization
url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauthcallback"/>
</Service>
</OAuth>
</ModulePrefs>
<UserPref name="show_tos" default_value="true" datatype="hidden" />
<Content type="html">
<![CDATA[
><link rel="stylesheet" type="text/css" href="http://www.google.com/ig/modules/books/library_gadget.css" />
This gadget requires new iGoogle features to function. Please come back soon!
In the meantime here is a
<A href="http://books.google.com" target="blank_">link to Google Book Search</A>.
]]>
</Content>
<Content type="html" view="home">
<![CDATA[
><link rel="stylesheet" type="text/css" href="http://www.google.com/ig/modules/books/library_gadget.css" />
<script type="text/javascript">
selectTab = function(tab) {
tabs_.showTab(tab);
};
selectLastTab = function() {
tabs_.showLastTab();
};
</script>
<script type="text/javascript">
var shindig = shindig || {};
shindig.oauth=shindig.oauth||{};
shindig.oauth.popup = function(options){
if(!("destination"in options))
throw"Must specify options.destination";
if(!("windowOptions"in options))
throw"Must specify options.windowOptions";
if(!("onOpen"in options))
throw"Must specify options.onOpen";
if(!("onClose"in options))
throw"Must specify options.onClose";
var destination = options.destination,
windowOptions = options.windowOptions,
onOpen = options.onOpen,
onClose = options.onClose,
win=null,
timer=null;
function handleApproval(){
if(timer){
window.clearInterval(timer);
timer = null}
if(win){
win.close();
win=null}
onClose();
return false}
function checkClosed(){
if(!win||win.closed){
win=null;
handleApproval()}}
function createOpenerOnClick(){
return function(){
if(win = window.open(destination, "_blank", windowOptions)){
timer=window.setInterval(checkClosed,100);
onOpen()}
return false}}
function createApprovedOnClick(){
return handleApproval}
return{
createOpenerOnClick:createOpenerOnClick,
createApprovedOnClick:createApprovedOnClick}};
</script>
<script src="http://www.google.com/jsapi"></script>
<script src="http://www.google.com/ig/modules/books/library_gadget.js"
type="text/javascript"></script>
<script type="text/javascript">
var loadGadget = function() {
window.tabs_ = new _OC_tabs('tab', 'main_tab');
_OC_loadGadget(window.tabs_);
};
var setup = function() {
google.load('gdata', '1.x', {packages: ['core']});
google.setOnLoadCallback(loadGadget);
};
gadgets.util.registerOnLoadHandler(loadGadget);
</script>
<div id="minimized_gadget_contents">
<table><tr>
<td style="width:100%">
<input id="booksearch_box_mini" class="booksearchbox" type="text" style="width:100%">
</td><td>
<input id="booksearch_button_mini" value="Search books" type="button"
style="margin-bottom:8px;margin-left:5px">
</td>
</tr></table>
<!-- Not on GGS tab -->
<div id="not_on_ggs_tab" class="tab">
This gadget requires upcoming iGoogle features to function. Please check
back again in the coming weeks.
In the meantime here is a
<A href="books.google.com">link to Google Book Search</A>.
</div>
<!-- OAuth Approval tab -->
<div id="oauth_approval_tab" class="tab">
Keep track of your books and receive personalized recommendations by
<a id="personalize"
onclick="selectTab('oauth_waiting_tab')"
target="approve">creating your own library</a>.
Your comments and book reviews will be public on your own custom page.
You may remove your data at any time. <a href="http://books.google.com/support/bin/answer.py?answer=75375">Learn more</a>.
</div>
<!-- OAuth Waiting tab -->
<div id="oauth_waiting_tab" class="tab">
Please click
<a id="approvaldone" onclick="_OC_oauthApproved('main_tab')">I've approved
access</a> once you've approved access to your data.
</div>
<!-- Main tab -->
<div id="main_tab" class="tab">
<div class="gadget_contents">
<div class="friends_panel_mini" style="display:none">
<div class="line"></div>
<div class="bookheading">
<span class='action' onclick="_OC_switchToCanvasView('friends_books_tab')">Friends'
books</span>
</div>
<div id='friends_picks_mini'></div>
</div>
<div class="bookheading">
<span class='action' onclick="_OC_switchToCanvasView('recommendations_tab')">
Recommendations</span>
</div>
<div id='recommendations_mini'></div>
<div class=line></div>
<div id='loading_mini' class='loading'></div>
<div id='my_books_mini'>
<span class='action' onclick="_OC_switchToCanvasView('currently_reading_tab')">
View my library &raquo;</span>
</div>
</div>
</div>
</div>
]]>
</Content>
<Content type="html" view="canvas">
<![CDATA[
><link rel="stylesheet" type="text/css" href="http://www.google.com/ig/modules/books/library_gadget.css" />
<script type="text/javascript">
selectTab = function(tab) {
tabs_.showTab(tab);
};
selectLastTab = function() {
tabs_.showLastTab();
};
</script>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
var shindig=shindig||{};shindig.oauth=shindig.oauth||{};
shindig.oauth.popup=function(options){if(!("destination"in options))throw"Must specify options.destination";if(!("windowOptions"in options))throw"Must specify options.windowOptions";if(!("onOpen"in options))throw"Must specify options.onOpen";if(!("onClose"in options))throw"Must specify options.onClose";var destination=options.destination,windowOptions=options.windowOptions,onOpen=options.onOpen,onClose=options.onClose,win=null,timer=null;function handleApproval(){if(timer){window.clearInterval(timer);timer=
null}if(win){win.close();win=null}onClose();return false}function checkClosed(){if(!win||win.closed){win=null;handleApproval()}}function createOpenerOnClick(){return function(){if(win=window.open(destination,"_blank",windowOptions)){timer=window.setInterval(checkClosed,100);onOpen()}return false}}function createApprovedOnClick(){return handleApproval}return{createOpenerOnClick:createOpenerOnClick,createApprovedOnClick:createApprovedOnClick}};
</script>
<script type="text/javascript">
var enable_viewport_ = true;
if (enable_viewport_) {
// Viewport integration...
// TODO(gponcin) this is experimental, fix it up!
// load Google Booksearch API version '0' but the api is loaded
// print-demo instead of live site.
var params = {other_params: "host=books.google.com"};
google.load('books', '0', params);
function load_viewport(identifier, viewport_div_id) {
var viewport_div = document.getElementById(viewport_div_id);
viewport_div.innerHTML = 'Loading...';
var viewer = new google.books.DefaultViewer(viewport_div);
viewer.load(identifier);
}
}
</script>
<script src="http://www.google.com/ig/modules/books/library_gadget.js" type="text/javascript"></script>
<script type="text/javascript">
var loadGadget = function() {
var params = gadgets.views.getParams();
var tab = 'currently_reading_tab';
if (params) {
var tabParam = params['tab'];
if (tabParam) tab = tabParam;
};
window.tabs_ = new _OC_tabs('tab', tab);
_OC_loadGadget(window.tabs_);
};
var setup = function() {
google.load('gdata', '1.x', {packages: ['core']});
google.setOnLoadCallback(loadGadget);
};
gadgets.util.registerOnLoadHandler(loadGadget);
</script>
<div class="maximized_gadget_contents">
<!-- Search box -->
<input id="booksearch_box" class="bigbooksearchbox" type="text">
<input value="Search books" id="booksearch_button" type="button"
style="margin-bottom:8px;">
<!-- Not on GGS tab -->
<div id="not_on_ggs_tab" class="tab">
This gadget requires upcoming iGoogle features to function. Please check
back again in the coming weeks.
In the meantime here is a
<A href="books.google.com">link to Google Book Search</A>.
</div>
<!-- OAuth Approval tab -->
<div id="oauth_approval_tab" class="tab">
Keep track of your books and receive personalized recommendations by
<a id="personalize"
onclick="selectTab('oauth_waiting_tab')"
target="approve">creating your own library</a>.
Your comments and book reviews will be public on your own custom page.
You may remove your data at any time. <a href="http://books.google.com/support/bin/answer.py?answer=75375">Learn more</a>.
</div>
<!-- OAuth Waiting tab -->
<div id="oauth_waiting_tab" class="tab">
Please click
<a id="approvaldone" onclick="_OC_oauthApproved('currently_reading_tab')">I've approved access</a>
once you've approved access to your data.
</div>
<!-- Message Div -->
<div class="status" id="status_div"></div>
<!-- Main tab -->
<div id="currently_reading_tab" class="tab">
<div class="bigbookheading">My books</div>
<div class="element" style="display:none;">
<div class="subheading">Currently reading:</div>
<div id='my_books_reading'></div>
<div class="element"></div>
</div>
<div class="element">
<div class="subheading" style="display:none">Other books in my library:</div>
<div id='my_books_library'></div>
</div>
<div class="element">
<span class='action' onclick="selectTab('all_read_books_tab')">
All books in my library &raquo;</span>
</div>
<div class="friends_panel" style="display:none">
<div class="line"></div>
<div class="bigbookheading">Friends' books</div>
<div class="element">
<div id='friends_books'></div>
</div>
<div class="element">
<br>
<span class='action' onclick="selectTab('friends_books_tab')">
All friends with books &raquo;</span>
</div>
</div>
<div class="line"></div>
<div class="bigbookheading">Recommended books</div>
<div class="element">
<div id='recommendations'></div>
</div>
<div class="element">
<br>
<span class='action' onclick="selectTab('recommendations_tab')">
More recommendations &raquo;</span>
</div>
</div>
<!-- Book tab -->
<div id=book_tab class="tab">
<div style="padding-bottom:10px;">
<span class="action" onclick="selectLastTab()">&laquo;
Back</span>
</div>
<table cellpadding="0" cellspacing="5"><tr><td width="130">
<div id='book_thumbnail'></div>
<div id='my_book_rating' style='padding-left:20px'></div>
</td><td style='padding-left:5px;padding-right:15px'>
<div id='book_metadata'></div>
<div id="review_rating_panel">
<div class="action reviewheading" id="my_book_review_header">
Review
</div>
<div id="my_book_review_content" class="element">
<textarea id='review_text' rows=5 style='width:100%'></textarea><br>
<input type=button id='publish_review_button' value='Publish review'>
</div>
</div>
</td></tr></table>
<div id='book_viewport'>
<div class=element><div class=line></div></div>
<div id="viewport"> The viewport has not loaded.</div>
</div>
<div style="padding-top:10px;">
<span class="action" onclick="selectLastTab()">&laquo;
Back</span>
</div>
</div>
<!-- Search tab -->
<div id="search_books_tab" class="tab">
<div style="padding-bottom:10px;">
<span class="action" onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
<div id='search_results'></div>
<div style="padding-bottom:10px;">
<span class='action' onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
</div>
<!-- Friend's books -->
<div id="friends_books_tab" class="tab">
<div style="padding-bottom:10px;">
<span class="action" onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
<div class="element">
<div id='all_friends_books'></div>
</div>
<div class="element">
<div style="padding-bottom:20px;"></div>
<div style="padding-bottom:10px;">
<span class='action' onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
</div>
</div>
<!-- Books I read -->
<div id="all_read_books_tab" class="tab">
<div style="padding-bottom:10px;">
<span class="action" onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
<div class="bigbookheading" style="margin-top:-6px;">Books in my
Library</div>
<div class="element">
<div id='all_books'></div>
</div>
<div class="element">
<div style="padding-bottom:20px;"></div>
<div style="padding-bottom:10px;">
<span class='action' onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
</div>
</div>
<!-- Recommended books -->
<div id="recommendations_tab" class="tab">
<div style="padding-bottom:10px;">
<span class="action" onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
<div class="bigbookheading" style="margin-top:-6px;">Recommended books</div>
<div class="element">
<div id='all_recommendations'></div>
</div>
<div class="element">
<div style="padding-bottom:20px;"></div>
<div style="padding-bottom:10px;">
<span class='action' onclick="selectTab('currently_reading_tab')">&laquo;
Back to all books</span>
</div>
</div>
</div>
</div>
]]>
</Content>
</Module>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment