Incorporated suggestions and updated design for Feature 1
diff --git a/SocialFeaturesMelangeGSoC2010.wiki b/SocialFeaturesMelangeGSoC2010.wiki index e868939..e122871 100644 --- a/SocialFeaturesMelangeGSoC2010.wiki +++ b/SocialFeaturesMelangeGSoC2010.wiki
@@ -13,7 +13,9 @@ == Main Feature 1: Tabbed User Pages == ===Overview=== -User Page feature will be used by each user to share information about themselves with the rest of the GSoC community. The UI of this feature is designed with tabs, hence users will remain on a single page while navigating between multiple tabs. The details of this feature's design and implementation are as follows. +User Page feature will be used by each user to share information about +themselves with the rest of the GSoC community. The UI of this feature is designed with tabs, +hence users will remain on a single page while navigating between multiple tabs. The details of this feature's design and implementation are as follows. The tabs of the user page will be as follows: * Profile @@ -32,17 +34,18 @@ # There are two possibilities from here: # If users click the link, they are redirected to the profile tab of their user page, where they see their partially filled profile based on current user information provided at sign up (i.e. name, current/past user roles). # If they do not click on the email link, whenever they next log into Melange, they will see ‘User Page’ on their sidebar under the ‘User’ tab. Clicking on this will take them to the profile tab of their user page. - # They may further update the data on their profile tab by clicking on the ‘Edit Profile’ button or navigate to the Project tab or My Stuff tab to update the respective data. + # They may further update the data on their profile tab, or the other two (Project, MyStuff) tabs by clicking on the ‘Edit User Page’ button to be redirected to a form where they can edit/add data for all the three tabs. + # The *Profile tab* will display a subset of the properties from the user_page data model. Profile related information such as contact, personal profile details, education and job information will be shown here. + # In the *Project tab*, students can fill in details of the project they are working on, while mentors can provide details about the project they are mentoring for. Organization Admins can use this page to provide information about all their student projects. Program Admins can use this page to provide general information about the GSoC/GHOP program itself. + # In the *My Stuff tab*, users can click on “Add Blog Feed”, to insert their blog url to display updates from their personal blogs using Melange’s RSS widget. For organization and program admins, there is provision to display two blog feeds. This is to display their own personal blog feed as well their organization/program blog feeds. + # Once changes are saved, users may return anytime during the course of the program to change and save the information on their user pages. ----- -Comment (Madhu): I think there should be only one edit page where they can edit all the three tabs. +*Suggestion Incorporated* Comment (Madhu): I think there should be only one edit page where they can edit all the three tabs. +----- ----- - # In the Project tab, similar to the Profile Tab, default project data is filled in such as organization name, project name etc. Users can fill in more details by clicking on the ‘Edit Project’ button. Here, students can fill in details of the project they are working on, while mentors can provide details about the project they are mentoring for. Organization Admins can use this page to provide information about all their student projects. Program Admins can use this page to provide general information about the program details itself. - # In the My Stuff tab, users can click on “Add Blog Feed”, to insert their blog url to display updates from their blogs using Melange’s RSS widget. (To be confirmed: Can users add more than one feed? Eg. An Org Admin might want to add the org’s blog feed as well as their personal blog feed.) +*Suggestion Incorporated* Comment (Madhu): Nope, that makes the interface too complicated and messy. Or if you would like, don't make it generic, but give Admins options for 2 RSS widgets. Thats the max, not more than that for sure. ----- -Comment (Madhu): Nope, that makes the interface too complicated and messy. Or if you would like, don't make it generic, but give Admins options for 2 RSS widgets. Thats the max, not more than that for sure. ------ - # Once changes are saved, users may return anytime during the course of the program to change and save the information in their user pages. - + ===Data Models=== *UserPage* @@ -51,8 +54,8 @@ The Data Models * user_page.py - * education.py - * job.py + * education.py (not finalized) + * job.py (not finalized) * project_details.py * project_update.py (Nice to have, if time permits) * project_comment.py (Nice to have, if time permits) @@ -73,11 +76,9 @@ * education – *ListProperty* * job – *ListProperty* * last_modified - *DateTimeProperty* - * student - *ReferenceProperty* - * organization - *ReferenceProperty* - * mentor – *ReferenceProperty* * project_details – *ListProperty* * feed_url - *LinkProperty* + * user_page_status - *StringProperty* Properties of education.py @@ -96,6 +97,9 @@ Properties for project_details.py * user - *ReferenceProperty* + * student - *ReferenceProperty* + * organization - *ReferenceProperty* + * mentor – *ReferenceProperty* * project_title - *StringProperty* * languages – *StringProperty* * apis_frameworks – *IntegerProperty* @@ -120,36 +124,35 @@ * comment_user – *ReferenceProperty* The User page feature should be in one of the following states implied by the user_page_status property of the model. - * Visible - This state occurs after the user is accepted into the program. Only the minimal information about the user already entered during registration is shown here. In this state, the user may edit or add to his user page at any time during the program. + * Visible - This state occurs after the user is accepted into the program. Only the minimal information about the user already entered during registration period is shown on the user page. In this state, the user may edit or add to his user page at any time during the program. * Invisible - This state of the user page can be activated by the user if the user wishes to prevent other users from viewing their profile. (Should this be allowed?) * Invalid - The user account has been terminated. ----- -Comment (Madhu): Status is good, but I don't think Uninitialized, Initialized and Updated is a good idea. Instead we can just have three states like, visible, invisible and invalid. +*Suggestion Incorporated* Comment (Madhu): Status is good, but I don't think Uninitialized, Initialized and Updated is a good idea. Instead we can just have three states like, visible, invisible and invalid. ----- -*Profile Tab* -The profile tab will display a subset of the properties from the user_page data model. Profile related information such as contact, personal profile details, education and job information will be shown here. - -*Project Tab* - -Similar to the profile tab, the project tab will contain the project related information such as details of past and current GSoC projects. - -Additional Note: Organization and program admins, will have more than one project and multiple students and mentors associated with them. Hence, the model needs to undergo some changes to accommodate them or to develop separate user_admin_project.py models for users with admin roles. - -*My Stuff Tab* - -This tab will currently only be used to display the blog feeds, if any for a user. If no valid url is entered in the feed_url property of the user_page model, this tab will be left blank. - -*Edit User Page* - -The option to edit the data on the user page is also available to users. They may choose to edit the data anytime during the course of the program from their User Page in the application. ----- -Comment (Madhu): Oh! I am extremely sorry for not making this clear earlier, when you started writing it out, but anyways better late than never. You need not create so many Python files and data models. From what I can see all the files and data models you have specified above can be merged into one single file with one single data model. So many reference properties is not good. Also, even if we keep all the data you have specified in a single data model we can write views in such a way that it shows only what data needs to be shown to a specific user and tabbing etc etc can all be controlled by views and templates. So we might not want so many data models. We will have to redesign this together. +*Suggestion Incorporated* Comment (Madhu): Oh! I am extremely sorry for not making this clear earlier, when you started writing it out, but anyways better late than never. You need not create so many Python files and data models. From what I can see all the files and data models you have specified above can be merged into one single file with one single data model. So many reference properties is not good. Also, even if we keep all the data you have specified in a single data model we can write views in such a way that it shows only what data needs to be shown to a specific user and tabbing etc etc can all be controlled by views and templates. So we might not want so many data models. We will have to redesign this together. ----- +===Views, Templates & Logic=== +*Views* + +*_soc.modules.social.views.models.user_page.py_* : Since the user_page feature serves more or less the same purpose for all the different user roles in Melange, a single view will be created. + +*Templates* + + * *_soc.templates.modules.social.user_page.view_user_page.html_* : Since the user pages will be tabbed, the entire page will not reload when users switch between tabs. With the help of JavaScript, this can be achieved with a single template with different html div and id tags defining the data to be displayed in different tabs :). + + * *_soc.templates.modules.social.user_page.edit_user_page.html_* : A different template with the html form will be created for the 'Edit User Page' function which will be used to update the user_page.py data model. + +*Logic* + +*_soc.modules.social.logic.models.user_page.py_* : To handle the edit/update of the user data a logic is created which will be used to update the user_page.py data model. + == Main Feature 2: Maps + Calendars for GSoC == @@ -157,13 +160,20 @@ == Use-Case Diagrams == -*User Page Feature* +===User Page Feature=== -http://www.comp.nus.edu.sg/~savitha/gsoc/user_page_usecase.png +http://www.comp.nus.edu.sg/~savitha/gsoc/user_page_usecase4.png -*Maps + Calendar* +===Maps + Calendar Feature=== -http://www.comp.nus.edu.sg/~savitha/gsoc/social1_usercase.png +*Maps* + +http://www.comp.nus.edu.sg/~savitha/gsoc/maps_usecase.png + + +*Calendars* + +http://www.comp.nus.edu.sg/~savitha/gsoc/calendars_usecase.png = Specification & Requirements = The detailed project specification will be added and updated here.