Quantcast
Channel: Recent posts across whole site
Viewing all articles
Browse latest Browse all 49206

Extending DrupalGapps: Google Apps Admin Settings API, Reporting API and Google Documents List API Integration

$
0
0

Overview

The project aims at extending the DrupalGapps (Google Apps Framework for Drupal) module by:

  1. Improving and adding more features to existing DrupalGapps API.
  2. Developing wrappers and applications (as modules) for Google's service-specific APIs by using the DrupalGapps API.

State of DrupalGapps Framework (module)

DrupalGapps Framework is a project that aims at seamlessly integrating Google Apps with Drupal.

DrupalGapps has two major components:

  1. DrupalGapps Core: the core consists of wrapper APIs. Each wrapper API is built by wrapping up individual Google Apps API. Currently, the core wrapps:
  • Google Provisioning API
  • Google Authentication API (via OAuth)
  • DrupalGapps Application Modules: a package of sub-modules built using DrupalGapps Core API and Drupal API to further integrate Google Apps. Currently, following sub-modules exist:
    1. DrupalGapps UI: this was developed by Stella using DrupalGapps API. It provides the user interface to manage Google Accounts.

    The DrupalGapps module was written by Ankur Saxena (flyankur) as his project for Google Summer of Code 2009.

    Currently, the DruaplGapps module is available for Drupal 6.

    Development & The Way Forward

    This project aims to take DrupalGapps in the following direction:

    1. Extension of DrupalGapps to seamlessly integrate Google Apps with Drupal.
    2. Integration of all the Google Apps Domain & Management APIs in the DrupalGapps Core.
    3. Providing appropriate API for the above integration so that further development on DrupalGapps could be done.
    4. Waiving off the need to open the actual Google Apps management interface for any sort of administration purpose and hence, making Google Apps completely available in Drupal.
    5. Development of modules to integrate Google Apps Application APIs to get Google Apps services working in Drupal.

    Scope Of Work

    1. Integration of Domain Info & Management APIs into DrupalGapps Core to completely enable Drupal for Google Apps management and administration.
    • Development of registration module for Drupal and Google Apps Account integration.
    • Integration of Admin Settings API.
    • Integration of Reporting API.
  • Development of separate modules for Google Apps service-specific APIs to make Google Apps Services available in Drupal.
    • Wrapper API and UI for Google Documents List API.
    • Wrapper API and UI for Google Calendar Data API.

    Description

    Following are the goals of this project in detail:

    1. Feature addition to DrupalGapps Core:
      1. Registration Module
        1. The module will provide an application over DrupalGapps API which will add to Drupal’s current registration system by giving space for Google Apps account registration with Drupal user registration.
        2. This module will be very flexible, so as to accommodate the varying needs of administrators.
        3. The feature will come with appropriate UI for easy management.
        4. Usefulness:
    • This can ease the process of Google Apps Deployment and user account creation via Drupal.
    • Integration of Drupal and Google Apps account. This can also extend to Single Sign-On.
  • Admin Settings API
    1. This module will provide all the Google Apps Admin Panel features in Drupal:
    • General Domain Settings like language settings, organization name, number of current users, appearance settings, etc.
    • Administrator account settings management like changing secondary email address, retrieval of support PIN, etc.
  • Usefulness:
    • This will take DrupalGapps in the direction where complete Google Apps administration would become possible in Drupal.
    • Can be very handy for administrators.
  • Reporting API
    1. This module will provide usage reports on your Google Apps Domain's hosted accounts.
    • General reports like account reports, activity reports, disk space reports, etc. will be fetched and formatted for display.
    • Further, if time is left, Reporting Visualization API can also be implemented.
  • Usefulness:
    • Can be very handy for administrators as on the basis of usage, administrators will be able to administer their Google Apps Domain via Drupal itself (as Admin Settings API will also be available in Drupal).
  • Integrating Google Apps Applications by building wrapper API and applications for:
    1. Google Documents List API
      1. Retrieving lists of documents.
      2. Document searching according to selected criteria (document type, keywords, private/public/shared, folder-wise).
      3. Downloading and uploading documents.
      4. Other actions on documents like renaming, deletion, etc.
      5. Folder creation and deletion.
      6. Document and folder sharing.
      7. Integration with Views API.
      8. This module will be a separate module and will be dependent on DrupalGapps and Views.
      9. Google Docs like view and interface:
    • This will be an implementation of the module which will be a part of the module. This has been chosen as this is the most general form in which Google Docs is used. This will make this module ready-for-use with least amount of work required by administrators to do to kickstart.
  • UI for management and administration:
    • Only for administrators.
    • Would be used to turn on/off different features.
  • Usefulness:
    • Direct uploading of documents from Drupal to Google Docs. This will greatly reduce the storage space burden from the server by using the free file storage service provided by Google Docs. The file attached to a node will be linked to the file that user’s Google Docs account.
    • Opening attached documents in a node in Google Docs directly.
    • Filtering of only required data that will be retrieved from a particular Google Docs account will become easy. This will add amazing flexibility in terms of serving to various use cases.
    • The aim would be to achieve the above mentioned task by integrating this module with Views API.
  • Google Calendar Data API
    1. Retrieve event entries from Google Calendars account.
    2. Add events.
    3. Update/delete events.
    4. Filtering events according to various criteria (like date range, month, year, text query)
    5. Sharing calendars.
    6. Complete Access Control management.
    7. Exporting calendars to specific formats.
    8. Integration with Drupal's Calendar module.
    9. Integration with Views API.
    10. This module will be a separate module and will be dependent on DrupalGapps, Views and Calendar.
    11. Google Calendar like view and interface:
    • This will be an implementation of the module which will be a part of the module. This has been chosen as this is the most general form in which Google Calendars is used. This will make this module ready-for-use with least amount of work required by administrators to do to kickstart.
  • UI for management and administration:
    • Only for administrators.
    • Would be used to turn on/off different features.
  • Usefulness:
    • Sharing of Google Calendars between different users in a domain via Drupal can prove to be a good use case. For example, in an organizations, a particular department can be responsible for making the annual calendar and so the people working in that department should have read/write/update access to the calendar whereas people working in other departments should only have viewing rights.
    • Extraction of events and their respective information from the calendar into nodes can be very useful. This feature will be achieved by integrating this module with View API.

    The registration module, Admin Settings API and Reporting API are going to be in DrupalGapps Core and Google Documents List API will be implemented as a separate module. Due to lack of time, other service-specific APIs will not be worked upon. But the Google Documents List API integration module will be developed and documented in such a way that it will help the community to develop for integrating other Google Apps service-specific with ease.

    Check the following image to see the current state of DrupalGapps and what I wish to achieve by doing this project.

    Use Cases

    1. Registration Module
    • Synchronization of Drupal's User Registration (User Core Module) with Google Apps.
    • Single Sign-On with Google Apps account (with Google Apps username and password and not with OpenID).
  • Admin Settings API
    • With almost all the Google Apps control panel features available for administration, this module can be very useful for administrators.
    • Managing general domain settings like language settings, organization info, administrator's account info, etc. would become very easy.
    • Changing email routing settings, gateway settings and email migration settings using Drupal.
    • Updating CNAME, MX Records settings using Drupal.
    • With all this in place, why would an administrator need to access Google Apps interface again? Only when other APIs are not present in DrupalGapps Core and that will happen over the time as the community starts finding this piece of work useful.
  • Reporting API
    • With Admin Settings API in place, Reporting API can be very useful.
    • Reporting API will provide detailed reports on how a particular Google Apps Domain is being used by people. These reports are detailed and very informative for administrators. These reports retrieved from Google Apps will be in text format. However, in raw format all the data that is fetched from Google are Atom feeds. The wrapper API for Reporting API will provide so much flexibility such that (for example) a developer will also be able to write a new module to present reports in the form of graphs or other visual form.
  • Google Documents List API
    • Attach docs, spreadsheets, PDFs, diagrams any type of file on your node. This will be very useful in cases of collaborative websites built on Drupal.
    • Ability to open attached files in Drupal's node directly in Google Docs (similar to what Gmail does for viewing docs attached in emails). This would take Google Docs integration deeper and will give smoother experience. No doubt, Drupal will become the preferred CMS when Google Apps integration will be in question.
    • Creating, deleting, retrieving, searching documents that match specific criteria or metadata will be very useful.
    • Sharing of Google Docs according to Drupal's Groups and rules can be prove to be very useful as one wouldn't need to manage each and every file by manually logging in to Google Docs. Everything will be available in Drupal!
    • Views – successful integration of Views API would prove to provide a lot of flexibility. One or more documents could be filtered and formatted and attached to any node/block in Drupal.
  • Google Calendar Data API
    • Creating, deleting, retrieving, searching of events directly from Drupal can be a part of a lot of use cases, especially in case of collaboration platforms.
    • Drupal websites, which already use Drupal's Calendar Module, will find it easy to migrate to DrupalGapps Calendar Module as this module will make use of Drupal's Calendar Module only to display Google Calendar's events.
    • With complete access control management and calendar/event sharing features available, this module can earn a lot of interest from administrators managing collaboration platforms or websites for organization and corporate houses where only certain people have should have rights to read/write/update calendar events and everyone else must have permission to read only. Integrating this module with Drupal's Groups module will make management even more simpler.

    The above mentioned are only a few use cases as example. There can be numerous use cases.

    Profit to Drupal

    Google Apps, now, is used by numerous businesses, educational institutes and organizations the world over. The numbers are increasing by the day and are running in millions. The community can expect many advantages out of this project:

    1. Drupal’s functionality will increase and could be put to many practical uses with Google Apps built over the Drupal API.
    2. Some organizations (like an NGO, universities for Learning Management Systems, some community libraries) are already using DrupalGapps for collaboration. With further development, these organizations will get motivated to use Drupal for integrating Google Apps for collaboration and can benefit and put to use many practically useful services offered by Google Apps.
    3. This development would also encourage the community to use Drupal when Google Apps is in question.
    4. No doubt Drupal will become one of the most famous and preferred CMS for using Google Apps for collaboration.
    5. Further, this project will will encourage the community to develop modules for integrating other Google Apps Services and widen the possibilities of what Drupal and Google Apps can together do.

    Timeline

    1. Tasks before May 23, 2011
    • Setup Google Apps Working Base.
    • Study Google Data Protocol.
    • Study Google Admin Settings API, Reporting API, Google Documents List API.
    • Understand the Drupal Registration System.
  • Milestone 1 – planning, designing and prototyping for extending DrupalGapps Core
    • May 23, 2011 to May 30, 2011 – brainstorming, planning and deciding the integration methods to be used. The end-result will be a complete design and prototype to summarize the entire project.
  • Milestone 2 – development of registration module, building wrappers for Admin Settings API and UI development. Integrating all this in DrupalGapps Core.
    • May 31, 2011 to July 8, 2011 – development of registration module and wrapper API for Admins Settings API. Development of UI for administration.
    • July 9, 2011 to July 12, 2011 – testing, debugging and detailed documentation.
  • Milestone 3 – building of wrapper for Reporting API and development of DrupalGapps application modules for Google Apps service-specific APIs.
    • July 15, 2011 to July 22, 2011 – development of wrapper API for Reporting API. Development of UI as well.
    • July 23, 2011 to August 19, 2011 – development of wrapper API for Google Documents List API (including integration with Views API) and development of its application module i.e. Google Docs like view and interface and UI for administration. If time is left, begin work on developing wrapper API for Google Calendar Data API.
    • August 18, 2011 to August 22, 2011 – final testing, debugging and detailed documentation.

    Deliverables

    1. Registration Module. UI for administration.
    2. Wrapper API for Admin Settings API. UI for administration. This will be an extension of existing DrupalGapps Core.
    3. Wrapper API for Reporting API. UI for administration.. This will be an extension of existing DrupalGapps Core.
    4. Wrapper API for Google Documents List API. Application module with application interface similar for Google Docs' interface. UI for administration.
    5. Wrapper API for Google Calendar Data API (only if time is left).

    Level of Difficulty

    Medium

    Mentors

    Looking for mentors.

    Motivation to do this project

    I have been working on Drupal for last four months and have been using it to develop small projects for personal interests and friends. The community has been very instrumental in helping me learn and grow as a Drupal developer and with Google Summer of Code 2011 ahead, I think its time for me to contribute something back to the community.

    I had designed an Object Oriented Model to implement Documents List API for searching, uploading, deleting and renaming files stored in Google Docs as a college project last year. Since it was a college project and there were restrictions like use of particular design patterns, object oriented programming, etc., I was not able to implement the idea for a practical use. With a module like DrupalGapps out there, I can, now, implement idea which could be put to a better and practical use. Besides this, the DrupalGapps module was written by Ankur Saxena, who is my senior and mentor in college. He has been a source of motivation for me to do this project and complete what he had started in Google Summer of Code 2009.

    This project will extend the capabilities of the existing DrupalGapps module by using the existing framework and APIs and package Google service-specific modules with the DrupalGapps module, resulting in a complete package for Google Apps management and utilization in Drupal. The community has already benefited from the DrupalGapps module. As of last year, it was being used by an NGO for integration of Google Wave into their website, Learning Management Systems developed using Drupal, some community libraries, etc. After completion of this project, the community and organizations world over will be further motivated to use Drupal as the CMS when Google Apps integration is in question.

    About Me

    I am Vaidik Kapoor and I am currently pursuing B. Tech. in Computer Science Engineering from JIIT, Noida, India. I am an active member of the Open Source Community in my college and city. I have been taking part in many open source meet ups and events (including Drupal's) in and around the city I live in. I like programming and web development. In my free time, I write utility scripts. I, with three friends, formed a group of freelancers called INK Liquid Designing a year back. I did some web development and design projects with INK. While I worked on these projects, I used a lot of open source technologies like Wordpress, PHP, etc and recently I shifted to Drupal. All the associated communities have helped me immensely and that's why I think that it is time I should contribute back. I blog at www.vaidikkapoor.info.

    Email: kapoor.vaidik@gmail.com


    Viewing all articles
    Browse latest Browse all 49206

    Trending Articles