Salta ai contenuti. | Salta alla navigazione

Strumenti personali

API 03

Blog

Plain Text icon 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>