OSE Microfunding Proposal/Implementation: Difference between revisions

From Open Source Ecology
Jump to navigation Jump to search
mNo edit summary
 
(28 intermediate revisions by 3 users not shown)
Line 142: Line 142:
You can view the current tasks in the [https://www.pivotaltracker.com/projects/335285 Pivotal project].
You can view the current tasks in the [https://www.pivotaltracker.com/projects/335285 Pivotal project].


==Badges==
'''We need urgently people''' to implement the Recognition, Share and Invited page.<br/>
* Check a demo for the embeddable badge: http://microfundingtest.openfarmtech.org/mywebsite.php
Please contact Nikolay : nikolay (at) opensourceecology.org
** Parameters:
 
*** id - true fan id
==Recognition Page==
*** name - if equals 1, then displays the name of the True Fan above the badge, otherwise not.
* Implement the Recognition in CiviCRM.
** TODO - make secure reading of the URL parameters
* One idea for implementation: make a new True Fans user profile.
* TODO - make a visualization of all OSE badges.
 
''Status'': Nick Person worked on it, but no status report from him.<br/>
''Need'': A person to implement it either individually or in team with Nick.<br/>
 
''Description'':<br/>
This page should be createable and editable only by the True Fan (and Administrators of course). He should be able to add a video (youtube, vimeo) of himself and write some text.<br/>
Under the text should come PayPal subscription.<br/>
The page should have a unique URL and be visible publicly.<br/>
<br/>
Note: there will be no badge and photo of the True Fan in the Recognition page in the first prototype!<br/>
<br/>
Technical Consideration:<br/>
* Please consider using CiviCRM Personal Campaigns: http://wiki.civicrm.org/confluence/pages/viewpage.action?pageId=35128166
* Research how best to do the recognition page - video + text + PayPal:
** with CiviCRM Personal Campaigns
** or as a new CiviCRM user profile
* Consider the connection with the Share and Invited page.
* Build a prototype example of the recognition page.




* Make a PHP Script (drupalroleusers.php) that takes the users from a Drupal installation with a specific Role (e.g. True Fan Role, or for testing we can take Administrator role) and saves in a CSV file (truefanusers.txt) the following information:
** ID
** Name
* Read in [http://microfundingtest.openfarmtech.org/truefan-badge.php truefan-badge.php] the names of the users from truefanusers.txt and display them correctly by their ID.


==PayPal==
==Share and Invited Page==
* Jacob Roufa is trying to integrate PayPal into the registration process of Drupal 7 users: http://www.deerwalk.com/PayPal-Integration-with-Drupal-7
* Implement the Share and Invited Page in CiviCRM.
** TODO - still getting bugs
* Eduardo's idea for implementation: use CiviCRM personal campaigns.
*** Using the [http://drupal.org/project/lm_paypal lm_paypal] module, a key function of the module (displaying the paypal button allowing users to subscribe to a role) is not working.
*** Block configuration found here : http://microfundingtest.openfarmtech.org/admin/structure/block/manage/block/1/configure (note: lm_paypal is currently disabled on the site)
*** Thread in Drupal.org project page issue queue here : http://drupal.org/node/733520
** Implementation without lm_paypal described in the Drupal Tasks section here : http://opensourceecology.org/wiki/OSE_Microfunding_Proposal/Implementation#Other_Drupal_tasks
==Paypal updates 6-27-11==
* Kelly Schutt completed basic Paypal integration. After completing the True Fan subscription payment, the user is automatically added to the True Fan role. We don't need an administrator to approve every account/payment this way.
** Overview of the Paypal subscription process
*** Custom microft module redirects user to Paypal for payment after registering account. Microft also passes custom_var to Paypal with Drupal User ID
*** Paypal connects to /paypalipn page and POSTs User ID variable. /paypalipn then save the user account with the additional True Fan role
**** Paypal should automatically redirect the user back to their profile page after payment, and the user should be logged in. Right now, the user has to click a button to be redirected and isn't automatically logged in.
* We still need to configure the registration process with a dropdown menu for different levels of True Fan support (e.g. $10/month vs $50/month)


==Design==
''Status'': Eduardo Riesco worked on it, but no status report from him. He will be available on 20. Sep for more info.<br/>
* Lukasz Jagodzinski is working on a Drupal theme, in an ose.org style and layout as definded in the wireframes.
''Need'': A person to implement it either individually or in team with Eduardo.<br/>


==Drupal Features Module==
==Badges==
'''Why?'''
* http://developmentseed.org/blog/2009/jul/09/development-staging-production-workflow-problem-drupal


==Other Drupal tasks==
''Status'': [[Michael McAndrew]] built on the work of [[Thomas Levine]] and made [http://microfundingtest.openfarmtech.org/badge.php badge.php] which has first and last name (if they are stored in CiviCRM).  This can be embedded as an iframe e.g. [http://microfundingtest.openfarmtech.org/mm.html mm.html]
* '''Show a text when certain fields are filled out'''
** We will need this for the Recognition page - when the video and text are filled out a text linking to the Share page should be displayed.
* '''True Fan status'''
** requested - a person has requested a True Fan status - An statusadmin should check whether there is a subscription by this
** true fan - the person is a True Fan
*** list of subscriptions - a True Fan can have more than one subscription, e.g. now $10, after few months $20.
*** from - the date of subscription
*** to - the date of unsubscription
*** amount - the amount of the subscription
* '''Configure Invite and User Relationships'''
** Allow users with the True Fan role to invite multiple friends
** Make sure the relationship shows between the invited and the invitee
*** Create a block using Views to show relationships
**** Make sure the block view uses arguments such that users are dynamic
**** Show block on Recognition, Share and Invited pages
** Note, Invite is still in -dev branch for D7. Module is working after applying patch found here : http://drupal.org/node/1054392#comment-4536388
* '''Create block to show all True Fans'''
** Show this block universally
** Block should just be list of True Fan users as their pictures
* '''Create block with PayPal button link to donate'''
** Show this block below main content on the True Fans page
** Block will show a standard PayPal button, let the user subscribe through PayPal and redirect him back to a Drupal user registration page. When he registers, he should have the status "True Fan Requested" (or similar) and an Administrator should approve it.
* '''Video embedding Support'''
** '''Enable Vimeo and others video providers for video embedding in Drupal 7'''
**'''Make quicker embedding of Videos in Drupal 7'''
*** Check this page: http://microfundingtest.openfarmtech.org/node/5
*** The user has to make 3 clicks for URL input - "Select media", "Web", "Submit". Can we make it with only 1?


=CiviCRM Tasks=
Check a demo for the embeddable badge: http://microfundingtest.openfarmtech.org/mm.html


You can find our CiviCRM configuration [[OSE_Microfunding_Proposal/Implementation/CiviCRM|here]]. It gives you the possibility of replicate and quickly review our design.
This displays the 'display name' in CiviCRM, which is based on the first and last name if present, and the email if it isn't.


* Review CiviCRM flow page.
===TODO===
* Theme CiviCRM pages and adjust layout. It has a template system similar to Drupal's.
TODO Tasks (Jask Sudyka may help us on that):
* Configure the reports for the CiviCRM Dashboard.
*remove the border in mm.html
* Redesign User Dashboard.
*put the name above the badge in a smaller font so that it fits the size (the name can be on two rows).
* Review standard CiviCRM messages to adapt it to True Fans and Donate campaign.
*performance - if the data (the first and last name) is read dynamically from the Database in the badge.php, please save all the names in a file and read them from there. My initial suggestion is a CSV file containing (id, first name, last name).
* Improve CiviCRM "Personal Campaign Pages" (our "Share Page"). This is by far the biggest task because we'll need to modify the CiviCRM core code. It's our opportunity to contribute the CiviCRM project improving it!
*security - make reading the Id in a secure way.
* ...
 
==Archived Tasks==
Here are the [[OSE_Microfunding_Proposal/Archived_Tasks|Archived Tasks]] which are not relevant to the current implementation. They are saved only for archive purposes.


=Team=
=Team=
Line 233: Line 208:
! scope="col" width="150" | Email
! scope="col" width="150" | Email
|-
|-
| [[Nikolay Georgiev]] || create tasks || [http://microfundingtest.openfarmtech.org/mywebsite.php Embeddable Badge] || project manager and web programmer (intermediate PHP and MySQL skills, but no PHP Framework experience, good CSS and Javascript skills) || [[Dedicated Remote Collaboration]] || nikolay (at) opensourceecology.org
| [[Nikolay Georgiev]] || find volunteers || || project manager || [[Dedicated Remote Collaboration]] || nikolay (at) opensourceecology.org
|-
|-
| Eduardo Riesco || CiviCRM integration || || PHP, MySQL, PostgreSQL/PostGIS, CSS, Java, Drupal, CiviCRM, Joomla  || part-time || eduardo.riesco (at) gmail (dot) com
| Eduardo Riesco || develop the Share and Invited Page || || PHP, MySQL, PostgreSQL/PostGIS, CSS, Java, Drupal, CiviCRM, Joomla  || part-time, after 20. Sep || eduardo.riesco (at) gmail (dot) com
|-
|-
| Lukasz Jagodzinski || creating Drupal Theme || Overall theme ready || PHP, CSS, JavaScript, Symfony, Java, MySQL || part-time || luke (dot) jagodzinski (at) gmail (dot) com
| Nick Person || Recognition Page in CiviCRM || || || part-time || person (dot) nick (at) gmail (dot) com
|-
|-
| Nick Person || Recognition Page in CiviCRM || || || part-time || person (dot) nick (at) gmail (dot) com
| Joe Hudson || concept evaluation and implementation || || || part-time || joe (dot) hudson (at) gmail (dot) com
|-
|-
| Jacob Roufa || PayPal integeration|| || Project Manager / Intermediate Developer : Drupal, CiviCRM, XHTML/HTML5, CSS, Javascript (jQuery library mostly), PHP, MySQL || DRC if available, part time if not || jacob.roufa@gmail.com
| Michael McAndrew || develop the embeddable badge || || CiviCRM, Drupal, non-profits, wwoofing || part-time || michaelmcandrew (at) thirdsectordesign (dot) org
|-
|-
| Kelly Schutt || || Blocks: OSE info, social sharing, Paypal integration || Graphic design, HTML/CSS, Drupal configuration, intermediate Javascript and PHP || part-time ||  
| [[Thomas Levine]] || develop the embeddable badge || || || part-time || thomas (dot) levine (at) gmail (dot) com
|-
|-
|}
|}
The people who are not currently working on the proposal, but who have helped with it, are:
'''[[Lukasz Jagodzinski]]'''<br/>
Done: created the OSE Drupal Theme<br/>
Contact: luke (dot) jagodzinski (at) gmail (dot) com<br/>
Skills: PHP, CSS, JavaScript, Symfony, Java, MySQL<br/>
'''Jacob Roufa'''<br/>
Done: created PayPal integration for Drupal 7<br/>
Contact: jacob (dot) roufa (at) gmail (dot) com<br/>
Skills: Project Manager / Intermediate Developer : Drupal, CiviCRM, XHTML/HTML5, CSS, Javascript (jQuery library mostly), PHP, MySQL<br/>
'''Kelly Schutt'''<br/>
Done: created PayPal integration for Drupal 7 and Blocks: OSE info, social sharing<br/>
Contact: Skype:kellyschutt <br/>
Skills: Graphic design, HTML/CSS, Drupal configuration, intermediate Javascript and PHP<br/>
=Team Communication=
== Communication Practices==
Here we outline some of the communication practices we should follow in order to work better in a team. A short explanation for each point is given, so that it is understandable. If there are further questions please ask Nikolay.
* '''Share your work status daily!'''
** HOW: Create a [[YourFirstName_Log]] page, add it to the Team Logs below and write what you have done and on which day. Do it everytime when you've worked on something. For example see [[Marcin Log]].
** REASON: Nikolay allowed that there is no communication on the status for few time periods (3-5 days each period) because he didn't want to stress people but the consequence was that nobody knew how the project was moving on! This should not happen!
* '''Share immediately when you have a problem stopping you from getting the work done!'''
** HOW: Send email to Nikolay.
** REASON: We should detect problems early, no matter what kind they are: technical (impossible or hard task) or personal (lack of time, new priorities). Communicating this is not bad, it is actually the best thing you could do so that the problems are known and we can react promptly to fix them, so please share immediately when you see a problem.
'''Stagnated task assumption''':
So with that said, if there is no communication of the status and no email communication within 3 days (more days only if communicated explicitly by the person), then it is assumed that the task is stagnated and help should be found.
== Google Group ==
We are communicating in https://groups.google.com/group/ose-microfunding
== Skype ==
Please choose your available time in Doodle for the next Skype call: http://doodle.com/9s6gvhunmzvvv68q
== Team Logs ==
* [[Nikolay Log]]
* [[Joe Log]]
* [[Eduardo Log]]
* [[Michael Log]]
* [[Jack Log]]
* [[FirstName Log]] <- add your Log page here

Latest revision as of 03:13, 19 October 2011

Terminology

Here is the common terminology:

  • TF = True Fan

Design

Wireframes

The wireframes of the proposal were implemented in Lumzy.

Development

PHP CMS (Content Management System)

We chose Drupal.

CRM (Contact Relationship Management)

We chose CiviCRM. (http://civicrm.org)

From the CiviCRM Web site:

CiviCRM is a free, libre and open source software constituent relationship management solution. CiviCRM is web-based, internationalized, and designed specifically to meet the needs of advocacy, non-profit and non-governmental groups. Integration with both Drupal and Joomla! content management systems gives you the tools to connect, communicate and activate your supporters and constituents.

We are specially interested in CiviContribute module (http://civicrm.org/civicontribute):

CiviContribute is an online fundraising and donor management component which enables you to track and manage contributions to your organization. It also allows you to quickly and easily create customized web pages to accept online donations. CiviContribute is fully integrated with CiviCRM, and creates or updates contact and donation records for all contributions, eliminating data entry time and errors.

Why we chose CiviCRM?

  • We don't want to reinvent.
  • It's an application orientated to non-profit microfunding improved during years for hundreds of developers.
  • It's installed over Drupal, so we can integrate it with our web page, web profiles, personal blogs, etc.
  • It has a lot of helpful tools around microfunding: bulk email by groups, reports, integration of events, contact and groups management, etc.

Resources:

Drupal Environments


Page Flow

Ose-microfunding-proposal-flow.png

True Fans Page

  • Description
    • Showing motivational content about OSE, its importance, tangible outcome, etc.
    • Allowing subscription.
  • Transitions
    • Recognition Page
      • Requirements: all data for the user is gathered: Name, Email, Subscription (verified, PayPal for now). This means that the user will be forwarded to PayPal, will subscribe, and then comes back to a page of ours - Recognition Page or a temporary page where he can fill out additional information (City, Country, ...) and after submitting these forwarded to the Recognition Page.
      • Effects: the user is added as a True Fan, an embeddable badge is created for him, email notifications is sent to him containing a link to the recognition page.
      • Final State: the user is logged in his Recognition Page
  • Design considerations
    • TODO by Alistair

Recognition Page

  • Description
    • If The True Fan is logged. Edit mode is available:
      • He sees his information and edit links for video, photo and text are available for clicking.
      • When he saves some information, he will be offered a link to the Share page.
    • If it is not the True Fan who is logged, or it is an anonymous user:
      • The person sees the information the True Fan has saved.
      • Under that is the TF subscription.
      • There is a login link somewhere (top-right?), so that if this is the TF itself, he can login to his page.
  • Transitions
    • Share Page
      • Requirements:
        • TF of the Recognition page should be logged
        • video or text should be filled out.
        • The TF clicks on the "Share page" link.
      • Effects: no
      • Final State: the TF is logged in the Share page.
  • Design Considerations
    • Add form inputs for user to link to their Twitter, Facebook accounts for use in sharing page.

Share Page

  • Description
    • If The True Fan is logged. Edit mode is available:
      • The TF writes the name, email of several of his friends, and clicking on each one of the added friends, he can add a personal video and text below. He can add/remove/edit friends and their data.
      • He can send the data either to one of his friends (maybe a button to the right of the email) or to all of them (asking for confirmation).
    • If it is not the True Fan who is logged, or it is an anonymous user:
      • the page is not accessible.
  • Transitions
    • Share Page
      • Requirements:
        • TF cliks on invite friend, or invite all friends.
      • Effects:
        • a notifications appears that the friend/s was/were successfully invited.
        • an email is sent to every invited friend, containing a link to the "Invited Page".
        • a link is offered back to his Recognition Page. In this case he can just open it (this transition understandable and will not be described).
      • Final State: the TF remains on the Share page.

Invited Page

  • Description
    • Everybody who has the link can access it, no difference between logged users and anonymous.
    • Shows the invitation of the TF to his friend.
    • Shows the TF subscription.
  • Transitions
    • Recognition Page
      • the same transition as in the True Fans Page

Strategy

Video

The videos can be

  • youtube video (easy to program, time-intensive for the user)
  • flash camera recorder (harder to program, quick to record for the user, lower quality)

We have the possibility of providing the user with two options:

  1. Past a link to a YoueTube video
  2. Record video from Flash and upload to YouTube using their developer API

If we rely on Option 2, we might bottleneck the development. It would make sense to build the functionality for Option 1 first and then begin working on a solution for Option 2 when the project is functionally complete.

Details of the YouTube's video uploads can be found here:

Replication

These are the steps required to replicate our implementation into another Drupal installation.

Prototype 1

  • A user opens the True Fans page Phttp://microfundingtest.openfarmtech.org/truefan
  • The user clicks the PayPal subscribe button, goes to PayPal, completes the subscription and gets redirected back to his True Fans profile (http://microfundingtest.openfarmtech.org/user#overlay=user/1/edit/true_fan) as logged in True Fan.
  • The True Fan edits his profile and clicks save. A text is shown with a link to create an Invitation content - http://microfundingtest.openfarmtech.org/user#overlay=node/add/invitation
  • The True Fan adds in the Invitation a video, text and a photo, clicks save, and then he is shown a "Invite by email" button (seen only by him, the author). He clicks it and an invitational email is sent to his friend containing a link to the Invitation page. Also a relationship is created between the True Fan and the friend.


Drupal Tasks

You can view the current tasks in the Pivotal project.

We need urgently people to implement the Recognition, Share and Invited page.
Please contact Nikolay : nikolay (at) opensourceecology.org

Recognition Page

  • Implement the Recognition in CiviCRM.
  • One idea for implementation: make a new True Fans user profile.

Status: Nick Person worked on it, but no status report from him.
Need: A person to implement it either individually or in team with Nick.

Description:
This page should be createable and editable only by the True Fan (and Administrators of course). He should be able to add a video (youtube, vimeo) of himself and write some text.
Under the text should come PayPal subscription.
The page should have a unique URL and be visible publicly.

Note: there will be no badge and photo of the True Fan in the Recognition page in the first prototype!

Technical Consideration:

  • Please consider using CiviCRM Personal Campaigns: http://wiki.civicrm.org/confluence/pages/viewpage.action?pageId=35128166
  • Research how best to do the recognition page - video + text + PayPal:
    • with CiviCRM Personal Campaigns
    • or as a new CiviCRM user profile
  • Consider the connection with the Share and Invited page.
  • Build a prototype example of the recognition page.


Share and Invited Page

  • Implement the Share and Invited Page in CiviCRM.
  • Eduardo's idea for implementation: use CiviCRM personal campaigns.

Status: Eduardo Riesco worked on it, but no status report from him. He will be available on 20. Sep for more info.
Need: A person to implement it either individually or in team with Eduardo.

Badges

Status: Michael McAndrew built on the work of Thomas Levine and made badge.php which has first and last name (if they are stored in CiviCRM). This can be embedded as an iframe e.g. mm.html

Check a demo for the embeddable badge: http://microfundingtest.openfarmtech.org/mm.html

This displays the 'display name' in CiviCRM, which is based on the first and last name if present, and the email if it isn't.

TODO

TODO Tasks (Jask Sudyka may help us on that):

  • remove the border in mm.html
  • put the name above the badge in a smaller font so that it fits the size (the name can be on two rows).
  • performance - if the data (the first and last name) is read dynamically from the Database in the badge.php, please save all the names in a file and read them from there. My initial suggestion is a CSV file containing (id, first name, last name).
  • security - make reading the Id in a secure way.

Archived Tasks

Here are the Archived Tasks which are not relevant to the current implementation. They are saved only for archive purposes.

Team

This is the Team working currently on the Proposal.

Microfunding IT Team
Name Current Tasks Finished Tasks Skills Commitment (DRC or part-time) Email
Nikolay Georgiev find volunteers project manager Dedicated Remote Collaboration nikolay (at) opensourceecology.org
Eduardo Riesco develop the Share and Invited Page PHP, MySQL, PostgreSQL/PostGIS, CSS, Java, Drupal, CiviCRM, Joomla part-time, after 20. Sep eduardo.riesco (at) gmail (dot) com
Nick Person Recognition Page in CiviCRM part-time person (dot) nick (at) gmail (dot) com
Joe Hudson concept evaluation and implementation part-time joe (dot) hudson (at) gmail (dot) com
Michael McAndrew develop the embeddable badge CiviCRM, Drupal, non-profits, wwoofing part-time michaelmcandrew (at) thirdsectordesign (dot) org
Thomas Levine develop the embeddable badge part-time thomas (dot) levine (at) gmail (dot) com


The people who are not currently working on the proposal, but who have helped with it, are:

Lukasz Jagodzinski
Done: created the OSE Drupal Theme
Contact: luke (dot) jagodzinski (at) gmail (dot) com
Skills: PHP, CSS, JavaScript, Symfony, Java, MySQL

Jacob Roufa
Done: created PayPal integration for Drupal 7
Contact: jacob (dot) roufa (at) gmail (dot) com
Skills: Project Manager / Intermediate Developer : Drupal, CiviCRM, XHTML/HTML5, CSS, Javascript (jQuery library mostly), PHP, MySQL

Kelly Schutt
Done: created PayPal integration for Drupal 7 and Blocks: OSE info, social sharing
Contact: Skype:kellyschutt
Skills: Graphic design, HTML/CSS, Drupal configuration, intermediate Javascript and PHP

Team Communication

Communication Practices

Here we outline some of the communication practices we should follow in order to work better in a team. A short explanation for each point is given, so that it is understandable. If there are further questions please ask Nikolay.

  • Share your work status daily!
    • HOW: Create a YourFirstName_Log page, add it to the Team Logs below and write what you have done and on which day. Do it everytime when you've worked on something. For example see Marcin Log.
    • REASON: Nikolay allowed that there is no communication on the status for few time periods (3-5 days each period) because he didn't want to stress people but the consequence was that nobody knew how the project was moving on! This should not happen!
  • Share immediately when you have a problem stopping you from getting the work done!
    • HOW: Send email to Nikolay.
    • REASON: We should detect problems early, no matter what kind they are: technical (impossible or hard task) or personal (lack of time, new priorities). Communicating this is not bad, it is actually the best thing you could do so that the problems are known and we can react promptly to fix them, so please share immediately when you see a problem.

Stagnated task assumption: So with that said, if there is no communication of the status and no email communication within 3 days (more days only if communicated explicitly by the person), then it is assumed that the task is stagnated and help should be found.

Google Group

We are communicating in https://groups.google.com/group/ose-microfunding

Skype

Please choose your available time in Doodle for the next Skype call: http://doodle.com/9s6gvhunmzvvv68q


Team Logs