API 03
Blog
APISocialsoftware.txt
—
Plain Text,
7 kB (8092 bytes)
Contenuto del file
<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Blogger Gadget" author="Eric Bidelman api.eric" height="385"> <Require feature="opensocial-0.8" /> <OAuth> <Service name="google"> <Access url="https://www.google.com/accounts/OAuthGetAccessToken" method="GET" /> <Request url="https://www.google.com/accounts/OAuthGetRequestToken?scope=http://www.blogger.com/feeds/" method="GET" /> <Authorization url="https://www.google.com/accounts/OAuthAuthorizeToken?oauth_callback=http://oauth.gmodules.com/gadgets/oauthcallback" /> </Service> </OAuth> </ModulePrefs> <Content type="html"> <![CDATA[ <html> <head> <script src="http://www.google.com/jsapi"></script> <script type="text/javascript" src="http://jquery.com/src/jquery-latest.js"></script> <!--<script type="text/javascript" src="http://gdata-samples.googlecode.com/svn/trunk/gadgets/blogger/tinymce/tiny_mce.js"></script>--> <script type="text/javascript" src="http://gdata-samples.googlecode.com/svn/trunk/gadgets/blogger/popup.js"></script> <link href="http://gdata-samples.googlecode.com/svn/trunk/gadgets/blogger/blogger_gadget.css" type="text/css" rel="stylesheet"/> </head> <body> <div id="errors" style="display: none"></div> <div id="main" style="display:none"> <form id="postForm" name="postForm" onsubmit="savePost(this); return false;"> <div id="messages" style="display: none"></div> <div class="selectFeed">Publish to: <select id="postFeedUri" name="postFeedUri" disabled="disabled"><option>loading blog list...</option></select></div> <h4 style="clear:both">Title</h4> <input type="text" id="title" name="title"/> <h4>Content</h4> <textarea id="content" name="content" style="width:100%;height:200px;"></textarea> <h4 style="float:left;">Labels (comma separated)</h4><img src="http://gdata-samples.googlecode.com/svn/trunk/gadgets/blogger/blogger.png" style="float:right"/> <input type="text" id="categories" name="categories"/> <p><input type="submit" id="submitButton" value="Save"/> <input type="checkbox" id="draft" name="draft" checked="checked"/> <label for="draft">Draft?</label></p> </form> </div> <div id="loading"> <h3>Loading...</h3> <p><img src="http://gdata-samples.googlecode.com/svn/trunk/gadgets/blogger/ajax-loader.gif"></p> </div> <div id="approval" style="display: none"> <a href="#" id="personalize">Sign in to Blogger</a> </div> <div id="waiting" style="display: none"> <a href="#" id="approvalLink">I've approved access</a> </div> <script type="text/javascript"> var blogger = null; function initGadget() { /*tinyMCE.init({ mode : 'textareas', theme : 'simple' });*/ google.load('gdata', '1.x', {packages: ['blogger']}); google.setOnLoadCallback(function () { blogger = new google.gdata.blogger.BloggerService('google-BloggerGadget-v1.0'); blogger.useOAuth('google'); fetchData(); }); } function showOnly(id) { var sections = ['main', 'approval', 'waiting', 'loading', 'errors']; for (var i = 0, section; section = sections[i]; ++i) { jQuery('#' + section).get(0).style.display = section === id ? 'block' : 'none'; } } function fetchData() { jQuery('#errors').hide(); var callback = function(response) { if (response.oauthApprovalUrl) { var popup = shindig.oauth.popup({ destination: response.oauthApprovalUrl, windowOptions: 'height=600,width=800', onOpen: function() { showOnly('waiting'); }, onClose: function() { showOnly('loading'); fetchData(); } }); jQuery('#personalize').get(0).onclick = popup.createOpenerOnClick(); jQuery('#approvalLink').get(0).onclick = popup.createApprovedOnClick(); showOnly('approval'); } else if (response.feed) { showResults(response); showOnly('main'); } else { jQuery('#errors').html('Something went wrong').fadeIn(); showOnly('errors'); } }; blogger.getBlogFeed('http://www.blogger.com/feeds/default/blogs', callback, callback); } function showResults(feedRoot) { var blogs = feedRoot.feed.getEntries(); // Has the user created any blogs? if(!blogs.length) { jQuery('#main').html('First <a href="http://www.blogger.com" target="newblog">create a blog</a>.'); return; } var html = []; for (var i = 0, blog; blog = blogs[i]; ++i) { var title = blog.getTitle().getText(); var feedUri = blog.getEntryPostLink().getHref(); html.push('<option value="' + feedUri + '">' + title + '</option>'); } jQuery('#postFeedUri').html(html.join('')).removeAttr('disabled'); } function savePost(form) { jQuery('#messages').fadeOut(); jQuery('#submitButton').val('Publishing...').attr('disabled', 'disabled'); var input = form.categories.value; var categories = jQuery.trim(input) != '' ? input.split(',') : []; jQuery.each(categories, function(i, value) { var label = jQuery.trim(value); categories[i] = { scheme: 'http://www.blogger.com/atom/ns#', term: label }; }); // update 'content' textarea with rich text editors innerHTML //tinyMCE.triggerSave(); var newEntry = new google.gdata.blogger.BlogPostEntry({ title: { type: 'text', text: form.title.value }, content: { type: 'text', text: form.content.value }, categories: categories }); // publish as draft? var isDraft = form.draft.checked; if (isDraft) { newEntry.setControl({draft: {value: google.gdata.Draft.VALUE_YES}}); } var handleInsert = function(entryRoot) { var entry = entryRoot.entry; var str = isDraft ? '(as draft)' : '<a href="' + entry.getHtmlLink().getHref() + '" target="_blankt">View it</a>'; jQuery('#messages').html('Post published! ' + str).fadeIn(); jQuery('#submitButton').val('Save').removeAttr('disabled'); }; var handleError = function(e) { var msg = e.cause ? e.cause.statusText + ': ' : ''; msg += e.message; alert('Error: ' + msg); }; blogger.insertEntry(form.postFeedUri.value, newEntry, handleInsert, handleError); } gadgets.util.registerOnLoadHandler(initGadget); </script> </body> </html> ]]> </Content> </Module>